Andrew Ng机器学习课程笔记--week5(上)
Neural Networks: Learning
内容较多,故分成上下两篇文章。
一、内容概要
Cost Function and Backpropagation
- Cost Function
- Backpropagation Algorithm
- Backpropagation Intuition
Backpropagation in Practice
- Implementation Note:Unroll Parameters
- Gradient Checking
- Random Initialization
- Putting it Together
Application of Neural Networks
- Autonomous Driving
二、重点&难点
1.Cost Function and Backpropagation
1) Cost Function
首先定义一下后面会提到的变量
L: 神经网络总层数
Sl:l层单元个数(不包括bias unit)
k:输出层个数
回顾正则化逻辑回归中的损失函数:
\[J(\theta) = - \frac{1}{m} \sum_{i=1}^m [ y^{(i)}\ \log (h_\theta (x^{(i)})) + (1 - y^{(i)})\ \log (1 - h_\theta(x^{(i)}))] + \frac{\lambda}{2m}\sum_{j=1}^n \theta_j^2\]
在神经网络中损失函数略微复杂了些,但是也比较好理解,就是把所有层都算进去了。
\[
\begin{gather*} 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\end{gather*}
\]
2)BackPropagation反向传播
更详细的公式推导可以参考http://ufldl.stanford.edu--反向传导算法
下面给出我自己对BP算法的理解以及ufldl上的推导:
假设神经网络结构如下
- 1. FP
- 利用前向传导公式(FP)计算\(2,3……\) 直到 \({n_l}\)层(输出层)的激活值。
计算过程如下:
- 2. BP
- 权值更新
首先需要知道的是BP算法是干嘛的?它是用来让神经网络自动更新权重\(W\)的。
这里权重\(W\)与之前线性回归权值更新形式上是一样:
那现在要做的工作就是求出后面的偏导,在求之前进一步变形:
注意\(J(W,b;x^{(i)},y^{(i)})\)表示的是单个样例的代价函数,而\(J(W,b)\)表示的是整体的代价函数。
所以接下来的工作就是求出\(\frac{∂J(W,b;x,y)}{∂W_{ij^{(l)}}}\),求解这个需要用到微积分中的链式法则,即
\[
\begin{align*}
\frac{∂J(W,b;x,y)}{∂W_{ij^{(l)}}} = \frac{∂J(W,b;x,y)}{∂a_{i^{(l)}}} \frac{∂a_{i^{(l)}}}{∂z_{i^{(l)}}} \frac{∂z_{i^{(l)}}}{∂w_{ij^{(l)}}} = a_j^{(l)}δ_i^{(l+1)}
\end{align*}
\]
更加详细运算过程可以参考[一文弄懂神经网络中的反向传播法——BackPropagation],这篇文章详细的介绍了BP算法的每一步骤。
上面的公式中出现了\(δ\)(误差error),所以后续的目的就是求出每层每个node的\(δ\),具体过程如下:
- 计算δ
对于第 \(n_l\)层(输出层)的每个输出单元\(i\),我们根据以下公式计算残差:
对 \(l = n_l-1, n_l-2, ……,3,2\)的各个层,第 \(l\) 层的第 \(i\) 个节点的残差计算方法如下:
将上面的结果带入权值更新的表达式中便可顺利的执行BackPropagation啦~~~
但是!!!需要注意的是上面式子中反复出现的 \(f '(z_i^{(l)})\) ,表示激活函数的导数。这个在刚开始的确困惑到我了,因为视频里老师在演示计算\(δ\)的时候根本就乘以这一项,难道老师错了?其实不是的,解释如下:
常用的激活函数有好几种,但使用是分情况的:
- 在线性情况下:f(z) = z
- 在非线性情况下:(只举一些我知道的例子)
- sigmoid
- tanh
- relu
所以这就是为什么老师在视频中没有乘以 \(f '(z_i^{(l)})\) 的原因了,就是因为是线性的,求导后为1,直接省略了。
另外sigmoid函数表达式为\(f(z)=\frac{1}{1+e^{-z}}\),很容易知道\(f'(z)=\frac{-e^{-z}}{ (1+e^{-z}) ^2 } = f(z)·(1-f(z))\)这也就解释了Coursera网站上讲义的公式是这样的了:
所以现在总结一下BP算法步骤:
- 进行前馈传导计算,利用前向传导公式,得到\(L_2, L_3, \ldots\)直到输出层 \(\textstyle L_{n_l}\)的激活值。
- 对输出层(第 \(\textstyle n_l\)层),计算:
\(\delta^{(n_l)}= - (y - a^{(n_l)}) \bullet f'(z^{(n_l)})\)- 对于 \(\textstyle l = n_l-1, n_l-2, n_l-3, \ldots, 2\) 的各层,计算:
\(\delta^{(l)} = \left((W^{(l)})^T \delta^{(l+1)}\right) \bullet f'(z^{(l)})\)- 计算最终需要的偏导数值:
\[
\begin{align}
\nabla_{W^{(l)}} J(W,b;x,y) &= \delta^{(l+1)} (a^{(l)})^T, \\
\nabla_{b^{(l)}} J(W,b;x,y) &= \delta^{(l+1)}.
\end{align}
\]
使用批量梯度下降一次迭代过程:
- 对于所有\(\textstyle l\),令 \(\textstyle \Delta W^{(l)} := 0 , \textstyle \Delta b^{(l)} := 0\) (设置为全零矩阵或全零向量)
- 对于\(\textstyle i = 1\) 到\(\textstyle m\) ,
使用反向传播算法计算\(\textstyle \nabla_{W^{(l)}} J(W,b;x,y)\) 和\(\textstyle \nabla_{b^{(l)}} J(W,b;x,y)\) 。
计算\(\textstyle \Delta W^{(l)} := \Delta W^{(l)} + \nabla_{W^{(l)}} J(W,b;x,y)\) 。
计算\(\textstyle \Delta b^{(l)} := \Delta b^{(l)} + \nabla_{b^{(l)}} J(W,b;x,y)\) 。- 更新权重参数:
\[
\begin{align}
W^{(l)} &= W^{(l)} - \alpha \left[ \left(\frac{1}{m} \Delta W^{(l)} \right) + \lambda W^{(l)}\right] \\
b^{(l)} &= b^{(l)} - \alpha \left[\frac{1}{m} \Delta b^{(l)}\right]
\end{align}
\]
3) Backpropagation Intuition
本小节演示了具体如何操作BP,不再赘述。
具体可参考Coursera讲义。
Andrew Ng机器学习课程笔记--week5(上)的更多相关文章
- Andrew Ng机器学习课程笔记--week5(下)
Neural Networks: Learning 内容较多,故分成上下两篇文章. 一.内容概要 Cost Function and Backpropagation Cost Function Bac ...
- Andrew Ng机器学习课程笔记--week9(上)(异常检测&推荐系统)
本周内容较多,故分为上下两篇文章. 一.内容概要 1. Anomaly Detection Density Estimation Problem Motivation Gaussian Distrib ...
- Andrew Ng机器学习课程笔记--汇总
笔记总结,各章节主要内容已总结在标题之中 Andrew Ng机器学习课程笔记–week1(机器学习简介&线性回归模型) Andrew Ng机器学习课程笔记--week2(多元线性回归& ...
- Andrew Ng机器学习课程笔记(五)之应用机器学习的建议
Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...
- Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计
Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7392408.h ...
- Andrew Ng机器学习课程笔记(四)之神经网络
Andrew Ng机器学习课程笔记(四)之神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365730.html 前言 ...
- Andrew Ng机器学习课程笔记(三)之正则化
Andrew Ng机器学习课程笔记(三)之正则化 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365475.html 前言 ...
- Andrew Ng机器学习课程笔记(二)之逻辑回归
Andrew Ng机器学习课程笔记(二)之逻辑回归 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7364636.html 前言 ...
- Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归)
title: Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归) tags: 机器学习, 学习笔记 grammar_cjkRuby: true --- 之前看过一遍,但是总是模 ...
随机推荐
- Hadoop笔记——技术点汇总
目录 · 概况 · Hadoop · 云计算 · 大数据 · 数据挖掘 · 手工搭建集群 · 引言 · 配置机器名 · 调整时间 · 创建用户 · 安装JDK · 配置文件 · 启动与测试 · Clo ...
- LeetCode-Triangle[dp]
Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...
- angular JS中使用jquery datatable添加checkbox点击事件
'use strict'; app.controller('DataTableCtrl', function ($scope, $compile) { $scope.selected = []; $s ...
- 用letsencrypt搭建免费的https网站
环境:阿里云服务器centos7.3,nignx,letsencrypt做免费的https证书 Let’s Encrypt官网:https://letsencrypt.org/ 1.服务器开放端口:4 ...
- Mybatis 的分页条件查询语句编写
刚来到一家新公司, 翻看项目代码, 发现一位同事写的查询逻辑很好, 不用插件, 一个语句完成了分页条件查询. 而我之前一般都是在业务层对参数进行判断, 如果有条件,就调用条件查询的方法, 如果没有条件 ...
- HAUT--1262--魔法宝石(暴力)
1262: 魔法宝石 时间限制: 2 秒 内存限制: 64 MB提交: 525 解决: 157提交 状态 题目描述 小s想要创造n种魔法宝石.小s可以用ai的魔力值创造一棵第i种魔法宝石,或是使用 ...
- C# 获取并判断操作系统版本,解决Win10、 Windows Server 2012 R2 读取失败的方案
Windows 8.1, Win10之后,通过GetVersion and GetVersionEx 方法获取WIndows操作系统版本号的功能需要添加manifest文件后才能查找到,不然的话会查找 ...
- css中的几个小tip(二)
margin的塌陷现象 (一)在标准文档流中, 垂直方向存在margin的塌陷现象 先上段代码: <style type="text/css"> .box{ width ...
- PyCharm中光标变粗的解决方法
pycharm中光标变粗,如下: 原因:光标进入了改写状态. 解决方法:按一下键盘中的Insert键就好了.
- css小随笔
一.什么是CSS W3C标准中,倡导有3:其一为内容与表现分离,其二为内容与行为分离,其三为内容结构的语义化.其倡导中第一条的"表现"指的便可以说是CSS.CSS全称Cascadi ...