机器学习入门课程学习笔记(斯坦福吴恩达)


文章目录

一、简介

1.1 什么机器学习

机器学习的定义:一个计算机程序可从经验E(Experience)中学习如何完成任务T(Task),并且随着经验E的增加,性能指标P (performance measure)会不断提高

机器学习的分类

  • 监督学习(Supervised Learning):给定一个数据集,该数据集包含输出结果(标签),程序通过学习,来给输入数据打标签。例如:喂给程序n张动物图片,并且告知它每张图片是什么动物,程序经过学习后,喂给程序一张未打标签的图片,让程序判断这是什么动物
  • 非监督学习(Unsupervised Learning):与监督学习正好相反。给定一个数据集,但不给出每个数据集的输出,让程序自己去给数据集进行分类。例如:给定一组基因数据,根据给定的变量(如寿命,地理位置等),自动将其进行分组。

1.2 监督学习(Supervised Learning)

给定一个数据集,该数据集包含输出结果(标签),程序通过学习,来给输入数据打标签。例如:喂给程序n张动物图片,并且告知它每张图片是什么动物,程序经过学习后,喂给程序一张未打标签的图片,让程序判断这是什么动物

监督学习问题的分类

  • 分类问题(Classification Problem):预测的结果是离散值。例如:要预测一张动物照片属于猫、狗或其它等。
  • 回归问题(Regression Problem):预测的结果是连续值。例如:预测房屋的价格,结果可以是10000,10001, ...

1.3 非监督学习(Unsupervised Learning)

给定一个数据集,但是并不会告诉机器“每个数据集是什么”,然后让机器自己去对这个数据集进行分类。比如给定一组衣服尺寸数据,通过机器学习,将衣服分成“大”、“中”、“小”三类,训练好模型后,再给定一个衣服尺寸数据,机器就可以识别出这是大号还是中号或小号。

二、 模型和代价函数(Model and Cost Function)

2.1 模型描述(Model Representation)

  • m :训练数据集的样本数量
  • x(i):第 i 个样本的输入(特征)
  • y(i): 第 i 个样本的输出(目标值)
  • (x(i),y(i)):第 i 个样本
  • θ0,θ1,θ2, :要训练的参数
  • hθ(x)h(x):训练出的模型(函数)


在这里插入图片描述

2.2 代价函数(Cost Function)

代价函数是用来描述“当前模型预测的精确程度”,一般来说,代价函数的值越大,预测的值越不精准,所以,我们优化模型的其中一个目标就是使代价函数尽可能的小

代价函数表示方法不唯一,通常使用以下表示方法:

J(θ)=12mi=1m(y^iyi)2=12mi=1m(hθ(xi)yi)2

公式解释:

  • J(θ):代价函数,其中 θ 为当前的模型参数。目标就是不断优化参数 θ 来使代价函数的值变小
  • (y^iyi)2y^ 为预测的值,y 为实际值。使用预测的值减去实际值,来求得误差值。加平方有两个原因:①消除负号 ②方便求导(如果使用绝对值会不方便求导)
  • 12m : 除以 m 是为了求平均。除以2为了方便求导,因为求导后,2次方会正好把这个2消掉

2.3 梯度下降(Gradient Descent)

梯度下降是用来找出θ 取何值时,J(θ) 取“最小值”

核心思想:J(θ) 进行求导,算出当前J(θ)的方向, 然后向着J(θ)减小的方向移动 θ,直到θ 趋于0


在这里插入图片描述

梯度下降算法伪代码

repeat  until  convergence  {        θj := θjαθjJ(θ0,θ1)    (for  j=0 and j=1)}

解释

  • :=:赋值操作。在其他语言中,一般使用=,而非:=
  • repeat until convergence:重复直到收敛为止。不断重复括号里的操作,直到 θj 收敛于某一值,也就是 J(θ0,θ1) 趋近于0
  • θj := θjαθjJ(θ0,θ1)α为一指定常数,称为学习率(learning rate)。每次 θjJ(θ0,θ1) 减小的方向移动一点
  • (for  j=0 and j=1) : jθ 的下标,在该例中,有两个需要学习的参数,所以需要对 θ0θ1 都做上面这个操作

Correct:Simultaneous updatetemp0=θ0αθ0J(θ0,θ1)temp1=θ1αθ1J(θ0,θ1)θ0:=temp0θ1:=temp1

需要注意θ0θ1 要同时更新,他们都更新后才能进入下一轮循环。

学习率 α:学习率决定每次移动的步长

  • 学习率太小:如果学习率太小,每次移动的就会太少。要找出最低点,就会需要循环更多次。
    在这里插入图片描述

  • 学习率太大:如果学习率太大,每次移动的步长太大,可能会导致无法收敛,甚至可能会发散。
    在这里插入图片描述

三、线性代数

3.1 矩阵和向量

矩阵(Matrix):矩形的一组数字类型的数组,一般用大写字母表示。例如: A=[123444454123842641128]

矩阵的维度(Dimension of matrix):矩阵是一个二维数组,维度用 × 表示。例如,上面这个矩阵维度为 3×2,记作 R3×2

矩阵的元素(Matrix Elements ( entries of matrix ))Aij 表示矩阵 A 中的第 i 行 第 j 列的元素。例如,A11=123A32=1128


向量(Vector):一个 n×1 的矩阵就是一个向量,一般用小写字母表示。例如: y=[21354314]

向量的元素yi 表示向量的第 i 个元素。例如 y2=54



3.2 矩阵的加法和标量乘法(Addition and Scalar Multiplication)

矩阵的加法(Matrix Addition):两个矩阵相加得到一个新的矩阵。做法为对应元素相加,要求两个矩阵维度必须一样,要不然没法对应元素相加。例如: [102531]+[40.52501]=[50.541032]

标量乘法(Scalar Multiplication): 矩阵乘以一个数得到一个新的矩阵,做法为每个元素都乘以该数。例如: 3×[102531]=[3061593]



3.2 矩阵与向量相乘(Matrix-vector Multiplication)

矩阵与向量相乘(Matrix-vector Multiplication):矩阵乘以向量然后得到一个新的向量,做法为矩阵的每一个行的元素与向量元素对应相乘再相加。要求矩阵列的维度要和向量维度一致。例如: [134021][15]=[1×1+3×54×1+0×52×1+1×5]=[1647]

3.3 矩阵与矩阵相乘(Matrix-matrix Multiplication)

矩阵与矩阵相乘(Matrix-matrix Multiplication):两个矩阵相乘得到一个新的矩阵,做法为第1个矩阵的 i 行与第2个矩阵的 j 列对应元素相乘再相加作为结果矩阵的第i行第j列的元素。要求第一个矩阵的列数要与第二个矩阵的行数一致。例如: [132401][130152]=[1×1+3×0+2×51×3+3×1+2×24×1+0×0+1×54×3+0×1+1×2]=[1110914]

3.4 矩阵乘法的性质(Matrix Multiplication Properties)

  • A×BB×A
  • (A×B)×C=A×(B×C)
  • n×n 的矩阵称为方阵(square matrix)
  • 对角线全为1,其余全为0的方阵称为单位矩阵(identity matrix),记作 IE 。 例如: [100010001]

  • AI=IA=A



3.5 矩阵的逆和转置(Inverse and Transpose)

逆矩阵(inverse matrix)如果一个矩阵 A 为方阵,且存在矩阵 B,满足 AB=BA=I,则称矩阵 B 为矩阵 A 的逆矩阵,记作 A1 。即 AA1=A1A=I

逆矩阵的性质

  • 只有方阵才有逆矩阵,且与逆矩阵维度相同
  • 不是所有矩阵都有逆矩阵

转置矩阵(transposed matrix)如果一个 m×n 矩阵 A 和另一个 n×m 的矩阵 B ,满足 Aij=Bji,则称 B 矩阵为A矩阵的转置矩阵,记作 AT 。 例如: A=[120359]         AT=[132509]



四、多元线性回归(Multivariate Linear Regression)

4.1 多个特征(Multiple features)

多元线性回归:有多个特征的线性回归问题

符号(Notation)

  • n :表示特征的数量
  • x(i) :第 i 个样本的输入
  • xj(i):第 i 个样本的第 j 个特征的值

多元线性回归方程hθ(x)=θ0+θ1x1+θ2x2++θnxn

为了方便向量化,一般定义 x0=1,同时记: x=[x0x1x2xn]Rn+1           θ=[θ0θ1θ2θn]Rn+1

则,线性回归方程为: hθ(x)=θ0x0+θ1x1+θ2x2++θnxn=θTx

4.2 多元线性回归中的梯度下降

假设(Hypothesis)hθ(x)=θTx=θ0x0+θ1x1+θ2x2++θnxn

参数(Parameters)θ=(θ0,θ1,,θn)T

代价函数(Cost function): J(θ0,θ1,,θn)=12mi=1m(hθ(x(i))y(i))2

梯度下降Repeat  {       θj:=θjα1mi=1m(hθ(x(i))y(i))xj(i)}( θj    j=0,1,,n)

4.3 梯度下降实战-特征缩放(Feature Scaling)

问题提出: 若特征的量纲不一致,那么在进行梯度下降的时候,在量纲大的方向上下降过多,而在量纲小的方向下降过少。例如:

  • x1 = 房屋面积 (0 - 2000 m^2^)
  • x2 = 房间数量 (0-5)

那么在进行梯度下降时,就会产生一个特别椭的椭圆。
在这里插入图片描述

特征缩放(feature scaling):让每一个特征都缩放到 [1,1] 之间,即 1xi1

特征缩放常用方法参考资料):

  • 均值归一化(Mean Normalization) :使用 xiμi 替换 xi,使特征的均值约等于0。公式为: xscale=xμS 其中, μx 对应特征的平均值,S为特征的范围之差(max-min),S也可以使用标准差。

4.4 梯度下降实战-学习率(Learning Rate)

随着梯度下降迭代次数的增多,J(θ)也会越来越小,曲线大概如下图所示: 在这里插入图片描述

梯度下降的收敛:一般认为,当 J(θ) 在一次迭代后,减小的量小于 103 ,则认为梯度下降已经收敛,可以退出循环了。

学习率 α 的总结

  • α 太小 : 收敛的太慢
  • α 太大 :可能会导致不收敛,甚至发散。即每次 J(θ) 不减反增

学习率α的选择:一般先选择一个很小的数,然后逐渐增大进行尝试。例如: ..., 0.001, 0.01, 0.1, 1, ...

4.5 特征和多项式回归(Features and Polynomial Regression)

由于预测的模型不一定是直线 θ0+θ1x,有可能是二次曲线、三次曲线、...

多项式回归:对一个特征,定义回归方程时,包含特征的高次方。 hθ(x)=θ0+θ1x+θ2x2+θ3x3+

对于多项式回归方程,处理方式为将x的高次方当成其他特征进行处理即可:x1=x  ,   x2=x2  ,   x3=x3  ,   ...

除了定义高次方外,也可以定义其他次方,例如 hθ(x)=θ0+θ1x+θ2x2+θ3x

4.6 正规方程(Normal Equation)

多元线性回归的正规方程解:不使用梯度下降法,而是通过数学公式,直接计算出 θ

设有 m 个样本 (x(1),y(1))(x(2),y(2)),(x(m),y(m)),每个样本有 n 个特征,即: x(i)=[x0(i)x1(i)x2(i)xn(i)]Rn+1        X=[(x(1))T(x(2))T(x(3))T(x(m))T]m×(n+1)

则,使得 J(θ) 最小的 θ 为: θ=(XTX)1XTy

时间复杂度:O(n^3^) ,n为特征数


梯度下降法与正规方程法的比较

梯度下降法 正规方程法
需要考虑学习率 α 不需要选择学习率
需要多次迭代 需需要迭代
适用于特征比较多的场景,即 n 比较大 不适用与特征多的场景

4.7 正规方程不可逆(Normal Equation Noninvertibility)

在使用正规方程求解 θ 时,有可能出现 XTX 没有逆矩阵的情况。

主要有以下情况:

1.当特征中存在成比例的特征,则会导致不可逆(会导致 |X|=0),例如:

  • x1 = 房屋面积(m^2^)
  • x2 = 房屋面积 (亩)

解决方案:只保留一个

2.特征太多了,导致 nm

解决方案:删除部分特征,或使用正则化(regularization)

五、Octave教程

,现在不用学这个了,直接用Numpy不香么

六、逻辑回归

6.1 分类问题(Classification)

二分类问题:分类结果只包含两种类别,使用 0,1 表示,即 y{0,1}。 其中 0 代表 Negative Class(例如良性肿瘤),1 代表 Positive Class(例如恶性肿瘤)。 具体0,1谁表示什么无所谓。

只使用线性回归处理的弊端


在这里插入图片描述
根据数据,得出以下模型:

  • 如果 hθ(x)0.5 ,预测 y=1
  • 如果 hθ(x)<0.5 ,预测 y=0

但如果再增加一些极端的点,获得的模型就会如同下面蓝色线,这个模型显然不够好。
在这里插入图片描述
而且,线性回归的 hθ(x) 可能 >1 也可能 <0

而逻辑回归满足:0hθ(x)1

6.2 Hypothesis Representation

逻辑回归是处理二分类问题的

它需要使 0hθ(x)1

逻辑回归模型的假设公式为: hθ(x)=g(θTx)=11+eθTx     g(z)=11+ez

g(z) 被称为Sigmoid Function,其函数图像为:
在这里插入图片描述

hθ(x)的结果为对于输入x,使得y=1的概率,即 hθ(x)=P(y=1|x;θ) 。例如:hθ(x(1))=0.7,表示对于样本 x(1)y=1的概率为0.7

6.3 决策边界(Decision Boundary)

决策边界(Decision Boundary)将数据分成两个类比的边界线
在这里插入图片描述
例如,我们经过训练得到了一条决策边界:3+x1+x2=0

  • 当样本 3+x1+x20 时,g(3+x1+x2)0.5 , 预测为红X
  • 当样本 3+x1+x2<0 时,g(3+x1+x2)<0.5 ,预测为蓝〇


在这里插入图片描述
样例2,非线性的决策边界:1+x12+x22=0

  • 1+x12+x220 时, g(1+x12+x22)0.5, 预测为红X
  • 1+x12+x22<0 时, g(1+x12+x22)<0.5, 预测为蓝〇

6.4 逻辑回归的代价函数

逻辑回归的代价函数部分公式如下:

Cost(hθ(x),y)={log(hθ(x))if   y=1log(1hθ(x))if   y=0      注意底数是e2

log(hθ(x)) 的函数图像如下,预测结果 hθ(x) 越偏离真实结果1,那么代价就越大
在这里插入图片描述

log(1hθ(x)) 的函数图像如下,预测结果 hθ(x) 越偏离真实结果0,那么代价就越大
在这里插入图片描述

6.5 简化代价函数和梯度下降(Simplified Cost Function and Gradient Descent )

梯度下降的代价函数部分公式如下: Cost(hθ(x),y)={log(hθ(x))if   y=1log(1hθ(x))if   y=0      注意底数是e2

将其合并为一个式子为: Cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))

完整的线性回归代价函数公式如下

J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]

对应的梯度下降公式为(详细推导公式):

θj:=θjα1mi=1m(hθ(x(i))y(i))xj(i)

向量化的实现为(向量化过程): θ:=θαmXT(g(Xθ)y)

6.6 高级优化(Advanced Optimization)

除梯度下降法之外,其他使 θ 最优的算法有:

  • 共轭梯度(Conjugate gradient)
  • BFGS
  • L-BFGS

上述算法的优点:

  • 不需要手动选择学习率 α
  • 比梯度下降快

上述算法的缺点:

  • 实现复杂

6.7 多分类问题:一对多(Multiclass Classification: One-vs-all)

对于多分类问题,只需要将每个类别分别进行一对多处理即可

为每一个类别 i 训练一个逻辑回归模型 hθ(i)(x),用来预测 y=i 的可能性,当需要预测新的输入 x 时,使用所有的模型进行预测,选择概率最大的作为预测结果: maxihθ(i)(x)

hθ(i)(x)=P(y=i|x; θ)

例如,有如下三个类别
在这里插入图片描述

  1. 首先,将 X,看成一个类别,得到 hθ(1)(x)


在这里插入图片描述
2. 然后,将 X 看成一个类别,得到 hθ(2)(x)
在这里插入图片描述
3. 最后,将 看成一个类别,得到 hθ(3)(x)
在这里插入图片描述

七、解决过拟合问题

7.1 过拟合问题

过拟合(Overfitting):如果我们特征太多(特征的高次方太多),那样学习的假设函数就可以非常好的拟合,但是却不能很好的进行泛化(预测新的输入)

Overfitting:If we have too many features, the learned hypothesis may fit the training set very well ( J(θ)=12mi=1m(hθ(x(i))y(i))20 ), but fail to generalize to new examples

过拟合

  • 拟合的太好,不能很好泛化
  • 高方差,低偏差

欠拟合

  • 拟合的不够好
  • 低方差,高偏差


例如,我们有一个预测房价的模型:


在这里插入图片描述
可以看出,这个假设刚刚好

如果假设为直线,就会出现欠拟合(underfit) 问题,它会有较高的偏差(高偏差(High Bias)):


在这里插入图片描述

如果假设函数的特征太多,拟合的太好了,反而不好,称为过拟合(overfit),它会有较高的方差(高方差(High Variance)):


在这里插入图片描述

理解高偏差和高方差


在这里插入图片描述

逻辑回归的欠拟合和过拟合样例:
在这里插入图片描述

过拟合的处理

  • 减少特征的数量:①手动选择保留哪些特征 ②使用模型选择算法(Model selection algorithm)
  • 正则化(Regularization):①保留所有特征,但是减少参数 θj 的量级(magnitude); 当特征比较多时,该方法就比较好了,因为每一个特征都为预测 y 贡献了自己的一点力量

7.2 包含正则化的代价函数

正则化(Regularization)的目的

  • 防止过拟合
  • 简化假设模型(“Simpler” hypothesis)

正则化的实现思路:为每个一 θj 增加一个惩罚,让每个 θj 都变小一点,这样最后的曲线就相对圆滑

正则化的代价函数公式

J(θ)=12m[i=1m(hθ(x(i))y(i))2+λj=1nθj2]

其中 λ 被称为正则化参数(Regularization Paramter) 是一个常数

注意:正则化是从 θ1 开始,因为 θ0 是截距,不用参与正则化

λ 不能过大,如果过大,对每一个 θj 的惩罚太大,最后他们全成0了,最后就会欠拟合,例如:
在这里插入图片描述

7.3 正则化的线性回归(Regularized Linear Regression)

正则化的代价函数公式

J(θ)=12m[i=1m(hθ(x(i))y(i))2+λj=1nθj2]

无正则化的梯度下降公式Repeat  {       θj:=θjα1mi=1m(hθ(x(i))y(i))xj(i)}

正则化后的梯度下降公式Repeat  {       θj:=θjα[1mi=1m(hθ(x(i))y(i))xj(i)+λmθj]}

整理后得: θj:=θj(1αλm)α1mi=1m(hθ(x(i))y(i))xj(i)

要保证 (1αλm) < 1,这样才能起到惩罚的作用,每次让 θj 减少的更多一点


无正则化的线性回归正规方程解

θ=(XTX)1XTy

正则化后的线性回归正规方程解θ=(XTX+λ[0111])1XTy

7.4 正则化的逻辑回归(Regularized Logistic Regression)

正则化后的逻辑回归的代价函数为:

J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]+λ2mj=1nθj2

无正则化的逻辑回归的梯度下降公式

θj:=θjα1mi=1m(hθ(x(i))y(i))xj(i)

正则化后的逻辑回归的梯度下降公式

θj:=θjα[1mi=1m(hθ(x(i))y(i))xj(i)+λmθj]

八、神经网络(Neural Networks)

8.1 非线性假设(Non-linear Hypotheses)

线性假设的弊端特征太多了

假设现在预测房价模型:
在这里插入图片描述
使用逻辑回归模型,假设函数为右侧。我们有两个特征 x1,x2,模型特征却有 x1,x2,x1x2,... 无数个。

如果有100个特征,次方弄到2,那么最终的模型特征数量就总共有5150个特征,分别是 x1,x2,,x100,x12,x1x2,,x1x100,x22,x2x3,,x2x100,,x1002

如果有100个特征,次方弄到3,最终会约有17w个模型特征。

所以,要提出非线性的模型假设

8.2 神经和大脑(Neurons and the Brain)

科普,可略

8.3 模型表示(Model Representation)


在这里插入图片描述
Dendrite(树突): 从树突输入数据 Nucleus(细胞核):由细胞核处理数据 Axon(轴突):通过轴突输出处理结果,或将处理结果反馈到下一层继续处理

神经网是以上述为思路构建的。


在这里插入图片描述
神经元模型(Neuron Model)

  • x1,x2,x3: 输入的特征值。x1上面还有一个 x0,称为偏置单元(Bias Unit),恒等于1。
  • 激活函数(activation function):橙色的圈为激活函数,一般选用Sigmoid函数
  • hθ(x):模型的输出
  • 权重(weight)x1激活函数 之间的那条线,也就是 θj,在神经网络中,称为权重(weight)


在这里插入图片描述
神经网络可以有多层,分别为:

  • 输入层(Input Layer):Layer 1,数据从该层输入
  • 隐藏层(Hidden Layer):Layer 2 到 Layer L-1,(L为层数),在第二层到最后一层之间的层称为隐藏层。隐藏层的每一个结点都是一个激活函数
  • 输出层(Output Layer):Layer L,最后一层,该层得到的结果为输出结果

符号表示

  • ai(j) : 在第 j 层的第 i 个激活单元
  • Θ(j):控制从 j 层 到 j+1 层函数映射的矩阵的权重矩阵。Θ(j) 的维数:如果神经网络的 j层有 sj 个单元(units),j+1 层有 sj+1 个单元,那么 Θ(j)sj+1×(sj+1) 维的
  • Θk,i(j):第 j 层,第 k 个结点的第 i 个权重的值

神经网络的向量化    x=[x0x1xn]     z(j)=[z1(j)z2(j)zn(j)]

则有: z(j)=Θ(j1)a(j1)a(j)=g(z(j))hΘ(x)=a(j+1)=g(z(j+1))


例如,对于上面的神经网络,有: a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3)a2(2)=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3)a3(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3)hΘ(x)=a1(3)=g(Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2))

将其向量化,可以表示为如下: z(2)=Θ(1)x=Θ(1)a(1)a(2)=g(z(2))         x=[x0x1x2x3]  z(2)=[z1(2)z2(2)z3(2)]

第三层为:    a0(2)=1z3=Θ(2)a(2)hΘ(x)=a(3)=g(z(3))

8.4 样例1(Examples and Intuitions)

假设,我们要构建模型来预测       y=x1 AND x2          (1&1 = 1, 0&1 = 0, 0&0=0)

我们可以构架纳入下神经网络:


在这里插入图片描述

通过机器学习,我们得到了 Θ(1)=(30,+20,+20)T,即:


在这里插入图片描述

x1x2 代入 sigmoid 函数,可得:
在这里插入图片描述
可以看出,我们预测的模型是正确的,可以满足一开始的预期 y=x1 AND x2


同理,也可以构建 OR Function 的神经网络模型,如下:
在这里插入图片描述

8.5 多分类问题(Multiclass Classification)

上述例子为二分类问题,这样输出 y{0,1},这样只需要用一个输出结点即可。

如果是一对多问题,例如:
在这里插入图片描述
我们需要将图片分成如下4个类别,则相应神经网络的输出结点应该是4个:
在这里插入图片描述
 当为Pedestrian时: hΘ(x)[1000],    当为Car时:hΘ(x)[0100], 当为Motorcycle时:hΘ(x)[0010], etc. 

九、神经网络(二)

9.1 代价函数

数学符号表示, 例如有这样一个神经网络:
在这里插入图片描述

  • L= 神经网络的层数。在上图中 L=4
  • sl= l 层的结点个数(不计算偏置节点(bias unit))。上图中,s1=3,s2=s3=5,s4=sL=4
  • K = 多分类问题的类别数量。输出维度为 yRK 。如果是二分类问题,结果为0,1,此时y{0,1}

逻辑回归的代价函数如下

