神经网络算法

例:

 从左到右为输入层(1)、隐藏层(2)、输出层(3),(在整个神经网络中我们还会用到偏置值bias),其中隐藏层可以有多个

算法原理

其中上标为层数,下标为该层中的某一个神经元,我们

将公式中的\theta ^{(1)}{_{10}}x_0+\theta ^{(1)}{_{11}}x_1+\theta ^{(1)}{_{12}}x_2+\theta ^{(1)}{_{13}}x_3z^{(2)}{_1}替代;

将公式中的\theta ^{(1)}{_{20}}x_0+\theta ^{(1)}{_{21}}x_1+\theta ^{(1)}{_{22}}x_2+\theta ^{(1)}{_{23}}x_3z^{(2)}{_2}替代;

将公式中的\theta ^{(1)}{_{30}}x_0+\theta ^{(1)}{_{31}}x_1+\theta ^{(1)}{_{32}}x_2+\theta ^{(1)}{_{33}}x_3z^{(2)}{_3}替代;

这样,我们就可以将计算进行向量化:

其中z是一个三维向量

其中考虑到偏置值后, ,加上偏置值,a成为了一个四维向量。其中g为激活函数,通过向量计算得到输出h

 简单的神经网络使用示例

x1与x2的逻辑运算

 可以通过多层隐藏层来做更为复杂的运算

代价函数

反向传播算法

基于代价函数,定义\delta ^{(i)}{_j}表示第i层第j个神经元的误差,

        对于输出层的神经元:\delta ^{(i)} = a^{(i)}-y

        而对于隐藏层的神经元:\delta^{(i)} = (\theta ^{(i)})^{\top }\delta^{(i+1)}\cdot \ast {g}'(z^{(i)})

此算法,将输出层的误差,依次往后传播,直到第二层\delta ^{(2)}(没有第一层\delta ^{(1)},因为第一层是输入层,是数据来源,没有误差),故名反向传播算法

然后:

  

最后计算出的结果D即为损失函数J的偏导数

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值