litduck / Machine_Learing

0 stars 0 forks source link

吴恩达机器学习笔记 #1

Open litduck opened 2 years ago

litduck commented 2 years ago

机器学习定义: 计算机程序从经验E中学习,解决某一任务T,进行某一性能度量P,通过测定在T上的表现因经验E而提高。 例:跳棋游戏 经验E:程序与自己下几万次跳棋 任务T:玩跳棋 性能度量P:与新对手玩跳棋时赢的概率 (T得到E后会提高P)

Supervised Learning 监督学习 给算法一个数据集,其中包含了正确答案,算法的目的就是给出更多的正确答案

  1. 回归问题:设法预测连续纸的属性。 功能:建模和分析变量之间的关系。 目标:预测一个连续值输出。 流程:1.选定训练模型,即我们为程序选定一个求解框架,如线性回归模型(Linear Regression)等。 2.导入训练集 train_set,即给模型提供大量可供学习参考的正确数据。 3.选择合适的学习算法,通过训练集中大量输入输出结果让程序不断优化输入数据与输出数据间 的关联性,从而提升模型的预测准确度。 4.在训练结束后即可让模型预测结果,我们为程序提供一组新的输入数据,模型根据训练集的学 习成果来预测这组输入对应的输出值。
  2. 分类问题:根据已知样本的某些特征,判断一个新的样本属于哪种已知的样本类。 目标:预测离散值的输出。

Unsupervised Learning 无监督学习 训练用于学习数据集结构的模型, 并为用户提供关于新样本的有用信息。(无标签) 聚类算法:将数据集中在某些方面相似的数据成员进行分类组织。 鸡尾酒会问题:给定混合信号,如何分离出鸡尾酒会中同时说话的每个人的独立信号。 算法:[w,s,v] = svd((repmat(sum(x.x,1),size(x,1),1).x)*x');

litduck commented 2 years ago

模型描述

m:表示训练样本的变量 x:输入变量(输入特征) y:输出变量(即要预测的目标变量) (x,y):表示一个训练样本 (x^(i),y^(i)):表示第i个训练样本

例: 记h假设函数 则 *h_θ(x) = θ_0 + θ_1x,此函数是预测y是关于x的线性函数。 此模型叫线性回归,上述函数模型为一元线性回归,又叫单变量线性回归**。

litduck commented 2 years ago

代价函数 θ_i :模型参数 *h_θ(x) = θ_0 + θ_1x 如何选择θ_0和θ_1,让假设函数表示的直线尽量地与这些数据点很好的拟合。在线性回归中,这是一个最小化问题。 即 (h_θ(x)-y)^2,h_θ(x)y**差异尽可能小。

^2) 关于表示关于θ_0与θ_1的最小化过程,即找到θ_0与θ_1使这个表达式的值最小。 为了尽量减少误差,取其1/2m求最小值 总之,要尽量减少预测值和实际值的差的平方误差和

定义一个Cost function 代价函数 此代价函数又叫Squared error function 平方误差代价函数^2)

总结: Hypothesis 假设函数:h_θ(x) = θ_0 + θ_1*x Parameters 参数:θ_0 , θ_1 Cost function 代价函数^2) Goal 优化目标:minimize┬(θ_0,θ_1)⁡ J(θ_0,θ_1)

模型可视化 简化版:*h_θ(x) = θ_1x** 则J(θ_1)为一个碗装曲线(类似二次函数)

正常版:*h_θ(x) = θ_0 + θ_1x** 则J(θ_0,θ_1)为一个三维碗装等高线图

litduck commented 2 years ago

梯度下降

Have some functions Want 初始值:θ_0,θ_1(通常情况下设θ_0=0,θ_1=0) 不停地一点点地改变θ_0和θ_1,使变小,直到找到最小值或者局部最小值

梯度下降算法

(for j=0 and j=1) α: Learning Rate 学习率,用来控制梯度下降时,控制我们以多大的幅度更新这个参数θ_j。若α越大,则梯度下降得越迅速,反之同理。 :导数项

实现梯度下降算法的微妙之处在于,你需要同时更新θ_0和θ_1。 意味着: θ_0更新为θ_0减去某项 θ_1更新为θ_1减去某项

正确实现梯度下降的方法(即同步更新)

litduck commented 2 years ago

“Batch” Gradient DescentBatch”梯度下降算法

"Batch":每一步梯度下降,都历遍了整个训练集的样本

将梯度下降和代价函数结合得到线性回归(可以用直线模型拟合数据)的算法。

梯队下降 (for j=0 and j=1)

线性回归模型 线性假设: 平法差代价函数:-y^{(i)}))

主要目的:获得

^{2})

j=0:-y^{(i)}))

j=1:-y^{(i)})\cdot&space;x^{(i)})

==》

-y^{(i)})) -y^{(i)})\cdot&space;x^{(i)})

线性函数的代价函数:凸函数(只有一个全局最优

litduck commented 2 years ago

多特征变量

n:特征量(变量)数量 m:样本数量(训练样本数) 表示第i个训练样本的输入特征量(向量) 表示第i个训练样本中第j个特征量的值

假设形式: 简化——定义(意味着对于第i个样本,都有一个向量,且,也可以认为定义了一个额外的第0个特征量

简化后的假设形式:

即得:

此模型又被称为多元线性回归,即用多个特征量或者变量来预测Y值

litduck commented 2 years ago

多元梯度下降法(处理多元线性回归)

假设形式: 参数:,看作一个向量 平方差代价函数:-y^{(i)})^{2})

梯度下降:

n>=1时: -y^{(i)})x_j^{(i)},(\theta&space;_jforj=0,1,...,n)) 此模型称为多元线性回归模型

-y^{(i)})x_0^{(i)}) -y^{(i)})x_1^{(i)})

. . . . . .

-y^{(i)})x_n^{(i)})

litduck commented 2 years ago

特征缩放

如果有一个机器学习问题,这个问题有多个特征,如果你能确保这些特征都处在一个相近得范围,这样梯度下降法就能更快的收敛。 而通过特征缩放,不同特征的值范围变相近。

更一般地,当执行特征缩放时,我们通常的目的是:将特征的取值约束到-1到+1的范围内。 只要接近[-1,+1]的范围内即可。通常情况下,[-3,+3]和[-1/3,+1/3]的范围都可以。

”均值归一化“

除了将特征值除以最大值以外,在特征缩放中,有时也会进行一个“均值归一化”的工作:将替换成让特征值具有为0的平均值。 更一般的规律是:把替换为 :训练集中特征的平均值 :该特征值的范围(最大值-最小值),或将![]设为变量的标准差

litduck commented 2 years ago

”Learning Rate“ 学习率

1、了解调试是什么和一些小技巧来确保梯度下降是正常工作的 2、如何选择学习率

梯度下降算法:找到一个θ值,并且希望它能够最小化代价函数J(θ) 做法:在梯度下降算法运行时,会出代价函数J(θ)的值(即绘出代价函数J(θ)随迭代步数增加的曲线) X轴:迭代次数 Y轴:min(θ) J(θ) 曲线上的某点:表示梯度下降算法迭代x次以后得出的θ算出的J(θ)的值

这条曲线显示的是梯度下降算法的每步迭代后代价函数的值,如果梯度下降算法正常工作的话,每一步迭代之后J(θ)都应该下降。也可以帮助判断梯度下降算法是否已经收敛。 值得注意的是:每个问题迭代的次数不一样。

曲线可以提前警告算法是否正常工作 通常曲线异常有两种情况: 1、J(θ)一直上升 2、J(θ)上升又下降,在上升有下降,不断循环 这两种情况解决办法:使用更小的学习率。(数学家已证明若足够小,那么每次迭代之后代价函数J(θ)都会下降)

总结:

太小,会遇到收敛速度慢的问题。 若太大,代价函数J(θ)可能不会在每次迭代后都下降,甚至可能不收敛。

如何取

尝试取一系列的值。 ...,0.001, 0.003, 0.01, 0.03, 0.1,... 大约每隔3倍取一个值,然后对于这些不同的值绘制J(θ)随迭代步数变化的曲线,然后选择使J(θ)快速下降的一个值。

自动收敛测试

让一种算法来告诉你梯度下降算法是否已经收敛。 如果代价函数J(θ)一步迭代后的下降小于一个很小的值这个测试就判断函数已收敛。

litduck commented 2 years ago

特征和多项式回归

一些可供选择的特征以及如何得到不同的学习算法。 多项式回归可以使我们用线性回归的方法来拟合非常复杂的函数。甚至是非线性函数。

以预测房价为例: 假设你有两个特征,分别是房子临街的宽度frontage垂直宽度(纵深)depth 则线性回归模型为: 可以重新定义一个特征:size=frontage*depth 则线性回归模型变为:

与选择特征的想法密切相关的一个概念被称为多项式回归。

如果你通过房价的数据样本训练集预测的线性回归模型是: 但是这个模型并不十分拟合数据,你可以通过变换模型来拟合数据,以下有两种模型: 1、 2、

总结: 如何将一个多项式,如一个二次函数或一个三次函数拟合到你的数据上: 可以自由选择使用什么特征,并且通过设计不同的特征,能够用更复杂的函数拟合数据,而不是只用一体哦啊直线去拟合。特别是,也可以使用多项式函数,有时如果从合适的角度来寻找特征,你就能得到一个更符合你的数据的模型。

litduck commented 2 years ago

正规方程(区别于迭代方法的直接解法)

提供了一种求θ的解析解法,所以不在需要运行迭代算法,而是可以直接一次性求解θ的最优值,即只需一步就可以得到最优值。 对于某些线性回归问题,它会给我们更好的方法来求得参数θ的最优值。

假设有一个非常简单的代价函数 J(θ)是一个二次函数,假设θ只是一个标量,或者说θ只是一个实数值。 如何最小化一个二次函数?求导法!

:一个n+1维的参数向量 如何最小化-y^{(i)})^{2})? 逐个对![]()求J的偏导数,然后把他们全部置零(for every j)

Example: 有4个训练集样本(m=4) 每个训练集样本包含4个不同的特征值,预测值为y 构建一个矩阵X(通常称X为设计矩阵),这个矩阵基本包含了训练样本的所有特征变量 m*(n+1)维向量 m:每个特征包含的样本数量 n+1:特征变量数 能得到使得代价函数最小化的θ。

Matlab

在一般情况下,假设我们有m个训练样本![]()和n个特征变量

设计矩阵:^{\top&space;}\&space;(x^{(2)})^{\top&space;}\&space;...\&space;(x^{(m)})^{\top&space;}\end{bmatrix}),m*(n+1)维

E.g.:If^{\top&space;}\&space;(x^{(2)})^{\top&space;}\&space;...\&space;(x^{(m)})^{\top&space;}\end{bmatrix},X=\begin{bmatrix}&space;1&space;&&space;x_1^{(i)}\&space;1&space;&&space;x_2^{(i)}\&space;...&space;\&space;1&space;&&space;x_m^{(i)}&space;\end{bmatrix})

何时使用? 假设有m个训练样本,n个特征变量 梯度下降: 1、需要运行多次尝试不同的学习率,直到找到运行效果最好的那个 2、需要更多次的迭代,取决于问题细节 3、在n很多的情况下,也能运行地相当好

正规方程: 1、不需要选择学习率 2、不需要迭代 3、需要计算![]() 4、n越大,计算速度O(n)越慢。一般在n=10000是需要考虑是否倾向于梯度下降算法。

litduck commented 2 years ago

正规方程在不可逆情况下的解决方法

不可逆时:使用

正规方程在不可逆的原因: 1、如果因为某些原因,你的学习问题包含了多余的特征。eg:某些特征线性相关。 2、你正在运行的学习算法有很多特征(m<=n)。

当你发现是奇异的或不可逆时: 1、查看是否有多余的特征(线性相关,互为线性函数等)。若有,则删除其中一个;若无,进行2。 2、检查是否有过多的特征,若有,则看能否删除某些特征,或者使用正则化(它可以让你使用很多的特征来配置很多参数,即使你有一个相对较小的训练集)。

litduck commented 2 years ago

分类

要预测的变量y是一个离散值情况下的分类问题。 logistic 回归算法:最流行最广泛使用的学习算法之一。 E.g.: 1.Email:Spam/Not Spam? 2.Online Transaction:Fraudulent(Yes/No)? 3.Tumor:Malignant/Benign? 变量y有两种情况: 0:“Negative Class”,负类:表示没有某样东西 1:“Positive Class”,正类:表示具有我们要寻找的东西

如果将线性回归应用到分类问题中?(不建议这样做) Classification:y=0 or 1 can be >1 or <0

logistic Regression: 被视为一种分类算法,其特点在于:算法的输出或者说预测值一直介于0和1之间,并不会大于1或者小于0.

多分类问题

可以选取多个值,

litduck commented 2 years ago

_logistic_回归中假设函数的表示方法

