从page 62 继续往下:
3.4.3 代码实现小结:
昨天其实用代码做了一次实现,这里书中单独编写了一个初始化函数(init_network()),另外增加了一个前向逻辑函数forward(network,x)。
其中init_network()函数会进行权重和偏置的初始化,并将它们保存在字典变量network中,这个字典变量network中保存了每一层所需的参数(权重和偏置)。
forward()函数中则封装了将输入信号转换为输出信号的处理过程,(通过做矩阵的乘积来获取结果)。这个函数实现还是比较简单的,这里就不在环境里演示了,截图:
这里看结果print(y) ,和昨天在电脑上运行的结果是一致的。
3.5 输出层设计
神经网络可以用在分类问题和回归问题上,不过需要根据情况改变输出层的激活函数。一般而言,回归问题用恒等函数,分类问题用softmax函数。
机器学习的问题大致可以分为分类问题和回归问题,分类问题是数据属于哪一个类别的问题。比如,区分图像中的人是男性还是女性的问题就是分类问题。而回归问题是根据某个输入预测一个(连续的数值的问题)。比如,根据一个人的图像预测这个人的体重的问题就是回归问题。
3.5.1 恒等函数和softmax函数
恒等函数会将输入按原样输出,对于输入的信息,不加以任何改动地直接输出。因此,在输出层使用恒等函数时,输入信号会原封不动地被输出。
恒等函数
分类问题中使用的softmax函数可以用下面的式表示:
式3.2
其中exp(x) 是表示
的指数函数,如上图所示,softmax函数分子是输入信号的指数函数,分母是所有输入信号的指数函数的和。用图表示softmax函数的话,如下图所示:
softmax函数的输出通过箭头与所有输入信号相连,这是因为从 式3.2可以看出,输出层的各个神经元都受到所有输入信号的影响。
softmax函数
书中给了例子,怎么样使用softmax 函数:
用Python 函数定义:
3.5.2 实现softmax函数时的注意事项
softmax() 函数在计算机的运算上有一定的缺陷,就是溢出问题,softmax 函数因为要做指数级别的运算,很容易数值变得很大。比如e(1000)的的结果会返回一个表示无穷大的inf.如果在这些超大值之间进行除法运算,结果会出现“不确定”的情况。
softmax() 函数用下面的实现可以做改进:
可以看到,在分子和分母都做乘上常数C,带入进去,最后可以推导出,进行指数运算时,对队列中所有的数值 加上或者减去某个常数并不会改变运算的结果。
下面一个案例,在softmax 做计算时,可以通过减掉里面最大数值的方式(np.max()),避免溢出的问题。
通过减去输入信号中的最大值,发现原本像nan(not a number , 不确定)的地方,现在被正确计算了。我们可以像下面这样实现softmax函数计算:
3.5.3 softmax 函数的特征
使用softmax()函数,可以按如下方式计算神经网络的输出:
因为softmax函数的输出是0.0 到 1.0 之间的实数。并且softmax函数的输出值的总和是1.输出总和为1是softmax函数的一个重要性质。正因为有了这个性质,我们才可以把softmax函数的输出解释为“概率”。
上图的例子,可以解释成y[0]的概率为0.018(1.8%),y[1]的概率是0.245(24.5%),y[2]的概率是0.737(73.7%)。从概率的结果来看,可以说“因为第2个元素的概率最高,所以答案是第2个类别”。也可以回答:“有74%的概率是第2个类别,有25%的概率是第1个实例,有1%的概率是0个类别”。
这里需要注意,因为y=exp(x)是单调递增函数,实际上例中a的各个元素的大小关系和y的各个元素的大小关系并没有改变。比如,a的最大值是第2个元素,y的最大值也仍是第2个元素。正因为这个原因,神经网络只把输出值最大的神经元所对应的类别作为识别结果,并且,即使使用softmax函数,输出值最大的神经元的位置也不会变。因此神经网络在进行分类时,输出层的softmax函数可以省略。
求解机器学习的步骤可以分为“学习”和“推理”两个阶段。首先,在学习阶段进行模型的学习,然后,在推理阶段,用学到的模型对未知的数据进行推理(分类)。
3.5.4 输出层的神经元数量
输出层的神经元数量需要根据待解决的问题来决定。对于分类问题,输出层的神经元数量一般设定为类别的数量。比如,对于某个输入图像,预测是图中的数字0 到 9 中的哪一个的问题(10类别分类问题),可以像下图一样将输出层的神经元设定为10个。
如下图所示,输出层的神经元从上往下依次对应数字0,1,...9. 图中输出层的神经元用不同的灰度表示。这个例子中,神经元y2颜色最深,输出的值最大。表明这个神经网络预测的是y2对应的类别,也就是“2”。
输出层的神经元对应各个数字
写到69页,明天继续。
留言与评论(共有 0 条评论) “” |