当前位置: 首页 > news >正文

【AI学习笔记】初学机器学习西瓜书概要记录(二)常用的机器学习方法篇

初学机器学习西瓜书的概要记录(一)机器学习基础知识篇(已完结)
初学机器学习西瓜书的概要记录(二)常用的机器学习方法篇(持续更新)
初学机器学习西瓜书的概要记录(三)进阶知识篇(待更)

文字公式撰写不易,随意学习,转载请注明!谢谢

(二)常用的机器学习方法篇

  • 4.1 决策树的基本流程
  • 4.2 信息增益划分
  • 4.3 其他属性的划分准则
  • 4.4 决策树剪枝
  • 4.5 缺失值的处理
  • 5.1 支持向量机基本型
  • 5.2 对偶问与解的特性
  • 5.3 求解方法(SMO)
  • 5.4 特征空间映射
  • 5.5 核函数
  • 5.6 如何使用SVM
  • 6.1 神经网络模型
  • 6.2 万有逼近性
  • 6.3 BP算法推导

以下内容出自周志华老师亲讲西瓜书

4.1 决策树的基本流程

决策树基于“树”结构进行决策

  • 每个内部结点对应某个属性上的测试
  • 每个分支对应于该测试的一种可能结果(即该属性的某个取值)
  • 每个叶结点对应于一个预测结果
    在这里插入图片描述

学习过程:通过对训练样本的分析来确定“划分属性”(即内部结点所对应的属性)
预测过程:将测试示例从跟结点开始,沿着划分属性所构成的“判定测试序列”下行,直到叶结点
策略:分而治之,自根至叶的递归过程,在每个中间结点寻找一个"划分"属性

对当前某个结点进行划分时,确定递归停止的三种条件:

  • 当前结点包含的样本全属于同一类别,无需划分;
  • 当前属性集为空,或是所以样本在所有属性上取值相同,无法划分;
  • 当前结点包含的样本集为空,不能划分。
    在这里插入图片描述

4.2 信息增益划分

决策树的提出是收到信息论的启发,因此很多东西是以信息论的准测进行判断,而在信息论中最重要的一个量就是“熵”
信息熵是度量样本集合“纯度”最常用的一种指标,假定当前样本集合 D D D 中第 k k k 类样本所占的比例为 p k p_k pk,则 D D D 的信息熵定义为
E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k l o g 2 p k Ent(D)=-\sum^{|y|}_{k=1}p_klog_2p_k Ent(D)=k=1ypklog2pk
计算信息熵时约定:若 p = 0 p=0 p=0,则 p l o g 2 p = 0 plog_2p=0 plog2p=0
E n t ( D ) Ent(D) Ent(D) 的值越小,则 D D D 的纯度越高, E n t ( D ) Ent(D) Ent(D) 的最小值为 0,最大值为 l o g 2 ∣ y ∣ log_2{|y|} log2y
信息增益直接以信息熵为基础,计算当前划分对信息熵所造成的变化

离散属性 a a a 的取值: { a 1 , a 2 , . . . , a V } \{a^1,a^2,...,a^V\} {a1,a2,...,aV}
D v D^v Dv D D D a a a 上取值 = a v =a^v =av的样本集合
以属性 a a a 对数据集 D D D 进行划分所获得的新增增益为:
G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D,a)=Ent(D) - \sum_{v=1}^V{|D^v|\over |D|}Ent(D^v) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)
其中:
E n t ( D ) Ent(D) Ent(D) 为划分前的信息熵
∣ D v ∣ ∣ D ∣ {|D^v|\over |D|} DDv 为第 v v v个分支的权重,样本越多越重要
E n t ( D v ) Ent(D^v) Ent(Dv) 为划分后的信息熵

4.3 其他属性的划分准则

信息增益如果只考虑了信息量的获得,一定程度上偏好了分支多的属性,因为分支越多,分到分支上样本数量就会越少。

信息增益:可对取值数目较多的属性有所偏好,有明显弱电,例如:考虑将“编号”作为一个属性
增益率:
G a i n r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) 其中 I V ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ l o g 2 ∣ D v ∣ ∣ D ∣ Gain_ratio(D,a)={Gain(D,a)\over IV(a)} \\ 其中 IV(a)=-\sum^V_{v=1}{|D^v|\over |D|} log_2{|D^v|\over |D|} Gainratio(D,a)=IV(a)Gain(D,a)其中IV(a)=v=1VDDvlog2DDv
其中 a a a 的可能取值数目越多(即 V V V 越大),则 I V ( a ) IV(a) IV(a) 的值通常即越大

启发式:先从候选划分属性中找出信息增益高于平均水平的,再从中选取增益率最高的

没有办法对信息增益和增益率做绝对正确的权衡,但对于分支多的情况被解决了,像上式这种情况叫做规范化。归一化是规范化的特殊形式,更多情况下规范化是将不可比较的东西变得可比较。

基尼指数(Gini index)
反应了从D中随机抽取两个样例,其类别标记不一致的概率

在多个类别 y y y 中,抽取样例某一个类 k k k 的概率为为 p k p_k pk ,再抽取样例为另一个类 k ′ ≠ k k' \not= k k=k 的概率为 p k ′ p_k' pk,如果这两个概率相乘很大,则证明这个集合 D D D 中不太“干净”
G i n i ( D ) = ∑ k = 1 ∣ y ∣ ∑ k ′ ≠ k p k p k ′ = 1 − ∑ k = 1 ∣ y ∣ p k 2 Gini(D)=\sum^{|y|}_{k=1}\sum_{k' \not= k}p_kp_k'=1-\sum^{|y|}_{k=1}p^2_k Gini(D)=k=1yk=kpkpk=1k=1ypk2
G i n i ( D ) Gini(D) Gini(D) 越小,数据集 D D D 的纯度越高

属性 a a a 的基尼指数: G i n i i n d e x ( D , a ) = ∑ v = 1 V G i n i ( D v ) Gini_index(D,a)=\sum^V_{v=1}Gini(D^v) Giniindex(D,a)=v=1VGini(Dv)
在候选属性集合中,选取那个使划分后基尼指数最小的属性(CART算法中使用)

关键是如何去衡量,经过一个操作后,后面的东西比原来更“纯净”!

4.4 决策树剪枝

划分选择 vs. 剪枝
研究表明:划分选择的各种准则虽然对决策树的尺寸有较大影响,但对泛化性能的影响很有限
例如信息增益与基尼指数产生的结果,仅在约2%的情况下不同,剪枝方法和程度对决策树泛化性能的影响更显著,在数据带噪声时甚至可能将泛化性能提升25%

剪枝是决策树对付“过拟合”的主要手段

现阶段,在单决策树时,一定是需要剪枝的

为了尽可能正确分类训练样本,有可能造成分支过多(过拟合),可通过主动去掉一些分支来降低过拟合的风险

基本策略:

  • 预剪枝:提前终止某些分支的生长
  • 后剪枝:生成一颗完全树,再“回头”剪枝

剪枝过程中需评估剪枝前后决策树的优劣(详情见模型的评估)

4.5 缺失值的处理

现实生活中,经常会遇到属性值“缺失”现象,仅使用无缺失的样例? 是对数据的极大浪费

使用待缺失值的样例,需解决:

  1. 如何进行划分属性选择?
  2. 给定划分属性,若样本在该属性上的值缺失,如何进行划分?

基本思路:样本赋权,权重划分

5.1 支持向量机基本型

在这里插入图片描述

离正类和负类距离差不多的最好!

间隔与支持向量
在这里插入图片描述最大间隔:寻找参数 w w w b b b,使得 γ \gamma γ 最大
a r g m a x w , b 2 ∣ ∣ w ∣ ∣ s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . . , m \underset{w,b}{argmax}{2\over ||w||} \\ s.t. \quad y_i(w^Tx_i+b)\geq1,i=1,2,...,m w,bargmax∣∣w∣∣2s.t.yi(wTxi+b)1,i=1,2,...,m

a r g m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . . , m \underset{w,b}{argmin}{1\over2} ||w||^2 \\ s.t. \quad y_i(w^Tx_i+b)\geq1,i=1,2,...,m w,bargmin21∣∣w2s.t.yi(wTxi+b)1,i=1,2,...,m
凸二次规划问题,能用优化计算包求解,但可以有更有效的办法(拉格朗日乘子法)

5.2 对偶问与解的特性

对偶问题
拉格朗日乘子法
第一步:引入拉格朗日乘子 a i ≥ 0 a_i \geq0 ai0得到拉格朗日函数
L ( w , b , a ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m a i ( 1 − y i ( w T x i + b ) ) L(w,b,a)={1\over 2}||w||^2+\sum^m_{i=1}a_i(1-y_i(w^Tx_i+b)) L(w,b,a)=21∣∣w2+i=1mai(1yi(wTxi+b))
第二步:令 L ( w , b , a ) L(w,b,a) L(w,b,a) w w w b b b 求偏导为零可得
w = ∑ i = 1 m a i y i x i , 0 = ∑ i = 1 m a i y i w=\sum^m_{i=1}a_iy_ix_i,0=\sum^m_{i=1}a_iy_i w=i=1maiyixi,0=i=1maiyi
对偶问题:对偶问题得到的最小值,是原目标函数下界,需要求该最小值在原目标函数的最大值
第三步:回代可得
m a x a = ∑ i = 1 m a i − 1 2 ∑ i = 1 m ∑ j = 1 m a i a j y i y j x i T x j s . t . ∑ i = 1 m a i y i = 0 , a i ≥ 0 , i = 1 , 2 , . . . , m \underset{a}{max}=\sum^m_{i=1}a_i-{1\over 2}\sum^m_{i=1}\sum^m_{j=1}a_ia_jy_iy_jx_i^Tx_j \\ s.t. \quad \sum^m_{i=1}a_iy_i=0,a_i\geq0,i=1,2,...,m amax=i=1mai21i=1mj=1maiajyiyjxiTxjs.t.i=1maiyi=0,ai0,i=1,2,...,m

解的特性
最终模型
f ( x ) = w T x + b = ∑ i = 1 m a i y i x i T x j + b f(x)=w^Tx+b=\sum_{i=1}^ma_iy_ix_i^Tx_j+b f(x)=wTx+b=i=1maiyixiTxj+b
KKT条件:

{ a i ≥ 0 ; 1 − y i f ( x i ) ≤ 0 ; a i ( 1 − y i f ( x i ) ) = 0 \begin{cases} a_i\geq0; & \\ 1-y_if(x_i)\leq0;\\ a_i(1-y_if(x_i)) = 0\\ \end{cases} ai0;1yif(xi)0;ai(1yif(xi))=0
必有 a i = 0 a_i=0 ai=0 y i f ( x i ) = 1 y_if(x_i)=1 yif(xi)=1

解的稀疏性:训练完成后,最终模型仅于支持向量有关,支持向量机因此而得名

5.3 求解方法(SMO)

基本思路:不断执行如下两个步骤直至收敛

  • 第一步:选取一对需更新的变量 a i a_i ai a j a_j aj
  • 第二步:固定 a i a_i ai a j a_j aj 以外的参数,求解对偶问题更新 a i a_i ai a j a_j aj ,仅考虑 a i a_i ai a j a_j aj 时,对偶问题的约束 0 = ∑ i = 1 m a i y i 0=\sum^m_{i=1}a_iy_i 0=i=1maiyi,变为
    a i y i + a j y j = c , a i ≥ 0 , a j ≥ 0 a_iy_i+a_jy_j=c,a_i \geq0,a_j\geq 0 aiyi+ajyj=c,ai0,aj0
    a i a_i ai 表示 a j a_j aj 代入对偶问题
    m a x a = ∑ i = 1 m a i − 1 2 ∑ i = 1 m ∑ j = 1 m a i a j y i y j x i T x j \underset{a}{max}=\sum^m_{i=1}a_i-{1\over 2}\sum^m_{i=1}\sum^m_{j=1}a_ia_jy_iy_jx_i^Tx_j amax=i=1mai21i=1mj=1maiajyiyjxiTxj
    有闭式解,对任意支持向量 ( x s , y s ) (x_s,y_s) (xs,ys) y s f ( x s ) = 1 y_sf(x_s)=1 ysf(xs)=1,由此可解出 b b b

找最初两个点时,先把违背 KKT 条件最多的点找出来,理论上第二个点也是寻找违背KKT条件最多的点,但是计算量太大,因此第二个点找离它间隔最远的点,为提高鲁棒性,通常使用所有支持向量求解的平均值

5.4 特征空间映射

若不存在一个能正确划分两类样本的超平面,怎么办?
将样本从原始空间映射到一个更高维的特征空间,使样本在这个特征空间内线性可分
在这里插入图片描述
如果原始空间是有限维(属性数有限),那么一定存在一个高维特征空间使样本线性可分

设样本 x x x 映射后的向量为 ϕ ( x ) \phi(x) ϕ(x) ,划分超平面 f ( x ) = w T ϕ ( x ) + b f(x)=w^T\phi(x)+b f(x)=wTϕ(x)+b
原始问题:
a r g m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w T ϕ ( x i ) + b ) ≥ 1 , i = 1 , 2 , . . . , m \underset{w,b}{argmin}{1\over2} ||w||^2 \\ s.t. \quad y_i(w^T\phi(x_i)+b)\geq1,i=1,2,...,m w,bargmin21∣∣w2s.t.yi(wTϕ(xi)+b)1,i=1,2,...,m
对偶问题:
m a x a = ∑ i = 1 m a i − 1 2 ∑ i = 1 m ∑ j = 1 m a i a j y i y j ϕ ( x i ) T ϕ ( x j ) s . t . ∑ i = 1 m a i y i = 0 , a i ≥ 0 , i = 1 , 2 , . . . , m \underset{a}{max}=\sum^m_{i=1}a_i-{1\over 2}\sum^m_{i=1}\sum^m_{j=1}a_ia_jy_iy_j\phi(x_i)^T\phi(x_j) \\ s.t. \quad \sum^m_{i=1}a_iy_i=0,a_i\geq0,i=1,2,...,m amax=i=1mai21i=1mj=1maiajyiyjϕ(xi)Tϕ(xj)s.t.i=1maiyi=0,ai0,i=1,2,...,m
有一个计算上的问题,原来的 x x x 是一个低维的,而现在的 ϕ ( x ) \phi(x) ϕ(x) 是一个非常高维的,甚至可能是无限维,计算两个高维向量的内积代价巨大。
预测:
f ( x ) = w T ϕ ( x ) + b = ∑ i = 1 m a i y i ϕ ( x i ) T ϕ ( x j ) + b f(x)=w^T\phi(x)+b=\sum_{i=1}^ma_iy_i\phi(x_i)^T\phi(x_j)+b f(x)=wTϕ(x)+b=i=1maiyiϕ(xi)Tϕ(xj)+b
观察发现 ϕ ( x i ) T ϕ ( x ) \phi(x_i)^T\phi(x) ϕ(xi)Tϕ(x)只以内积的形式出现,因此可以通过另一种东西去代替(核函数)。

5.5 核函数

基本思路:
κ ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) \kappa(x_i,x_j)=\phi(x_i)^T\phi(x_j) κ(xi,xj)=ϕ(xi)Tϕ(xj)
绕过显式考虑特征映射、以及计算高维内积的困难

Mercer定理:若一个对称函数所对应的核矩阵半正定,则它能作为核函数来使用
半正定矩阵,是正定矩阵的推广。实对称矩阵A称为半正定的,如果二次型 X ′ A X X'AX XAX半正定,即对于任意不为 0 0 0的实列向量 X X X 都有 X ′ A X ≥ 0 都有X'AX≥0 都有XAX0

任何一个核函数,都隐式地定义了一个 R K H S RKHS RKHS(再生核希尔伯特空间)

核函数选择 成为决定支持向量机性能的关键!

5.6 如何使用SVM

以回归学习为例

分类和回归的区别在于输出变量的类型。
定量输出称为回归,或者说是连续变量预测;
定性输出称为分类,或者说是离散变量预测。

基本思路:运行模型输出与实际输出间存在 2 ϵ 2\epsilon 2ϵ 的差别
在这里插入图片描述
落入 2 ϵ 2\epsilon 2ϵ 间的不计算损失
在这里插入图片描述
原始问题:
a r g m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m ( ξ i + ξ ^ i ) s . t . f ( x i ) − y i ≤ ϵ + ξ ^ i , y i − f ( x i ) ≤ ϵ + ξ ^ i , ξ i ≥ 0 , ξ ^ i ≥ 0 , i = 1 , 2 , . . . , m \underset{w,b}{argmin}{1\over2} ||w||^2 +C\sum^m_{i=1}(\xi_i+\hat\xi_i) \\ s.t. \quad f(x_i)-y_i\leq \epsilon+\hat\xi_i,\\ \quad \quad y_i-f(x_i) \leq \epsilon+\hat\xi_i,\\ \xi_i\geq 0, \hat\xi_i\geq 0, i=1,2,...,m w,bargmin21∣∣w2+Ci=1m(ξi+ξ^i)s.t.f(xi)yiϵ+ξ^i,yif(xi)ϵ+ξ^i,ξi0,ξ^i0,i=1,2,...,m
对偶问题:
m a x a = ∑ i = 1 m y i ( a ^ i − a i ) − ϵ ( a ^ i + a i ) − 1 2 ∑ i = 1 m ∑ j = 1 m ( a ^ i − a i ) ( a ^ j − a j ) x i T x j s . t . ∑ i = 1 m ( a ^ i − a i ) = 0 , 0 ≤ a i , a ^ i ≤ C \underset{a}{max}=\sum^m_{i=1}y_i(\hat a_i-a_i)-\epsilon(\hat a_i+a_i)-{1\over 2}\sum^m_{i=1}\sum^m_{j=1}(\hat a_i-a_i)(\hat a_j-a_j)x_i^Tx_j\\ s.t. \quad \sum^m_{i=1}(\hat a_i-a_i)=0,0\leq a_i,\hat a_i\leq C amax=i=1myi(a^iai)ϵ(a^i+ai)21i=1mj=1m(a^iai)(a^jaj)xiTxjs.t.i=1m(a^iai)=0,0ai,a^iC

预测:
f ( x ) = ∑ i = 1 m ( a ^ i − a i ) x i T x + b f(x)=\sum_{i=1}^m(\hat a_i-a_i)x_i^Tx+b f(x)=i=1m(a^iai)xiTx+b

6.1 神经网络模型

什么是神经网络:

  • 神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应
  • 神经网络是一个很大的学科领域,本课程仅讨论神经网络与机器学习的交集,即“神经网络学习”亦称"连接主义"学习
    在这里插入图片描述

神经元的“激活函数”

  • 理想激活函数是阶跃函数,0表示抑制神经元而1表示激活神经元
  • 阶跃函数具有不联系、不光滑等不好的性质,常用的是 Sigmoid 函数

在这里插入图片描述

多层前馈网络结构
多层网络:包含隐层的网络
前馈网络:神经元之间不存在同层连接也不存在跨层连接
在这里插入图片描述

隐层和输出层神经元亦称“功能单元”
多层前馈网络具有强大的表示能力(“万有逼近性”)

6.2 万有逼近性

仅需一个包含足够多神经元的隐层,多层前馈神经网络就能以任意精度逼近任意复杂度的连续函数。

但是,如何设置隐层神经元数是未决问题,实际常用“试错法”

6.3 BP算法推导

BP(BackPropagation)误差逆传播算法

给定训练集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . ( x m , y m ) } , x i ∈ R d , y i ∈ R l D=\{(x_1,y_1),(x_2,y_2),...(x_m,y_m)\}, x_i\in \mathbb{R^d}, y_i\in \mathbb{R^l} D={(x1,y1),(x2,y2),...(xm,ym)},xiRd,yiRl
输入: d d d 维特征向量
输出: l l l 个输出值
隐层:假定使用 q q q 个隐层神经元
假定功能函数均使用 Sigmoid 函数
在这里插入图片描述
对于训练例 ( x k , y k ) (x_k,y_k) (xk,yk),假定网络的实际输出为 y ^ k = ( y ^ 1 k , y ^ 2 k , . . . y ^ l k ) \hat y_k=(\hat y_1^k,\hat y_2^k,...\hat y_l^k) y^k=(y^1k,y^2k,...y^lk)
y ^ j k = f ( β j − θ j ) \hat y^k_j=f(\beta_j-\theta_j) y^jk=f(βjθj)其中 j j j 表示第 j j j 个神经元,而 k k k 为在第 k k k 个样例上, θ \theta θ 为输出层阈值
则网络在 ( x k , y k ) (x_k,y_k) (xk,yk) 上的均方误差为:
E k = 1 2 ∑ j = 1 l ( y ^ j k − y j k ) 2 E_k={1\over 2}\sum^l_{j=1}(\hat y^k_j -y^k_j)^2 Ek=21j=1l(y^jkyjk)2 需要通过学习确定的参数数目: ( d + l + 1 ) q + l (d+l+1)q+l (d+l+1)q+l
输出层 → \rightarrow 隐层: d × q d\times q d×q 连接权
隐层 → \rightarrow 输出层: q × l q\times l q×l 连接权
功能神经元拥有自己的阈值,隐层有 q q q 个阈值,输出层有 l l l 个阈值

BP算法是一个迭代学习算法,在迭代的每一轮中采用广义感知机学习规则
v ← v + Δ v v \leftarrow v+\Delta v vv+Δv
BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整,以 w h j w_{hj} whj为例
对误差 E k E_k Ek,给定学习率 η \eta η,有:
Δ w h j = − η ∂ E k ∂ w h j \Delta w_{hj}=-\eta{\partial E_k \over\partial w_{hj}} Δwhj=ηwhjEk注意到 w h j w_{hj} whj 先影响到 β j \beta_j βj,再影响到 y ^ j k \hat y^k_j y^jk,然后才影响到 E k E_k Ek,有:
∂ E k ∂ w h j = ∂ E k ∂ y ^ j k ∂ y ^ j k ∂ β j ∂ β j ∂ w h j {\partial E_k \over\partial w_{hj}}={\partial E_k \over\partial \hat y^k_j}{\partial \hat y^k_j \over\partial \beta_j}{\partial \beta_j \over\partial w_{hj}} whjEk=y^jkEkβjy^jkwhjβj
其中 y ^ j k = f ( β j − θ j ) \hat y^k_j=f(\beta_j - \theta_j) y^jk=f(βjθj),对 s i g m o i d ( x ) = 1 1 + e − x sigmoid(x) ={1\over 1+e^{-x}} sigmoid(x)=1+ex1,有 f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f'(x)=f(x)(1-f(x)) f(x)=f(x)(1f(x)),因此 ∂ y ^ j k ∂ β j = f ′ ( β j − θ j ) = y ^ j k ( 1 − y ^ j k ) {\partial \hat y^k_j \over\partial \beta_j}=f'(\beta_j-\theta_j)=\hat y^k_j(1-\hat y^k_j) βjy^jk=f(βjθj)=y^jk(1y^jk)
∂ E k ∂ w h j = ( y ^ j k − y j k ) ⋅ y ^ j k ( 1 − y ^ j k ) ⋅ b h {\partial E_k \over\partial w_{hj}}=(\hat y^k_j-y^k_j)\cdot \hat y^k_j(1-\hat y^k_j)\cdot b_h whjEk=(y^jkyjk)y^jk(1y^jk)bh
g i = − ∂ E k ∂ y ^ j k ∂ y ^ j k ∂ β j = y ^ j k ( 1 − y ^ j k ) ( y j k − y ^ j k ) g_i=-{\partial E_k \over\partial \hat y^k_j}{\partial \hat y^k_j \over\partial \beta_j}=\hat y^k_j(1-\hat y^k_j)( y^k_j -\hat y^k_j ) gi=y^jkEkβjy^jk=y^jk(1y^jk)(yjky^jk)
于是:
Δ w h j = − η ∂ E k ∂ w h j = η g i b h \Delta w_{hj}=-\eta{\partial E_k \over\partial w_{hj}}=\eta g_ib_h Δwhj=ηwhjEk=ηgibh类似地,有:
Δ θ j = − η g j Δ v i h = η e h x i Δ γ h = − η e h \Delta \theta_j=-\eta g_j \\ \Delta v_{ih}=\eta e_hx_i \\ \Delta \gamma_h=-\eta e_h Δθj=ηgjΔvih=ηehxiΔγh=ηeh
其中:
e h = − ∂ E k ∂ b h ⋅ ∂ b h ∂ a h = b h ( 1 − b h ) ∑ j = 1 l w h j g j e_h=-{\partial E_k\over \partial b_h}\cdot{\partial b_h \over \partial a_h}\\=b_h(1-b_h)\sum^l_{j=1}w_{hj}g_j eh=bhEkahbh=bh(1bh)j=1lwhjgj
学习率 η ∈ ( 0 , 1 ) \eta \in(0,1) η(0,1),不能太大、也不能太小

相关文章:

【AI学习笔记】初学机器学习西瓜书概要记录(二)常用的机器学习方法篇

初学机器学习西瓜书的概要记录(一)机器学习基础知识篇(已完结) 初学机器学习西瓜书的概要记录(二)常用的机器学习方法篇(持续更新) 初学机器学习西瓜书的概要记录(三)进阶知识篇(待更) 文字公式撰写不易&am…...

[SDX35+WCN6856]SDX35 + WCN6856 默认增加打包wifi配置hostapd_24g.conf和hostapd_5g.conf操作方法

SDX35 SDX35介绍 SDX35设备是一种多模调制解调器芯片,支持 4G/5G sub-6 技术。它是一个4nm芯片专为实现卓越的性能和能效而设计。它包括一个 1.9 GHz Cortex-A7 应用处理器。 SDX35主要特性 ■ 3GPP Rel. 17 with 5G Reduced Capability (RedCap) support. Backward compati…...

【iOS】OC高级编程 iOS多线程与内存管理阅读笔记——自动引用计数

文章目录 什么是自动引用计数 内存管理/引用计数 概要 内存管理的思考方式 自己生成的对象,自己所持有 非自己生成的对象,自己也能持有 不再需要自己持有的对象时释放 无法释放非自己持有的对象 什么是自动引用计数 自动引用计数(AR…...

网络安全-LD_PRELOAD,请求劫持

目录 一、环境 二、开始做题 三、总结原理 四、如何防护 一、环境 我们这里用蚁剑自带的靶场第一关来解释 docker制作一下即可 二、开始做题 首先环境内很明显给我们已经写好了webshell 同样我们也可以访问到 我们使用这个蚁剑把这个webshell连上 我们发现命令不能执行&am…...

GO入门之值传递于引用(指针、内存地址)传递扫盲

GO入门之值传递于引用(指针、内存地址)传递扫盲 Go 语言中,值传递和引用(指针)传递是两个关键的概念。通过案例可以很好地展示两者的区别。 值传递与引用传递的区别: 值传递:传递的是变量的副…...

【渗透测试】-vulnhub源码框架漏洞-Os-hackNos-1

vulnhub源码框架漏洞中的CVE-2018-7600-Drupal 7.57 文章目录  前言 1.靶场搭建: 2.信息搜集: 主机探测: 端口扫描: 目录扫描: 3.分析: 4.步骤: 1.下载CVE-2018-7600的exp 2.执行exp: 3.写入木…...

sqli-lab靶场学习(三)——Less8-10(盲注、时间盲注)

Less8 第八关依然是先看一般状态 http://localhost/sqli-labs/Less-8/?id1 然后用单引号闭合: http://localhost/sqli-labs/Less-8/?id1 这关的问题在于报错是不显示,那没办法通过上篇文章的updatexml大法处理。对于这种情况,需要用“盲…...

Pybullet 安装过程

Pybullet 安装过程(windows) 1. 安装C编译工具2. 安装Pybullet 1. 安装C编译工具 pybullet 需要C编译套件,直接装之前检查下,要不会报缺少某版本MVSC的error,最好的方式是直接下载visual studio,直接按默认…...

Error when custom data is added to Azure OpenAI Service Deployment

题意:在向 Azure OpenAI 服务部署添加自定义数据时出现错误。 问题背景: I receive the following error when adding my custom data which is a .txt file (it doesnt matter whether I add it via Azure Cognitive Search, Azure Blob Storage, or F…...

libreoffice word转pdf

一、准备一个word文件 运行: cd /root libreoffice --headless --convert-to pdf --outdir /root/output doc1.docx 发现中文乱码: 此时我们需要给linux 上添加中文字体: centos7 添加中文字体 再次运行正常: libreoffice --h…...

java -----泛型

泛型的理解和好处 泛型是在JDK5之后引入的一个新特性&#xff0c;可以在编译阶段约束操作的数据类型&#xff0c;并进行检查。 泛型的格式为 <数据类型> import java.util.ArrayList;SuppressWarnings({"all"}) public class Generic02 {public static void…...

Springboot 文件上传下载相关问题

文章目录 关于Springboot 文件上传下载问题解决方案注意事项文件上传文件下载文件删除文件在线打开在写练习的时候&#xff0c;发现了一些小小的问题&#xff0c;已经在 上述代码中体现。① 代码路径碰到中文的时候&#xff0c;会有乱码&#xff0c;需要转换&#xff08;内容中…...

【Kotlin 与 Java 互操作】Java中调用带有默认值的Kotlin函数(十四)

导读大纲 1.0.1 Java 没有默认参数值的概念1.0.2 使用 JvmOverloads 来简化调用 1.0.1 Java 没有默认参数值的概念 因此当从 Java 调用带有默认参数值的 Kotlin 函数时 1. 必须明确指定所有参数值 fun <T> joinToString(collection: Collection<T>,separator: St…...

点赞系统实现

点赞功能是社交、电商等几乎所有的互联网项目中都广泛使用。虽然看起来简单&#xff0c;不过蕴含的技术方案和手段还是比较多的。 下面将分享之前做的判题OJ系统的点赞系统的思路。 1.需求分析 点赞功能与其它功能不同&#xff0c;没有复杂的原型和需求&#xff0c;仅仅是一…...

c++进阶学习-----继承

1.继承的概念及定义 1.1继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。 继承呈现了面向对象 程序设计的…...

C++学习笔记(37)

302、makefile 在实际开发中&#xff0c;项目的源代码文件比较多&#xff0c;按类型、功能、模块分别存放在不同的目录和文件中&#xff0c;哪 些文件需要先编译&#xff0c;那些文件后编译&#xff0c;那些文件需要重新编译&#xff0c;还有更多更复杂的操作。 make 是一个强大…...

Redis发布和订阅

Redis 发布订阅 (pub/sub) 是一种消息通信模式&#xff1a;发送者 (pub) 发送消息&#xff0c;订阅者(sub) 接收消息 可以实现进程间的消息传递。这种模式非常适用于实时消息传递、事件通知和消息分发等场景 Redis可以实现消息中间件MQ的功能&#xff0c;通过发布订阅实现消息…...

计算机毕设设计推荐-基于python+Djanog大数据的电影数据可视化分析

精彩专栏推荐订阅&#xff1a;在下方主页&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f496;&#x1f525;作者主页&#xff1a;计算机毕设木哥&#x1f525; &#x1f496; 文章目录 一、电影数据可视…...

dhtmlxGantt 甘特图 一行展示多条任务类型

效果如图: 后台拿到数据 处理之后如图: 含义: 如上图所示, 如果一行需要展示多个 需要给父数据的那条添加render:split属性, 子数据的parent为父数据的Id即可 切记 父数据的id 别为0 为0 时 会出现错乱 因为有些小伙伴提出分段展示的数据结构还是有点问题,下面展示一个完整…...

COLORmap

在这段MATLAB代码中&#xff0c;surf(peaks)、map的定义以及colormap(map)的调用共同完成了以下任务&#xff1a; 1. **绘制曲面图**&#xff1a; - surf(peaks)&#xff1a;这个函数调用了MATLAB内置的peaks函数来生成数据&#xff0c;并使用surf函数将这些数据绘制成一个…...

手机在网状态查询接口如何用Java进行调用?

一、什么是手机在网状态查询接口&#xff1f; 手机在网状态查询接口&#xff0c;又叫运营商在网状态查询&#xff0c;手机号在网状态查询&#xff0c;传入手机号码&#xff0c;查询该手机号的在网状态&#xff0c;返回内容有正常使用、停机、在网但不可用、不在网&#xff08;…...

mysql性能优化- 数据库配置优化

MySQL 性能优化 - 数据库配置优化 MySQL 是一个广泛使用的关系型数据库管理系统&#xff0c;但随着数据量的增长和访问频率的提高&#xff0c;其性能可能会成为瓶颈。为了保持高效的性能&#xff0c;除了应用层的查询优化和索引优化之外&#xff0c;数据库配置优化 也是非常重…...

(算法)大数的进制转换

题目描述 将一个长度最多为30位数字的十进制非负整数转换为二进制数输出输入描述: 多组数据&#xff0c;每行为一个长度不超过30位的十进制非负整数。 &#xff08;注意是10进制数字的个数可能有30个&#xff0c;而非30bits的整数&#xff09;解析 例子 &#xff1a;123&…...

演示jvm锁存在的问题

文章目录 1、AlbumInfoApiController --》testLock()2、redis添加键值对3、AlbumInfoServiceImpl --》testLock() 没有加锁4、使用ab工具测试4.1、安装 ab 工具4.2、查看 redis 中的值 5、添加本地锁 synchronized6、集群情况下问题演示 jvm锁&#xff1a;synchronized lock 只…...

Android SharedPreference详解

Android SharedPreference详解 SharedPreferences作为一种数据持久化的方式&#xff0c;是处理简单的key-value类型数据时的首选。 一般用法: //demo是该sharedpreference对应文件名,对应的是一个xml文件,里面存放key-value格式的数据. SharedPreferences sharedPreferences…...

论文阅读 | 可证安全隐写(网络空间安全科学学报 2023)

可证安全隐写&#xff1a;理论、应用与展望 一、什么是可证安全隐写&#xff1f; 对于经验安全的隐写算法&#xff0c;即使其算法设计得相当周密&#xff0c;隐写分析者&#xff08;攻击者&#xff09;在观察了足够数量的载密&#xff08;含有隐写信息的数据&#xff09;和载体…...

Arthas jvm(查看当前JVM的信息)

文章目录 二、命令列表2.1 jvm相关命令2.1.3 jvm&#xff08;查看当前JVM的信息&#xff09; 二、命令列表 2.1 jvm相关命令 2.1.3 jvm&#xff08;查看当前JVM的信息&#xff09; 基础语法&#xff1a; jvm [arthas18139]$ jvmRUNTIME …...

【c++】介绍

C是一种强大而灵活的编程语言&#xff0c;广泛用于开发各种应用程序和系统软件。它结合了C语言的高效性和面向对象编程的特性&#xff0c;为程序员提供了丰富的工具和功能&#xff0c;以满足各种编程需求。 C的历史可以追溯到上世纪80年代&#xff0c;最初由丹尼斯里奇和贝尔实…...

JavaScript typeof与instanceof的区别

typeof 和 instanceof 都是 JavaScript 中的运算符&#xff0c;用于检查数据类型或对象的类型。它们有不同的用途和适用场景&#xff1a; 1. typeof 作用&#xff1a;返回变量的数据类型&#xff0c;适用于原始数据类型&#xff08;如 number、string、boolean 等&#xff09…...

C++11 可变的模板参数

前言 本期我们接着继续介绍C11的新特性&#xff0c;本期我们介绍的这个新特性是很多人都感觉抽象的语法&#xff01;它就是可变的模板参数&#xff01; 目录 前言 一、可变的模板参数 1.1可变的参数列表 1.2可变的参数包 1.3可变参数包的解析 • 递归展开解析 • 逗号…...