假设表示,即当有一个分类问题的时候,我们要使用哪个方程来表示我们的假设。 在分类问题中,我们希望分类器的输出值在0和1之间。 线性回归: :Sigmoid函数 or Logistic函数 两式联立得::值域在0~1之间 Need to do:用参数θ拟合我们的数据,多以拿到一个训练集后,需要给参数θ选定一个值,![]()会帮我们做出预测。

假设的输出的解释: =estimated probability that y=1 on input x 输出某个数字,我们把这个数字当作一个输入x,y等于1的概率估计。 Example: If =0.7 则有70%或0.7的可能性是恶性肿瘤

给定参数θ,对于具有x特征的某种事物y=1的概率。

litduck commented 2 years ago

决策边界

可以更好地帮助我们理解假设函数在计算什么 如果我们想预测y=1还是等于0,可以这样做: 只要该假设函数输出y=1得概率或等于0.5,那么这意味着y更有可能等于1而不是0,我们就预测y=1。 另一种情况,若预测y=1的概率小于0.5,那么就预测y=0。 Suppose predict "y=1" if predict "y=0" if 对函数的解析: g(z)>=0.5,when z>=0 ,when 预测y=1or y=0取决于估值概率

Example: 假设有一个训练集 假设函数: 假设已经拟合好参数 Predict "y=1" if 就是决策边界,这条直线就是假设函数为0.5,直线右上方为y=1,左下方为y=0

这条决策边界以及预测y=1和y=0的区域,他们都是假设函数的属性,决定于其参数。他不是数据集的属性。

More complex example: 已知参数 Predict "y=1" if :决策边界

只有确定参数θ,也就确定了决策边界,训练集只是拟合参数θ。

通过在特征中增加这些复杂的多项式可以得到更复杂的决策边界,而不是只用直线分开的正负样本。

litduck commented 2 years ago

代价函数

(定义用来拟合参数的优化目标或者叫代价函数)

_logistic_回归模型的拟合问题: Training set:{,(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)}))} m example:。(每个样本用n+1维的特征向量表示)

如何拟合参数θ的问题? 先来看线性回归的方法 Cost function Linear regression(线性回归)-y^{(i)})^{2}) =\frac{1}{2}(h\theta(x)&space;-y)^{2}) ![](https://latex.codecogs.com/png.latex?h\theta(x)&space;=\frac{1}{1+e^{-\theta&space;^{\top&space;}x}}):非线性函数 所以=\frac{1}{2}(h_\theta(x)&space;-y)^{2})是非凸函数,有许多局部最优值,所以要找一个不同的代价函数。这个代价函数就是我们要用在logistic回归上的。

![]() If y=1,即Cost=0,if y=1,hθ(x)=1 But as ![](https://latex.codecogs.com/png.latex?h\theta&space;(x)\rightarrow&space;0,Cost\rightarrow&space;\infty) 所以当h_θ(x)=0(predict P(y=1 | x;θ)),但是y=1时,Cost函数接近无穷大。就是说当一个病人有一个恶性肿瘤y=1的概率为0,结果是错的,这是完全不可能的,那么将用非常非常大的代价值来惩罚它。

If y=0发现y=0,但却几乎非常肯定的预测y=1的概率是1,那么我们就要付出非常大的代价值。 如果h_θ(x)=0,和y=0,那么假设函数预测对了。

litduck commented 2 years ago

简化代价函数与梯度下降

,y^{(i)})) ![]() Note: y=1 or 0 always 将两式合并得:=-ylog(h\theta&space;(x))-(1-y)log(1-h\theta&space;(x))) Logistic regression cost function,y^{(i)})=-\frac{1}{m}[\sum{i=1}^{m}y^{(i)}logh\theta&space;(x^{(i)})+(1-y^{(i)})log(1-h_\theta&space;(x^{(i)}))]) 此式子从极大似然法得来的。它是统计学中为快速寻找参数的方法。且这个函数是“凸的”,许多人用它来拟合logistic回归模型的代价函数。

拟合参数θ:min(θ) J(θ) -> get θ 给新样本具有某些特征:

梯度下降法

Gradient Descent

向量化: Want min(θ) J(θ):

向量化:

如果有x个特征,你就有一个参数向量,梯度下降法同时更新这些θ。

线性回归: logistic回归: 这两个是完全不同的东西

litduck commented 2 years ago

高级优化

使用这些高级优化算法,与梯度下降相比,能大大提高logistic回归运行的速度,这也将使算法更加适合解决大型的机器学习问题。 Cost function J(θ), want min(θ) J(θ) Given θ,需要编写代码 输出: -J(θ) -,(for j=0, 1, ..., n) Gradient descent Repeat{ }

除了Gradient descent,还有更高级的优化算法: -Conjugate gradient -BFGS -L-BFGS 优点: 1、不需要手动选择α 2、收敛得远远快于梯度下降 缺点:更加复杂

这些高级算法有一个智能内循环,称为线搜索算法,它可以自动尝试不同的学习速率α并自动选择一个好的α,它甚至可以为每次迭代选择不同的学习速率α,那么就不需要自己选择。

Example:

代码: function [jVal, gradient] = costFunction(theta) jVal = (theta(1)-5)^2 + (theta(2)-5)^2; gradient = zeros(2,1); gradient(1) = 2(theta(1)-5); gradient(2) = 2(theta(2)-5);

//高级算法运用 options = optimset('GradObj', 'on', 'MaxIter', '100'); initialTheta = zeros(2,1);
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);

解析: jVal:代价函数值 gradient:梯度值(导数项) 1、options = optimset('GradObj', 'on', 'MaxIter', '100'); options:存储想要的options的数据结构 'GradObj', 'on':设置梯度目标参数为打开,意味着你现在确实要给这个算法提供一个梯度。 'MaxIter', '100':设置最大迭代次数为100。

2、initialTheta = zeros(2,1); initialTheta:θ的猜测初始值。

3、[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options); fminunc:更高级的优化函数,叫无约束最小化函数。 @costFunction:指向刚刚定义的costFunction函数的指针。

litduck commented 2 years ago

多元分类:一对多(分类算法)

什么事多类别分类问题? 假如说你现在需要一个学习算法自动地将邮件归类到不同的文件夹里,或者说可以自动地加上标签。

E.g.: Email foldering / tagging:Work (y=1),Friends (y=2),Family (y=3),Hobby (y=4) Medical diagrams:Not ill (y=1),Cold (y=2),Flu (y=2) Weather:Sunny (y=1),Cloudy (y=2),Rain (y=3),Snow (y=4)

如何解决多类别问题? 比如有一个三个类别的学习问题,那么就要分成三个独立的二元分类问题

总结: 训练了一个逻辑回归分类器预测i类别y=i的概率,最后为了做出预测,我们给出一个新的输入值x,期望获得预测。我们要做的是,在比如三个分类器运行输入x,然后选择h最大的类别,也就是要选择分类器,选择出三个中可信度最高,效果在最好的那个分类器,无论i等于多少,我们都能得到一个最高的概率值,我们预测y就是那个值。

litduck commented 2 years ago

过度拟合 overfitting

一、“欠拟合”,或者说这个算法具有高偏差 意味着:假设函数没有很好地拟合训练数据 如果你拟合一条直线,就好像算法有一个很强的偏见,或者说非常大的偏差,认为房子价格与面积线性相关,而罔顾数据的不符,罔顾证据的不符,先入为主地拟合一条直线,最终导致拟合数据很差。

二、”过度拟合“,或者说这个算法具有高方差 如果你和一个高阶多项式,那么这个假设函数能拟合几乎所有的数据,这就面临可能的函数太过庞大,变量太多的问题,我们没有足够的数据来约束它,来获得一个好的假设函数。

overfitting 过度拟合: 过度拟合的问题将会在变量过多的时候出现,这时训练出的假设能很好地拟合训练集,所以你的代价函数实际上可能非常接近于0,或者就恰好等于0.但是你可能得到这样的曲线,它千方百计地拟合训练集,导致它无法泛化到新地样本中,无法预测新样本的价格。

”泛化“:指一个假设模型应用到新样本的能力。

当我们拥有过多的变量,而只有非常少的训练数据时,就会出现过度拟合的问题。 解决办法: 1、减少选取变量的数量 -人工检查变量清单,并以此决定哪些变量更为重要,哪些特征变量应该保留,那些应该舍弃。 -模型选择算法(可自动选择哪些特征变量保留,那些舍弃) 2、正则化 Regularization -保持所有特征,但是减少量级或参数θ_j的大小 -Work well,当我们有很多特征变量时,其中每一个变量都能对预测的y值产生一点影响。

litduck commented 2 years ago

正则化

如果我们的参数【】较小,参数值较小意味着: 1、一个更简单的假设模型 2、更不容易出现过度拟合的问题

