Andrew Ng机器学习笔记---by Orangestar

Week_5


重点:反向传播算法,backpropagation

1. Cost Function神经元的代价函数

回顾定义:(上节回顾)

L是☞层数

\(s_l\)指第l层的节点数,注意,该节点数不包含bais偏置项

K则是输出项的个数。也就是分类的个数

图解回顾:二元分类,多元分类

接下来定义神经元的代价函数:

回顾:

逻辑回归中,代价函数(正则化):

对于神经网络:

解释:

这其实是一般逻辑回归的代价函数的一般形式。

前面这一大坨,计算的是每一个连线的代价函数,想想那个神经元。所以有2个求和符号。

后一坨,是对于所有的i,j来求和。当然,是每一层。所以有3个求和符号。

原汁原味的解释:

笔记:

  • the double sum simply adds up the logistic regression costs calculated for each cell in the output layer.
  • the triple sum simply adds up the squares of all the individual \(\Theta\)s in the entire network
  • the i in the triple sum does NOT refer to training example!!!

2. ※ Backprpagation Algorithm 反向传播算法

回顾上节,我们需要计算一个非常复杂的式子,并要对这个式子求最小值:

在本节我们重点讨论如何计算这个偏导项

首先,回顾前向传播算法:

下面,为了计算偏导项,我们需要使用反向传播算法

首先引入一个eroror:

用来计算真实值和假设函数值的差值

\(\delta^{(i)}_j = a^{(i)}_j-y_j\)

这个$ a^{(i)}_j$ 就是\((h_\theta^{(x)})_j\)

注意,这时候,算的是输出层(即最后一层)

毕竟是反向传播算法嘛

当然,可以写成向量形式

\(\delta^{(4)}=a^{(4)}-Y\)

下一步,就要算前面几层的误差了

如图所示:

记住g的函数表达式,利用微积分知识很容易证明

当然,要注意的是,这里没有第一层,因为第一层是引入层,输入层,所以不可能有误差

经过十分复杂的证明:

我们可以证明出:

\(\frac\part{\part\theta}J(\theta) = a^{(l)}_j \delta^{(l+1)}_i\)  这里,我们忽略了标准项

  • 那么,如何实现?(很大的训练样本)

    基本思路是,先算出所有假设函数,在用训练样本中的值来计算error

    跳出循环体后,可以计算:

    然后,就可以计算出偏导项

例题:

好难理解啊啊啊啊啊啊


再来理一遍!!!:

Back propagation Algorithm



解释:Where L is our total number of layers and $a^{(L)} $is the vector of outputs of the activation units for the last layer. So our "error values" for the last layer are simply the differences of our actual results in the last layer and the correct outputs in y. To get the delta values of the layers before the last layer, we can use an equation that steps us back from right to left:

然后:

解释:The delta values of layer l are calculated by multiplying the delta values in the next layer with the theta matrix of layer l. We then element-wise multiply that with a function called g', or g-prime, which is the derivative of the activation function g evaluated with the input values given by \(z^{(l)}\).

最后

好的,我知道我理解不了.......

我来偷一下懒:

https://zhuanlan.zhihu.com/p/25081671

https://zhuanlan.zhihu.com/p/25416673

这两篇文章讲的挺好的

3. 反向传播算法--直观感受

我们先来观察一下,前向传播算法是如何实现的:

很容易理解。

接下来看看,后向传播算法到底在干嘛?

仔细观察,\delta是如何得到的

前面的误差\delta,由后面的误差来得到

4. 细节实现过程

主要讲如何实现数据向量化

好吧,我没学octave。放过我

例子:

我不会。放过我。

我就截图爽了,混课时长度



5. Gradient Checking

减少算法误差,减少模型错误,bug等

双边导数比单边导数的精度更高

下面看看向量如何来估计?

下面又用octave了。饶了我!

最后,只要确认:

注意:

检测完反向传播算法没问题后,一定要关掉梯度检验!

总结:

本节挺简单的,就是讲了下如何验证反向传播算法的正确性来估计!

6. Random Initialization

随机初始化,我们需要设置随机初始化。很多高级算法都需要