J(θ)=1m[i=1my(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]+λ2mj=1nθj2

神经网络的代价函数如下

J(Θ)=1m[i=1mk=1Kyk(i)log(hΘ(x(i)))k+(1yk(i))log(1(hΘ(x(i)))k)]+λ2ml=1L1i=1slj=1sl+1(Θji(l))2 其中: hΘ(x)RK(hΘ(x))k=kth output k

注意:i=1slj=1sl+1 分别是 SlSl+1 ,而不是 slsl+1

公式解释

  • 上半部分和逻辑回归类似,但不一样的地方在 k=1K 。在逻辑回归的二分类中,y{0,1},其中 loghθ(x(i)) 计算 y=1 的部分,(1y(i))log(1hθ(x(i)))计算 y=0 的部分。而在多分类问题,yRK, 也就是有K个 {0,1},这样在计算代价函数时,要把这 K 种结果求和
  • 下半部分是参数正则化。对于逻辑回归,只有 nθj 需要进行正则化。但在神经网络中就多了,因为有 L 层,所以需要遍历 1L1 层(最后一层为输出层,所以就没有线(θ)了),所以就有了l=1L1 。 对于 l层,因为有 sl 个结点(不算偏置结点),所以就有了 i=1sl 。 而 l 层的每一个结点都要与它的下一层(sl+1层)结点连条线(每条线代表一个Θji(l) 权重),所以就有了j=1sl+1

9.2 反向传播算法(Backpropagation Algorithm)

反向传播算法的用途:计算出 Θ

与其他算法一致,我们得到了代价函数 J(Θ),目标是最小化 J(Θ),即

minΘJ(Θ)

所以需要编码来计算:

  • J(Θ)
  • Θij(l)J(Θ)

正向传播算法的用途:给定权重 Θ 和 输入x,求出输出 hΘ(x)

正向传播算法思路:从输入层开始,一层一层计算,最终得出输出结果


例如:
例如,对于该神经网络,使用正向传播算法计算 hΘ(x) 的过程如下:

a(1)=xz(2)=Θ(1)a(1)a(2)=g(z(2))(adda0(2))z(3)=Θ(2)a(2)a(3)=g(z(3))(adda0(3))z(4)=Θ(3)a(3)a(4)=hΘ(x)=g(z(4))

a(4) 为例,将其展开:

a(4)=g(z(4))=g(Θ(3)a(3))=g([Θ10(3)a0(3)+Θ11(3)a1(3)++Θ15(3)a5(3)Θ20(3)a0(3)+Θ21(3)a1(3)++Θ25(3)a5(3)Θ30(3)a0(3)+Θ31(3)a1(3)++Θ35(3)a5(3)Θ40(3)a0(3)+Θ41(3)a1(3)++Θ45(3)a5(3)])


反向传播算法思路


例如:
例如,对于该神经网络,首先,令:

  • δj(l)= l 层结点 j 的“误差(error)”
  • δ(l)=(δ1(l),δ2(l),,δn(l))T ,其中n代表该层的结点数

则有:

δ(4)=a(4)y=hΘ(x)yδ(3)=(Θ(3))Tδ(4) .g(z(3))=(Θ(3))Tδ(4) .(a(3) .(1a(3)))δ(2)=(Θ(2))Tδ(3) .g(z(2))=δ(2)=(Θ(2))Tδ(3) .(a(2) .(1a(2)))

其中  . 是指两矩阵的对应元素相乘


反向传播算法伪代码

 Training set {(x(1),y(1)),,(x(m),y(m))}

 Set Δij(l)=0 (for all l,i,j)

 For i=1 to m

      Set a(1)=x(i)

      Perform forward propagation to compute a(l) for l=2,3,,L

      Using y(i), compute δ(L)=a(L)y(i)

      Compute δ(L1),δ(L2),,δ(2)

     Δij(l):=Δij(l)+aj(l)δi(l+1)


Dij(l):=1mΔij(l)+λΘij(l)    if j0

Dij(l):=1mΔij(l)              if j=0

最终得: Θij(l)J(Θ)=Dij(l)

9.5 梯度检测

梯度检测:检测自己的梯度下降代码写的是否正确

思想:求出该点斜率(导数)的近似值,然后与实际值比较,如果差的多,说明求导公式有问题。


在这里插入图片描述

对于某一个 θ 有: ddθJ(θ)J(θ+ε)J(θε)2ε

其中 ε 为一个非常小的值,比如可以取 ε=104

对于 向量θ, 有:

θRn (E.g. θ is "unrolled" version of Θ(1),Θ(2),Θ(3))θ=θ1,θ2,θ3,,θnθ1J(θ)J(θ1+ϵ,θ2,θ3,,θn)J(θ1ϵ,θ2,θ3,,θn)2ϵθ2J(θ)J(θ1,θ2+ϵ,θ3,,θn)J(θ1,θ2ϵ,θ3,,θn)2ϵθnJ(θ)J(θ1,θ2,θ3,,θn+ϵ)J(θ1,θ2,θ3,,θnϵ)2ϵ

9.6 随机初始化

对于 Θ 的初始化,有两个注意点:

  1. 不能将 Θij(l) 初始化为0
  2. 建议将每一个 Θij(l) 初始化为范围在 [ε,ε] 中的随机数

9.7 神经网路总结

训练一各神经网络分为以下几步: 1. 随机初始化权重(Θ) 2. 对于每一个 x(i),使用正向传播获得 hΘ(x(i)) 3. 使用代码计算 J(Θ) 4. 使用反向传播计算偏导数 Θjk(l)J(Θ) 5. 使用“梯度检测”来比较使用反向传播计算出的 J(Θ) 和 估算的J(Θ),来判断代码是否有问题。如果没问题,注释掉梯度检测这段代码 6. 使用梯度下降或其他高级优化方法最小化 J(Θ),最终得到 Θ

Next Post Previous Post
No Comment
Add Comment
comment url