在线性回归J(θ)后加一个额外的正则化项来缩小每个参数的值。 :正则项 正则化参数,控制两个不同目标之间的取舍(平衡关系)。即更好地去拟合训练集的目标将参数控制得更小的目标,从而保持假设模型得相对简单,避免出现过度拟合的情况。

litduck commented 2 years ago

线性回归的正则化

代价函数: 梯度下降: Repeat{ (for j = 1,2,...,n) }

可以合并为:

正规方程: min(θ) J(θ):

litduck commented 2 years ago

Logistic回归的正则化

Cost function :

梯度下降: Repeat{ (for j = 1,2,...,n) }

litduck commented 2 years ago

神经网络

一种机器学习网络。 当初始特征个数很大时,将这些高阶多项式项数包括到特征里,会是特征空间急剧膨胀,当特征个数n很大时,郑家特征来建立非线性分类器并不是一个好做法。

对于许多实际的机器学习问题,特征个数n是很大的。

只是包括平方项或者立方项特征的简单的logistic回归算法并不是一个在n很大时,学习复杂的非线性假设的好办法,因为特征过多。

神经网络在学习复杂的非线性假设上被证明是一种好得多的算法,即使输入特征空间或n很大,也能轻松搞定。

神经元与大脑

神经重接实验,其中引申出的理念是: 如果有一块有一块脑组织可以处理光、声或触觉信号,那么也许存在一种学习算法可以同时处理视觉、听觉和触觉,而不是需要运行上千个不同的程序或者上千个不同的算法来做这些大脑所完成的成千上万美好的事物。

Senor representation in the brain

  1. Seeing with your tongue
  2. Human echolocation (sonar)
  3. Haptic belt : Direction sense
  4. Implanting a 3rd eye
litduck commented 2 years ago

神经网络基本概念

神经网络的第一层叫输入层最后一层叫输出层,中间的统一叫隐藏层:第j层第i个神经元或单元的激活项(激活项:指一个具体神经元计算并输出的值)。 :权重矩阵,他控制从第j层到第j+1层。

更一般地,如果一个网络在第j层有个单元,在j+1层有S_(j+1)个单元,那么矩阵,即控制第j层到第j+1层映射的矩阵,它的维度为S_(j+1)*(S_j+1)。

Example: 计算向量化

Add 这又叫前向传播算法:依次计算激活项,从输入层到隐藏层再到输出层。

litduck commented 2 years ago

拟合神经网络参数的代价函数

一个学习算法,它能在给定训练集,为神经网络拟合参数。

神经网络在分类问题的应用: 有m组训练样本, 一共分为4层 L :神经网络的总层数 :第L层的单元数,即神经元的数量(不包括第L层的偏差单元)

两种分类问题 1. Binary classification(二元分类) y = 0 or 1 有一个输出单元

如果有多个输出单元,但是是二元分类问题的话,就会只有一个输出单元,也就是计算出来的。同时神经网络的输出结果会是一个实数, 在这种情况下: 是输出单元的个数 (L代表最后一层的序号) 简化:K=1(K表示输出层的单元数目)

2. _Multiclass classification 多类别分类问题(K classes) E.g.

有K个不同的类 K个输出单元

Neural network: ( i:选择输出神经网络输出向量中的第i个元素)

注:θ(ji)中的ji是角标,S(l+1)中的l+1也是角标

:K个输出单元之和,如果在神经网络的最后一层有K个输出单元,那么这个求和项就为求K等于从1到K 的每一个逻辑回归算法的代价函数,然后按四次输出的额顺序依次把这些代价函数加起来。

把第K个输出单位的值和的值的大小作比较。 的值就是这些向量中表示其应属于哪个类的量。

litduck commented 2 years ago

反向传播算法

need to compute: - -

为计算导数项,将采用一种叫做反向传播算法(Backpropagation) :代表了第l层的第j个结点的误差

反向传播法这个名字源于我们从输出层开始计算项,然后返回上一层计算第三隐藏层的项,接着我们再往前一步计算第二隐藏层。所以我们是类似于把输出层的误差反向传播给了第3层,然后再传到第二层,这就是反向传播的意思。

(ignore if =0)

Traning set Set (for all l, i, j) For i= 1 to m set Perform forward propagation to compute for l=2, 3, 4, ..., L Using , compute Compute

(向量化:

if j !=0 if j=0