#Week7 Neural Networks : Learning
一、Cost Function and Backpropagation
神经网络的损失函数:
\]
这个cost function是在logistic regression基础上演变而来,只是神经网络有很多输出结点,而logistic regression只有一个输出结点,所以这个cost function只是把所有的K个输出结点的损失函数进行累加。
得到cost function后,为了寻找使得\(J(\theta)\)最小的那组参数\(\theta\),我们需要知道\(J(\theta)\)关于每个\(\theta\)的偏导数,而后向传播算法可以帮助我们计算偏导数:
对于每个训练样本,先利用forward propagation计算每一层的\(a\):
接着利用样本真实标签\(y^{(t)}\)计算最后一层的误差值;
之后从右向左计算每一层(输入层除外)的误差:
这样每个样本一次正向、一次反向来更新误差矩阵:
向量化表示:
最后,就可以得到偏导数:
二、Backpropagation in Pratice
为了使用fminunc
等高级的优化方法来求得cost function的最小值,所以将\(\theta\)这个矩阵展成向量传入fminunc
,完成后可以通过reshape
从向量中提取\(\theta^{(1)}、\theta^{(2)}\)等:
为了确保我们使用Backpropagation求得的偏导数的正确性,可以使用Gradient Checking(很慢)来检验:
根据偏导数定义:
\]
\]
通过将这种方式计算的偏导数与之前Backpropagation求得的偏导数比较,即可得知Backpropagation的正确性。
之前在Linear Regression和Logistic Regression,我们可以用全0来初始化\(\theta\),但在神经网络中,这样做会有问题,所以采用随机初始化:
最后,从整体捋一遍流程:
1、选择网络结构:
2、训练神经网络:
对每一个训练样本:
最新文章
- 推荐设计网站 站酷(ZCOOL)设计师互动平台
- iOS之UIScrollView循环滚动
- EXT 环境部署
- 十二 .ocBlock
- log4j 缓存
- JavaScript之简易计算器
- UI5_UIAlertView与UIActionSheet
- hql注意事项一
- Oracle442个应用场景------------基础应用场景
- Html加载swf 兼容IE8 (含以下)显示
- 查看错误日志发现有两个警告(ignored in --skip-name-resolve mode)
- iOS手机截屏使用
- 2.5 elif
- 创建ajax的步骤
- union 和struct大小计算
- SHELL脚本学习-练习写一个脚本3
- java写桌面程序
- Linux 查看磁盘或文件夹及文件大小
- 吴裕雄 29-MySQL 处理重复数据
- 启动Tomcat报错:class path resource cannot be opened