#Week7 Neural Networks : Learning

一、Cost Function and Backpropagation

神经网络的损失函数:
\[J(\Theta) = - \frac{1}{m} \sum_{i=1}^m \sum_{k=1}^K \left[y^{(i)}_k \log ((h_\Theta (x^{(i)}))_k) + (1 - y^{(i)}_k)\log (1 - (h_\Theta(x^{(i)}))_k)\right] + \frac{\lambda}{2m}\sum_{l=1}^{L-1} \sum_{i=1}^{s_l} \sum_{j=1}^{s_{l+1}} ( \Theta_{j,i}^{(l)})^2\]

这个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(很慢)来检验:
根据偏导数定义:
\[\dfrac{\partial}{\partial\Theta_j}J(\Theta) \approx \dfrac{J(\Theta_1, \dots, \Theta_j + \epsilon, \dots, \Theta_n) - J(\Theta_1, \dots, \Theta_j - \epsilon, \dots, \Theta_n)}{2\epsilon}\]
\[一般\epsilon=10^{-4}\]
通过将这种方式计算的偏导数与之前Backpropagation求得的偏导数比较,即可得知Backpropagation的正确性。

之前在Linear Regression和Logistic Regression,我们可以用全0来初始化\(\theta\),但在神经网络中,这样做会有问题,所以采用随机初始化

最后,从整体捋一遍流程:
1、选择网络结构:

2、训练神经网络:

对每一个训练样本:

原文地址:https://www.cnblogs.com/EIMadrigal/p/12130910.html

时间: 2024-10-19 17:52:46

#Week7 Neural Networks : Learning的相关文章

Machine Learning - IX. Neural Networks Learning (Week 5)

http://blog.csdn.net/pipisorry/article/details/44119187 机器学习Machine Learning - Andrew NG courses学习笔记 Neural Networks Learning 神经网络学习 Neural Networks are one of the most powerful learning algorithms that we have today. Cost Function代价函数 Note: 对于multi-

Machine Learning - Neural Networks Learning: Cost Function and Backpropagation

This series of articles are the study notes of " Machine Learning ", by Prof. Andrew Ng., Stanford University. This article is the notes of week 5, Neural Networks Learning. This article contains some topic about Cost Function and Backpropagatio

Machine Learning - Neural Networks Learning: Backpropagation in Practice

This series of articles are the study notes of " Machine Learning ", by Prof. Andrew Ng., Stanford University. This article is the notes of week 5, Neural Networks Learning. This article contains some topic about how to apply Backpropagation alg

Stanford机器学习---第五讲. 神经网络的学习 Neural Networks learning

原文见http://blog.csdn.net/abcjennifer/article/details/7758797,加入了一些自己的理解 本栏目(Machine learning)包含单參数的线性回归.多參数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学习系统设计.SVM(Support Vector Machines 支持向量机).聚类.降维.异常检測.大规模机器学习等章节.全部内容均来自Standford

Coursera 机器学习 第5章 Neural Networks: Learning 学习笔记

5.1节 Cost Function神经网络的代价函数. 上图回顾神经网络中的一些概念: L  神经网络的总层数. sl  第l层的单元数量(不包括偏差单元). 2类分类问题:二元分类和多元分类. 上图展现的是神经网络的损失函数,注意这是正则化的形式. 正则化部分,i.j不为0.当然i.j可以为0,此时的损失函数不会有太大的差异,只是当i.j不为0的形式更为常见. 5.2节 Backpropagation Algorithm最小化损失函数的算法——反向传播算法:找到合适的参数是J(θ)最小. 如

斯坦福大学公开课机器学习: neural networks learning - autonomous driving example(通过神经网络实现自动驾驶实例)

使用神经网络来实现自动驾驶,也就是说使汽车通过学习来自己驾驶. 下图是通过神经网络学习实现自动驾驶的图例讲解: 左下角是汽车所看到的前方的路况图像.左上图,可以看到一条水平的菜单栏(数字4所指示方向),白亮的区段显示的就是人类驾驶者选择的方向.而最右端则对应向右急转的操作(箭头3),中心稍微向左一点的位置(箭头2),则表示在这一点上人类驾驶者的操作是慢慢的向左拐.这幅图的第二部分(箭头5)对应的就是学习算法选出的行驶方向,类似的白亮的区段(箭头6)显示的就是神经网络在这里选择的行驶方向是稍微的左

Neural Networks Learning----- Stanford Machine Learning(by Andrew NG)Course Notes

本栏目内容来自Andrew NG老师的公开课:https://class.coursera.org/ml/class/index 一般而言, 人工神经网络与经典计算方法相比并非优越, 只有当常规方法解决不了或效果不佳时人工神经网络方法才能显示出其优越性.尤其对问题的机理不甚了解或不能用数学模型表示的系统,如故障诊断.特征提取和预测等问题,人工神经网络往往是最有利的工具.另一方面, 人工神经网络对处理大量原始数据而不能用规则或公式描述的问题, 表现出极大的灵活性和自适应性. 神经网络模型解决问题的

On Explainability of Deep Neural Networks

On Explainability of Deep Neural Networks « Learning F# Functional Data Structures and Algorithms is Out! On Explainability of Deep Neural Networks During a discussion yesterday with software architect extraordinaire David Lazar regarding how everyth

Neural Networks and Deep Learning学习笔记ch1 - 神经网络

近期開始看一些深度学习的资料.想学习一下深度学习的基础知识.找到了一个比較好的tutorial,Neural Networks and Deep Learning,认真看完了之后觉得收获还是非常多的.从最主要的感知机開始讲起.到后来使用logistic函数作为激活函数的sigmoid neuron,和非常多其它如今深度学习中常使用的trick. 把深度学习的一个发展过程讲得非常清楚,并且还有非常多源代码和实验帮助理解.看完了整个tutorial后打算再又一次梳理一遍,来写点总结.以后再看其它资料