赞
踩
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
t + ϵ ∗ g t △θ\_t=−\frac{η}{\sqrt{n\_t+ϵ}}\*g\_t △θt=−nt+ϵ η∗gt
Adam:本质上是带有动量项的RMSprop,结合了两者的优点,可以为不同的参数计算不同的自适应学习率,实践中常用。
t
=
μ
m
t
−
1
(
1
−
μ
)
g
t
m_t=μm_{t−1}+(1−μ)g_t
mt=μmt−1+(1−μ)gt
t
=
ν
n
t
−
1
(
1
−
ν
)
g
t
2
n_t=νn_{t−1}+(1−ν)g_t^2
nt=νnt−1+(1−ν)gt2
^
t
=
m
t
1
−
μ
t
\hat m_t=\frac{m_t}{1−μ^t}
m^t=1−μtmt
^
t
=
n
t
1
−
ν
t
\hat n_t=\frac{n_t}{1−ν^t}
n^t=1−νtnt
θ
t
=
−
η
n
^
t
ϵ
△θ_t=-\frac{η}{\sqrt{\hat n_t+ϵ}}
△θt=−n^t+ϵ
η
AdamW:Adam的变种,主要用于解决权重衰减(weight decay)在Adam中的问题。在计算梯度更新时,将权重衰减的计算从梯度中分离出来,并将其应用于参数更新之前。使得权重衰减仅影响参数的更新方向,而不会降低参数的更新速度。优势在于更好地控制权重衰减的影响,减轻过度正则化的问题,使模型更易优化和训练。
Residual Connection跳跃连接技术,在模型中将输入信号与输出信号进行直接连接。作用:
反向传播在经过池化层的时候梯度的数量发生了变化。如2*2的池化操作,第L+1层梯度数量是L层的1/4,所以每个梯度要对应回4个梯度。
神经网络中,权重参数是给数据做线性变换,而激活函数给数据带来的非线性变换。增加某一层神经元数量是在增加线性变换的复杂性,而增加网络层数是在增加非线性变换的复杂性。理论上,浅层神经网络就能模拟任何函数,但需要巨大的数据量,而深层神经网络可以用更少的数据量来学习到更好的拟合。
过拟合是模型学习能力太强大,把部分数据的不太一般的特性都学到了,并当成了整个样本空间的特性。防过拟合方法:
L
0
L_0
L0,加入L2正则化后loss是
L
0
λ
2
n
∣
∣
W
∣
∣
2
L_0+\frac{\lambda}{2n}||W||^2
L0+2nλ∣∣W∣∣2,L的梯度是
∂
L
∂
W
=
∂
L
0
∂
W
λ
n
W
\frac{\partial{L}}{\partial{W}}=\frac{\partial{L_0}}{\partial{W}}+\frac{\lambda}{n}{W}
∂W∂L=∂W∂L0+nλW,
∂
L
∂
b
=
∂
L
0
∂
b
\frac{\partial{L}}{\partial{b}}=\frac{\partial{L_0}}{\partial{b}}
∂b∂L=∂b∂L0,可以看出,L2正则化只对W有影响,对b没有影响。而加入L2正则化后的梯度更新:
W
=
W
−
α
(
∂
L
0
∂
W
λ
n
W
)
=
(
1
−
α
λ
n
)
W
−
α
∂
L
0
∂
W
W=W-\alpha(\frac{\partial{L_0}}{\partial{W}}+\frac{\lambda}{n}{W})=(1-\frac{\alpha\lambda}{n})W-\alpha\frac{\partial{L_0}}{\partial{W}}
W=W−α(∂W∂L0+nλW)=(1−nαλ)W−α∂W∂L0,相比于原梯度更新公式,改变的是
(
1
−
2
α
λ
)
W
(1-2\alpha\lambda)W
(1−2αλ)W这里,而由于
α
、
λ
、
n
\alpha、\lambda、n
α、λ、n都是正数,所以
(
1
−
α
λ
n
)
<
1
(1-\frac{\alpha\lambda}{n})<1
(1−nαλ)<1。因此,L2正则化使得反向传播更新参数时W参数比不添加正则项更小。在过拟合中,由于对每个数据都拟合得很好,所以函数的变化在小范围内往往很剧烈,而要使函数在小范围内剧烈变化,就是要W参数值很大。L2正则化抑制了这种小范围剧烈变化,使得拟合程度“刚刚好”。
L
0
L_0
L0,加入L1正则化后loss是
L
=
L
0
λ
n
∣
W
∣
L=L_0+\frac{\lambda}{n}|W|
L=L0+nλ∣W∣, L的梯度是
∂
L
∂
W
=
∂
L
0
∂
W
λ
n
∣
W
∣
\frac{\partial{L}}{\partial{W}}=\frac{\partial{L_0}}{\partial{W}}+\frac{\lambda}{n}|W|
∂W∂L=∂W∂L0+nλ∣W∣,
∂
L
∂
b
=
∂
L
0
∂
b
\frac{\partial{L}}{\partial{b}}=\frac{\partial{L_0}}{\partial{b}}
∂b∂L=∂b∂L0, 可以看出,L1正则化只对W有影响,对b没有影响。而加入L1正则化后的梯度更新:
W
=
W
−
α
(
∂
L
0
∂
W
λ
n
∣
W
∣
)
=
W
−
λ
n
∣
W
∣
−
α
∂
L
0
∂
W
W=W-\alpha(\frac{\partial{L_0}}{\partial{W}}+\frac{\lambda}{n}{|W|})=W-\frac{\lambda}{n}|W|-\alpha\frac{\partial{L_0}}{\partial{W}}
W=W−α(∂W∂L0+nλ∣W∣)=W−nλ∣W∣−α∂W∂L0, 如果W为正,相对于原梯度就减小;如W为负,相对于原梯度就增大。所以,L1正则化使得参数W在更新时向0靠近使得参数W具有稀疏性。而权重趋近0,也就相当于减小了网络复杂度,防止过拟合。
神经网络反向传播后每一层的参数都会发生变化,在下一轮正向传播时第
l
l
l 层的输出值
Z
l
=
W
⋅
A
l
−
1
b
Zl=W\cdot{A}{l-1}+b
Zl=W⋅Al−1+b 也会发生变化,导致第
l
l
l 层的
A
l
=
r
e
l
u
(
Z
l
)
Al=relu(Zl)
Al=relu(Zl) 发生变化。而
A
l
A^l
Al 作为第
l
1
l+1
l+1 层的输入,
l
1
l+1
l+1 就需要去适应适应这种数据分布的变化,这就是神经网络难以训练的原因之一。
为此,Batch Normalization的做法是调整数据的分布来改变这一现象,具体做法如下:
m
=
b
a
t
c
h
_
s
i
z
e
m=batch\_size
m=batch_size,则:
1. 计算各个特征均值
μ = 1 m ∑ i = 1 m z i \mu=\frac{1}{m}\sum\_{i=1}^{m}z^i μ=m1∑i=1mzi,其中 z i z^i zi 表示第 i i i 条数据 2. 计算方差 σ 2 = 1 m ∑ i = 1 m ( z i − μ ) 2 \sigma^2=\frac{1}{m}\sum\_{i=1}^{m}(z^i-\mu)^2 σ2=m1∑i=1m(zi−μ)2 3. 归一化后的 Z n o r m i = z i − μ σ 2 + ϵ Z\_{norm}^i=\frac{z^i-\mu}{\sqrt{\sigma^2+\epsilon}} Znormi=σ2+ϵ zi−μ, ϵ \epsilon ϵ 表示一个极小值,防止计算出现Nan 4. 这样调整分布后能加速训练,但之前层学习到的参数信息可能会丢失,所以加入参数 γ \gamma γ、 β \beta β 调整: Z ~ i = γ Z n o r m i + β \widetilde{Z}^i=\gamma{Z\_{norm}^i}+\beta Z i=γZnormi+β
∂
L
∂
Z
n
o
r
m
i
=
∂
L
∂
Z
~
i
λ
\frac{\partial{L}}{\partial{Z_{norm}i}}=\frac{\partial{L}}{\partial{\widetilde{Z}i}}\lambda
∂Znormi∂L=∂Z
i∂Lλ
∂
L
∂
λ
=
∂
L
∂
Z
~
i
Z
n
o
r
m
i
\frac{\partial{L}}{\partial\lambda}=\frac{\partial{L}}{\partial{\widetilde{Z}i}}Z_{norm}i
∂λ∂L=∂Z
i∂LZnormi
∂
L
∂
β
=
∂
L
∂
Z
~
i
\frac{\partial{L}}{\partial\beta}=\frac{\partial{L}}{\partial{\widetilde{Z}^i}}
∂β∂L=∂Z
i∂L
∂
L
∂
σ
2
=
∂
L
∂
Z
n
o
r
m
i
∂
Z
n
o
r
m
i
∂
σ
2
=
∂
L
∂
Z
n
o
r
m
i
(
−
1
2
)
(
σ
2
ϵ
)
−
3
2
\frac{\partial{L}}{\partial\sigma2}=\frac{\partial{L}}{\partial{Z_{norm}i}}\frac{\partial{Z_{norm}i}}{\partial\sigma2}=\frac{\partial{L}}{\partial{Z_{norm}i}}(-\frac{1}{2})(\sigma2+\epsilon)^{\frac{-3}{2}}
∂σ2∂L=∂Znormi∂L∂σ2∂Znormi=∂Znormi∂L(−21)(σ2+ϵ)2−3
∂
L
∂
μ
=
∂
L
∂
Z
n
o
r
m
i
∂
Z
n
o
r
m
i
∂
μ
∂
L
∂
σ
2
∂
σ
2
∂
μ
=
∂
L
∂
Z
n
o
r
m
i
−
1
σ
2
ϵ
∂
L
∂
σ
2
−
2
∑
i
=
1
m
(
z
i
−
μ
)
m
\frac{\partial{L}}{\partial\mu}=\frac{\partial{L}}{\partial{Z_{norm}i}}\frac{\partial{Z_{norm}i}}{\partial\mu}+\frac{\partial{L}}{\partial\sigma2}\frac{\partial{\sigma2}}{\partial{\mu}}=\frac{\partial{L}}{\partial{Z_{norm}i}}\frac{-1}{\sqrt{\sigma2+\epsilon}}+\frac{\partial{L}}{\partial\sigma2}\frac{-2\sum_{i=1}{m}(z^i-\mu)}{m}
∂μ∂L=∂Znormi∂L∂μ∂Znormi+∂σ2∂L∂μ∂σ2=∂Znormi∂Lσ2+ϵ
−1+∂σ2∂Lm−2∑i=1m(zi−μ)
∂
L
∂
Z
i
=
∂
L
∂
Z
n
o
r
m
i
∂
Z
n
o
r
m
i
∂
Z
i
∂
L
∂
σ
2
∂
σ
2
∂
Z
i
∂
L
∂
μ
∂
μ
∂
Z
i
=
∂
L
∂
Z
n
o
r
m
i
1
σ
2
ϵ
∂
L
∂
σ
2
2
(
Z
i
−
μ
)
m
∂
L
∂
μ
1
m
\frac{\partial{L}}{\partial{Zi}}=\frac{\partial{L}}{\partial{Z_{norm}i}}\frac{\partial{Z_{norm}i}}{\partial{Zi}}+\frac{\partial{L}}{\partial\sigma2}\frac{\partial{\sigma2}}{\partial{Zi}}+\frac{\partial{L}}{\partial\mu}\frac{\partial\mu}{\partial{Zi}}=\frac{\partial{L}}{\partial{Z_{norm}i}}\frac{1}{\sqrt{\sigma2+\epsilon}}+\frac{\partial{L}}{\partial\sigma2}\frac{2(Zi-\mu)}{m}+\frac{\partial{L}}{\partial\mu}\frac{1}{m}
∂Zi∂L=∂Znormi∂L∂Zi∂Znormi+∂σ2∂L∂Zi∂σ2+∂μ∂L∂Zi∂μ=∂Znormi∂Lσ2+ϵ
1+∂σ2∂Lm2(Zi−μ)+∂μ∂Lm1
μ
t
e
s
t
=
E
(
μ
b
a
t
c
h
)
\mu_{test}=E(\mu_{batch})
μtest=E(μbatch)
σ
t
e
s
t
2
=
m
m
−
1
E
(
σ
b
a
t
c
h
2
)
\sigma2_{test}=\frac{m}{m-1}E(\sigma2_{batch})
σtest2=m−1mE(σbatch2)
然后计算该层的输出:
Z
~
i
=
γ
Z
t
e
s
t
i
−
μ
σ
t
e
s
t
2
ϵ
β
\widetilde{Z}i=\gamma{\frac{Zi_{test}-\mu}{\sqrt{\sigma_{test}^2+\epsilon}}}+\beta
Z
i=γσtest2+ϵ
Ztesti−μ+β
假设存在函数f(x),l是任意方向的单位向量,要现在的目的就是要找到一个l使得f(x+l)−f(x)的变化值最大。根据公式有
f
(
x
l
)
−
f
(
x
)
=
<
g
r
a
d
f
,
l
f(x+l)-f(x)=<grad_f, l>
f(x+l)−f(x)=<gradf,l>,所以原问题变为找到l使得
∣
g
r
a
d
f
∣
∗
∣
l
∣
∗
c
o
s
(
θ
)
|grad_f|*|l|*cos(\theta)
∣gradf∣∗∣l∣∗cos(θ)最大,其中θ是 l与
g
r
a
d
f
grad_f
gradf的夹角),很明显
θ
=
0
\theta=0
θ=0时该值最大,也就是说l方向就是
g
r
a
d
f
grad_f
gradf的方向,从而证明梯度方向是使得函数局布值变化最快的方向。
输入数据经过神经网络后得到的logits是一个[n, 1]向量(n表示进行n分类),此时向量中的数字可以是负无穷到正无穷的任意数字,经过softmax函数后才转换为概率。交叉熵函数形式与softmax loss函数几乎一样,当cross entropy的输入是softmax函数函数的输出时,二者就完全一样。将网络输出的预测值logit先用使用Softmax转换为预测概率值再传入 Cross Entropy Loss,就得到了最终的Softmax Loss。
P
i
=
e
i
∑
k
=
1
n
e
k
P_i=\frac{ei}{\sum_{k=1}{n}e^k}
Pi=∑k=1nekei
L
=
−
∑
i
=
1
n
y
i
l
o
g
p
i
L=-\sum_{i=1}^{n}y_ilogp_i
L=−∑i=1nyilogpi
L
=
−
∑
i
=
1
n
y
i
l
o
g
p
i
L=-\sum_{i=1}^{n}y_ilogp_i
L=−∑i=1nyilogpi
L
=
−
y
i
l
o
g
p
i
−
(
1
−
y
i
)
l
o
g
(
1
−
p
i
)
L=-y_ilogp_i-(1-y_i)log(1-p_i)
L=−yilogpi−(1−yi)log(1−pi)
RNN的优缺点:
LSTM的优缺点:
CNN中用ReLU函数能解决梯度消失的问题是因为Relu函数梯度为1,能解决梯度爆炸的问题是因为反向传播时W互不相同,它们连乘很大程度上能抵消梯度爆炸的效果;而RNN中用Relu是若干个W连乘,不能解决梯度爆炸的问题。所以想要解决RNN中的梯度消失问题,一般都是用LSTM。
一种基于自注意力机制的序列到序列(Sequence-to-Sequence)模型,用于处理NLP任务,解决长依赖问题和并行计算效率的平衡。相比于RNN模型Transformer使用全局的自注意力机制,使模型可以同时关注输入序列的所有位置,更好地捕捉长距离依赖关系。Transformer引入多头注意力机制提高了模型的表达能力。Transformer两个关键组件组成:Encoder和Decoder。编码器将输入序列编码为一系列上下文相关的表示,解码器用这些表示生成目标序列。
Transformer优点:
单词在句子中的位置以及排列顺序是非常重要的,引入词序信息有助于理解语义。循环神经网络本身就是一种顺序结构,天生就包含了词在序列中的位置信息。当抛弃循环神经网络结构,完全采用Attention取而代之,这些词序信息就会丢失,模型就没有办法知道每个词在句子中的相对和绝对的位置信息。因此有必要把词序信号加到词向量上帮助模型学习这些信息,位置编码(Positional Encoding)就是用来解决这种问题的方法。
好的位置编码方案需满足:
Transformer位置编码不是单一的一个数值,而是包含句子中特定位置信息的d维向量(非常像词向量)。编码没有整合进模型,而是用这个向量让每个词具有它在句子中的位置的信息。换句话说,通过注入词的顺序信息来增强模型输入。
把512维的向量两两一组,每组都是一个sin和一个cos,这两个函数共享同一个频率
w
i
w_i
wi,共256组,从0开始编号,最后一组编号是255。sin/cos函数的波长(由
w
i
w_i
wi决定)则从 2π 增长到 2π * 10000。位置编码性质:
Transformer学习笔记一:Positional Encoding(位置编码)
一文读懂Transformer模型的位置编码
Transformer的多头注意力看上去是借鉴了CNN中同一卷积层内使用多个卷积核的思想,原文中使用 8 个“scaled dot-product attention”,在同一“multi-head attention”层中,输入均为“KQV”,同时进行注意力的计算,彼此之前参数不共享,最终将结果拼接起来,这样可以允许模型在不同的表示子空间里学习到相关的信息。即希望每个注意力头只关注最终输出序列中一个子空间,互相独立。核心思想在于抽取到更加丰富的特征信息。如果只使用 one head 并且维度为
d
m
o
d
e
l
d_{model}
dmodel ,相较于 8 head 并且维度为
d
m
o
d
e
l
/
8
d_{model} / 8
dmodel/8,存在高维空间下学习难度较大的问题,文中实验也证实了这一点,于是将原有的高维空间转化为多个低维子空间并再最后进行拼接,取得了更好的效果,十分巧妙。
transformer中multi-head attention中每个head为什么要进行降维?
d
k
d_k
dk是词向量/隐藏层的维度,Q*K的维度也是
d
k
d_k
dk,Q*K越大,相乘后的varience越大,除以
d
k
d_k
dk来平衡。
d
k
d_k
dk防止输入softmax的值过大,导致偏导数趋近于0
2. 选择根号
d
k
d_k
dk可以使得Q*K的结果满足期望为0,方差为1的分布,类似于归一化。
y
1
,
y
2
,
.
.
.
,
y
t
y_1,y_2,…,y_t
y1,y2,…,yt与真实的翻译结果ground truth去分别算cross entropy loss,然后把t个loss加起来,如果使用self-attention,那么
y
1
y_1
y1这个输出里包含了
x
1
x_1
x1右侧单词信息(包含要预测下一个单词
x
2
x_2
x2的信息),用到了未来信息,属于信息泄露。
x
1
,
x
2
,
x
3
x_1, x_2, x_3
x1,x2,x3时的输出结果,应该是和预测序列是
x
1
,
x
2
,
x
3
,
x
4
x_1, x_2, x_3, x_4
x1,x2,x3,x4的前3个位置结果是一样的(增量更新);同时与训练时的模型架构保持一致,前向传播的方式是一致的。
从训练和预测角度来理解Transformer中Masked Self-Attention的原理
通过pytorch深入理解transformer中的自注意力(self attention)
二者都是采用「预训练+微调」的范式,
深度学习模型的优缺点:
树模型的优缺点:
池化的主要目的:
最大池化更能捕捉图像上的变化、梯度的变化,带来更大的局部信息差异化,从而更好地捕捉边缘、纹理等特征。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
决于偏移量 △t,也即两个位置编码的点积可以反应出两个位置编码间的距离。
Transformer学习笔记一:Positional Encoding(位置编码)
一文读懂Transformer模型的位置编码
Transformer的多头注意力看上去是借鉴了CNN中同一卷积层内使用多个卷积核的思想,原文中使用 8 个“scaled dot-product attention”,在同一“multi-head attention”层中,输入均为“KQV”,同时进行注意力的计算,彼此之前参数不共享,最终将结果拼接起来,这样可以允许模型在不同的表示子空间里学习到相关的信息。即希望每个注意力头只关注最终输出序列中一个子空间,互相独立。核心思想在于抽取到更加丰富的特征信息。如果只使用 one head 并且维度为
d
m
o
d
e
l
d_{model}
dmodel ,相较于 8 head 并且维度为
d
m
o
d
e
l
/
8
d_{model} / 8
dmodel/8,存在高维空间下学习难度较大的问题,文中实验也证实了这一点,于是将原有的高维空间转化为多个低维子空间并再最后进行拼接,取得了更好的效果,十分巧妙。
transformer中multi-head attention中每个head为什么要进行降维?
d
k
d_k
dk是词向量/隐藏层的维度,Q*K的维度也是
d
k
d_k
dk,Q*K越大,相乘后的varience越大,除以
d
k
d_k
dk来平衡。
d
k
d_k
dk防止输入softmax的值过大,导致偏导数趋近于0
2. 选择根号
d
k
d_k
dk可以使得Q*K的结果满足期望为0,方差为1的分布,类似于归一化。
y
1
,
y
2
,
.
.
.
,
y
t
y_1,y_2,…,y_t
y1,y2,…,yt与真实的翻译结果ground truth去分别算cross entropy loss,然后把t个loss加起来,如果使用self-attention,那么
y
1
y_1
y1这个输出里包含了
x
1
x_1
x1右侧单词信息(包含要预测下一个单词
x
2
x_2
x2的信息),用到了未来信息,属于信息泄露。
x
1
,
x
2
,
x
3
x_1, x_2, x_3
x1,x2,x3时的输出结果,应该是和预测序列是
x
1
,
x
2
,
x
3
,
x
4
x_1, x_2, x_3, x_4
x1,x2,x3,x4的前3个位置结果是一样的(增量更新);同时与训练时的模型架构保持一致,前向传播的方式是一致的。
从训练和预测角度来理解Transformer中Masked Self-Attention的原理
通过pytorch深入理解transformer中的自注意力(self attention)
二者都是采用「预训练+微调」的范式,
深度学习模型的优缺点:
树模型的优缺点:
池化的主要目的:
最大池化更能捕捉图像上的变化、梯度的变化,带来更大的局部信息差异化,从而更好地捕捉边缘、纹理等特征。
[外链图片转存中…(img-TWUInZyn-1715661771372)]
[外链图片转存中…(img-lLp9Ftqi-1715661771372)]
[外链图片转存中…(img-KV7eGdav-1715661771372)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。