[AI]神经网络章3 损失函数】的更多相关文章

损失函数 作用 在有监督的学习中,需要衡量神经网络输出和所预期的输出之间的差异大小.这种误差函数需要能够反映出当前网络输出和实际结果之间一种量化之后的不一致程度,也就是说函数值越大,反映出模型预测的结果越不准确. 还是拿练枪的Bob做例子,Bob预期的目标是全部命中靶子的中心,但他现在的命中情况是这个样子的: 最外圈是1分,之后越向靶子中心分数是2,3,4分,正中靶心可以得5分. 那Bob每次射击结果和目标之间的差距是多少呢?在这个例子里面,用得分来衡量的话,就是说Bob得到的反馈结果从差4分,…
反向传播和梯度下降这两个词,第一眼看上去似懂非懂,不明觉厉.这两个概念是整个神经网络中的重要组成部分,是和误差函数/损失函数的概念分不开的. 神经网络训练的最基本的思想就是:先“蒙”一个结果,我们叫预测结果a,看看这个预测结果和事先标记好的训练集中的真实结果y之间的差距,然后调整策略,再试一次,这一次就不是“蒙”了,而是有依据地向正确的方向靠近.如此反复多次,一直到预测结果和真实结果之间相差无几,亦即|a-y|->0,就结束训练. 在神经网络训练中,我们把“蒙”叫做初始化,可以随机,也可以根据以…
神经元细胞的数学计算模型 神经网络由基本的神经元组成,下图就是一个神经元的数学/计算模型,便于我们用程序来实现. 输入 (x1,x2,x3) 是外界输入信号,一般是一个训练数据样本的多个属性,比如,我们要识别手写数字0~9,那么在手写图片样本中,x1可能代表了笔画是直的还是有弯曲,x2可能代表笔画所占面积的宽度,x3可能代表笔画上下两部分的复杂度. (W1,W2,W3) 是每个输入信号的权重值,以上面的 (x1,x2,x3) 的例子来说,x1的权重可能是0.5,x2的权重可能是0.2,x3的权重…
深度学习 (DeepLearning) 基础 [2]---神经网络常用的损失函数 Introduce 在上一篇"深度学习 (DeepLearning) 基础 [1]---监督学习和无监督学习"中我们介绍了监督学习和无监督学习相关概念.本文主要介绍神经网络常用的损失函数. 以下均为个人学习笔记,若有错误望指出. 神经网络常用的损失函数 pytorch损失函数封装在torch.nn中. 损失函数反映了模型预测输出与真实值的区别,模型训练的过程即让损失函数不断减小,最终得到可以拟合预测训练样…
我是一个AI神经元 我是一个AI神经元,刚刚来到这个世界上,一切对我来说都特别新奇. 之所以叫这个名字,是因为我的工作有点像人类身体中的神经元. 人体中的神经元可以传递生物信号,给它输入一个信号,它经过处理后再输出一个信号传递给别的神经元,最终传递到大脑完成对一个信号的决策和处理. 聪明的计算机科学家们受到启发,在代码程序里发明了我:神经元函数. 在我们的世界里,我只是普普通通的一员,像我这样的神经元有成百上千,甚至上万个,我们按照层的形式,组成了一个庞大的神经网络. 很快我和隔壁工位的大白开始…
1. 计算深度神经网络的时候,尽量向量化数据,不要用for循环.唯一用for循环的地方是依次在每一层做计算. 2. 最常用的检查代码是否有错的方法是检查算法中矩阵的维度. 正向传播: 对于单个样本,第i层网络 z[i] = W[i]a[i-1] + b[i], a[i] = f[i](z[i]). 其中,z[i]是n[i]*1,W[i]是n[i]*n[i-1],a[i-1]是n[i-1]*1,b[i]是n[i]*1. 对于向量化后的所有样本,第i层网络 Z[i] = W[i]A[i-1] + b…
尽管我们有很多经验丰富的软件开发人员,但是利用hard code的方法,要解决一些问题,我们的程序员还是优点捉襟见肘,这些问题包括,识别手写数字照片上的数字:分辨一张彩色照片上是否有一只猫咪:准确理解老婆说的“男人说话要是算数,母猪也会上树”这句话的真实含义,等等.这些我们人类处理起来得心应手的问题,计算机程序处理起来却显得很笨拙. 当然,有问题就要去寻找解决方案.其实在很早的时候,我们的计算机科学家前辈们就开始做了这方面的研究,提出的理论和算法有SVM,神经网络等.但是在那个GPU还没有发明,…
深度学习:两个重要特性:多层和非线性 线性模型:任意线性模型的组合都是线性模型,只通过线性变换任意层的全连接神经网络与单层神经网络没有区别. 激活函数:能够实现去线性化(神经元的输出通过一个非线性函数). 多层神经网络:能够解决异或问题,深度学习有组合特征提取的功能. 使用激活函数和偏置项的前向传播算法 import tensorflow as tf a = tf.nn.relu(tf.matmul(x,w1) + biases1) y = tf.nn.relu(tf.matmul(a,w2)…
1. 计算深度神经网络的时候,尽量向量化数据,不要用for循环.唯一用for循环的地方是依次在每一层做计算. 2. 最常用的检查代码是否有错的方法是检查算法中矩阵的维度. 正向传播: 对于单个样本,第i层网络 z[i] = W[i]a[i-1] + b[i], a[i] = f[i](z[i]). 其中,z[i]是n[i]*1,W[i]是n[i]*n[i-1],a[i-1]是n[i-1]*1,b[i]是n[i]*1. 对于向量化后的所有样本,第i层网络 Z[i] = W[i]A[i-1] + b…
1. 第i层网络 Z[i] = W[i]A[i-1] + B[i],A[i] = f[i](Z[i]). 其中, W[i]形状是n[i]*n[i-1],n[i]是第i层神经元的数量: A[i-1]是第i-1层的神经元,形状是n[i-1]*p,p是样本数量: B[i]形状是n[i]*p,B[i]的每一列都是一样的,所以其实有效的参数只是n[i]个,python里直接用n[i]*1的b[i]然后boradcasting成n[i]*p方便做加法. A[0]对应输入层,n[0]是单个输入样本的特征数量.…