一般神经网络教程都会用大脑神经网络作类比,但实际上两个根本是不一样的东西,乱用类比学习是一件很危险的事情,知道神经网络是个数学模型就可以了。
一个简单的神经网络如下图所示,每一个圆圈表示一个神经元,每个神经元接收上一层神经元的输出作为其输入,同时其输出信号到下一层,其中每一层的第一个神经元称为bias unit,它是额外加入的其值为1,通常用+1表示,下图用虚线画出。
X为输入层,theta为权重,a为隐藏层。
向前传播(Forward Propagration,FP):
后一层的神经元的值根据前一层神经元的值的改变而改变,以上图为例,第二层的神经元的更新方式为
g(z)为sidmoid函数
用矩阵表示上面的式子:
第一层的值,计算第二层的值;由第二层的值,计算第三层的值,得到预测的输出,计算的方式一层一层往前走的,这也是前向传播的名称由来。
如果把隐藏层去掉,那么神经网络就是一个Logistic 回归:
第一个例子,神经网络处理'并','或','非':
下图要把交叉和圆圈分类,看神经网络怎么处理非线性问题
令四个坐标(0,0),(1,0),(0,1),(1,1),其中交叉是(0,0),(1,1)
1,实现且操作:
2,实现或:
3,非:
4,(非X1)且(非X2):
把上面组合起来:
AND操作(用红色表示)、NAND操作(用青色表示)和OR操作(用橙色表示),从真值表可以看出,该神经网络成功地将(0, 0)(1,1)分为一类,(1,0)(0,1)分为一类,很好解决了线性不可分的问题。
没有正则项的神经网络costFunction公式:
(和逻辑回归差不多)
正则化的costFunction: