神经网络公式推导

神经网络的预测结果(hypothesis函数)的计算和CostFunction的计算

预测结果的计算其实与普通的逻辑回归计算没有多大区别。只是有时候需要将某几个逻辑回归的输出作为其他逻辑回归模型的输入罢了,比如上例的输出结果为:

技术分享

那么CostFunction的计算又和逻辑回归的CostFunction计算有什么区别呢?

逻辑回归的CostFunction如下:

技术分享

上述式子的本质是将预测结果和实际标注的误差用某一种函数估算,但是我们的神经网络模型有时候输出不止一个,所以,神经网络的误差估算需要将输出层所有的CostFunction相加:

技术分享

k:代表第几个输出。

补充:神经网络可以解决几分类问题?

理论上,当输出单元只有一个时,可以解决2分类问题,当输出单元为2时可以解决4分类问题,以此类推...

实质上,我们三个输出单元时,可以解决三分类问题([1,0,0],[0,1,0],[0,0,1]),为什么如此设计?暂时留白,以后解决

ps:面试题:一个output机器,15%可能输出1,85%输出0,构造一个新的机器,使0,1输出可能性相同? 答:让output两次输出01代表0,10代表1,其余丢弃

4.神经网络的训练

这儿也同于logistic回归,所谓的训练也就是调整w的权值,让我们再一次把神经网络的CostFunction写出来!

技术分享

W代表所有层的特征权值,Wij(l)代表第l层的第i个元素与第j个特征的特征权值

m代表样本个数,k代表输出单元个数

hw(x(i))k代表第i个样本在输出层的第k个样本的输出 y(i)k代表第i个样本的第k个输出

技术分享

然后同于logistic回归,将所有的W更新即可。难处在于此处的偏导数怎么求?首先得说说链式求导法则:

技术分享

所以我们可以有:

技术分享

接下来的问题就是有theta了,当我们要求的错误变化率是最后一层(最后一层既是输出层的前一层)且只看一个输出神经元时则:

技术分享

技术分享

多个相加即可

那么中间层次的神经元变化率如何求得呢?我们需要研究l层和了+1层之间的关系,如下图:

技术分享

第l层的第i个Z与第l层的第i个a的关系就是取了一个sigmod函数,然而第l层的第i个a与和其对应的w相乘后在加上其他的节点与其权值的乘积构成了第l+1层的Z,好拗口,好难理解啊,看下式:


技术分享

大体也就是这么个情况,具体的步骤为:

1.利用前向传播算法,计算出每个神经元的输出

2.对于输出层的每一个输出,计算出其所对应的误差

3.计算出每个神经元的错误变化率即:技术分享

4.计算CostFunction的微分,即:技术分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值