文章

神经网络

神经网络

神经网络

神经网络(Neural Networks

激活函数

Desktop View 生理学上的神经元和激活函数的类比(来自cs231n)

类比时要小心,实际上生理学上的神经元要比我们刚才描述的要复杂的多,有很多种类,它们的树突会表现出异常复杂的非线性,而我们的突触,我们之前同W0进行类比的,并非像我们所描述的那样只有简单的权重,它们实际上非常复杂,是一个动态的非线性系统。另外,我们将激活函数作为为神经元的激活机制的类比也一样。

Desktop View 类比注意事项(来自cs231n)

到现在,已经讨论了多种不同激发函数,它们是怎么使用的,后续进行更加详细的讨论,针对需要讨论如何选择激活函数。

Desktop View 激活函数(来自cs231n)

全连接前馈神经网络

同时,也会讨论神经元的不同架构形式,已经举例了这些全连接的神经网络,每一层都是矩阵相乘计算,之前我们讲的是两层神经元网络,具体来讲,我们有两个线性层,针对每个线性层我们做了一次矩阵乘法,我们称之为两个全连接层,也会成为单隐藏层神经网络。我们不是去计算,我们做了多少次矩阵乘法,而是去数有多少隐藏层。你也可以用另一种叫法,我想两层神经网络这个叫法用的更多一些,右边这个叫做三层神经网络。

Desktop View 简易全连接神经网络(来自cs231n)

当我们做正向计算时,正向地通过神经网络,神经网络中的节点主要进行神经元各种运算。实际情况是这样的,你可以认为每一个隐藏层是一个向量,一组神经元的集合,像这样将它们引出来,利用矩阵乘法来计算神经元的值,针对整个神经元层,我们可以这样高效率地进行计算,所以通过一次矩阵乘法我们得出了该层所有神经元输出结果,比方说一层有10个神经元、50个,或者100个。

Desktop View 神经元 Demo Code(来自cs231n)

把它们全写出来,所有按照矩阵或者向量的形式,针对非线性f函数是我们要用的,在这里我们用sigmoid函数。我们可以把输入数据x作为一个向量,这样我们就可以进行第一次矩阵乘法,W1在前一步,之后用f进行一步非线性计算,接着可以进行第二次矩阵乘法,可以得到第二个隐藏层h2,最后我们可以得到输出值,如果能大致做到这些,就可以去写神经网络了。

Desktop View 前馈神经网络结构,及实现Demo(来自cs231n)

以上便是神经网络的基本应用过程。

练习:自己写个代码,训练神经网络

总结

针对全连接,或者说线性层,我们刚才讨论了如何将神经元组织起来进行运算,神经元层的抽象有一个好处,就是我们可以采用非常高效的向量化代码去进行所有的运算。

关于卷积神经网络,请听下回分解。

本文由作者按照 CC BY 4.0 进行授权

© ManShouyuan. 保留部分权利。

本站总访问量 本站访客数人次

🚩🚩🚩🚩🚩🚩