神经网络
感知机和神经网络
①阶跃函数是指一旦输入超过阈值,就切换输出的函数。
激活函数
激活函数的作用在于决定如何来激活输入信号的总和。
阶跃函数的实现和显示
下面的这个更简单,直接一行代码:np.array(x>0, dtype=np.int)
sigmoid函数的实现与显示
阶跃函数和sigmoid函数的比较
两者都是非线性函数
神经网络的激活函数必须使用非线性函数
ReLU函数
输出层的设计
输出层激活函数的选择
回归问题和分类问题
softmax 函数
多个分类:
溢出问题:数值过大,超过计算机可以表示的范围。如公式中,加入 =1000,那就过大,计算机无法表示。
nan:not a number 即无法表示
溢出问题的解决方法:改进后的softmax计算公式
从改进公式不难看出:让加上一个常数计算结果不变。这里的可以是任何值,但是为了防止溢出,一般会使用输入信号的中的最大值。
softmax函数分类的含义:
softmax的输出是0.0 - 1.0 之间的实数,并且所有的输出值总和为1
假如有n个类别需要区分,例如这个图像是n个种类中的哪一种。数学解释是:这个网络有n个输出,n个输出的和为1,也就是每一个输出对应一个概率。例如我门期望这个图片是第五类,那么对应的我们就期望输出的n个节点的第5个节点的概率最大。就是这个意思。
softmax需要注意的问题:
从公式中不难看出,即便使用了softmax函数,各个元素之间的大小关系并未改变,即在a中最大的是a[2],对应的在y中最大的也是y[2],而且,一般而言神经网络只把输出值最大的神经元所对应的类别作为识别结果,不去关注其他的输出结果。那么我们为什么还要经过softmax这一步呢?因为神经网络有两个步骤:学习和推理。在学习阶段,我们必须使用softmax进行反向误差传播来调整参数。推理阶段因为我们的模型已经学习好了,最后只要输出的最大值对应的那个类别就好了,所以一般省略掉了softmax,因为这个计算也耗费计算机资源。
输出层神经元数量
对于分类问题,输出层的神经元数量一般设定为类别的数量。