(https://d3c33hcgiwev3.cloudfront.net/imageAssetProxy.v1/y7gaS7pXEeaCrQqTpeD5ng_8868ccda2c387f5d481d0c54ab78a86e_Screen-Shot-2016-12-04-at-11.27.28-AM.png?expiry=1563580800000&hmac=JyszF0nKHl7sZtxzpVzfeMOKskkmga1gdi2K3TGnrkI)

这节学的不是很好》》》》

octave害人

7.Put it Together




注明:博客写来完全是给我自己看的!自我满足。

而且,这周学的非常不好,好多知识感觉知识一带而过,

没有真正的理解,有可能是数学知识不够的原因,当然

也可能是最近有些浮躁,为了做笔记而做笔记,急于求成,之类的

希望我自己下次能改进,日后待知识足够,一定要把这周的知识理顺

共勉!

week_5的更多相关文章

  1. 【Duke-Image】Week_5 Segmentation

    Chapter 10 Image Segmentation 图像分割 10.2.7 Edge Linking and Boundary Detection 边缘连接和边界检测 Global proce ...

随机推荐

  1. Vue3 Vite3 多环境配置 - 基于 vite 创建 vue3 全家桶项目(续篇)

    在项目或产品的迭代过程中,通常会有多套环境,常见的有: dev:开发环境 sit:集成测试环境 uat:用户接收测试环境 pre:预生产环境 prod:生产环境 环境之间配置可能存在差异,如接口地址. ...

  2. 代码随想录第八天 |344.反转字符串 、541. 反转字符串II、剑指Offer 05.替换空格 、151.翻转字符串里的单词 、剑指Offer58-II.左旋转字符串

    第一题344.反转字符串 编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的额外空间解决这 ...

  3. Golang可能会踩的58个坑之初级篇

    前言 Go 是一门简单有趣的编程语言,与其他语言一样,在使用时不免会遇到很多坑,不过它们大多不是 Go 本身的设计缺陷.如果你刚从其他语言转到 Go,那这篇文章里的坑多半会踩到. 如果花时间学习官方 ...

  4. 一篇文章带你掌握MyBatis简化框架——MyBatisPlus

    一篇文章带你掌握MyBatis简化框架--MyBatisPlus 我们在前面的文章中已经学习了目前开发所需的主流框架 类似于我们所学习的SpringBoot框架用于简化Spring开发,我们的国人大大 ...

  5. 纯Vue实现网页日常任务清单小功能(数据存储在浏览器)

    任务清单可以极大提高我们的工作效率.哪些事情办了.哪些事情代办.哪些是紧急需要办的事情等等. 在组件化编码实战3的基础上进一步改进.将原先的数据保存的浏览器中.就可以做到关闭网页也不会丢失数据的情况 ...

  6. MyBatisPlus分页插件在SpringBoot中的使用

    文章目录 1.目录结构 2.新增配置 3.编写测试类 4.测试结果 5.数据库中的表 文件的创建: https://blog.csdn.net/weixin_43304253/article/deta ...

  7. AI之强化学习、无监督学习、半监督学习和对抗学习

    1.强化学习 @ 目录 1.强化学习 1.1 强化学习原理 1.2 强化学习与监督学习 2.无监督学习 3.半监督学习 4.对抗学习 强化学习(英语:Reinforcement Learning,简称 ...

  8. Go | 基本数据类型的相互转换

    基本数据类型的相互转换 Go在不同类型的变量之间赋值时需要显示转换,不能自动转换 基本语法 表达式 T(v): 将值v转换成类型T T就是数据类型: int32, int64, float32... ...

  9. 25.自定义mixin和基类

    很多时候业务需求并不是几个简单的mixin就可以满足,需要我们自定义mixin # get_object源码中字段查询源代码 filter_kwargs = {self.lookup_field: s ...

  10. 四、Pod 介绍

    一.什么是 Pod ​Pod 是 kubernetes 集群中最小的部署和管理的基本单元,协同寻址,协同调度. ​Pod 是一个或多个容器的集合,是一个或一组服务(进程)的抽象集合. ​Pod 中可以 ...