bert-family
BERT Series
DeBerta
改进
matplotlib
matplotlib
常用代码段
123fig = plt.figure() # an empty figure with no Axesfig, ax = plt.subplots() # a figure with a single Axesfig, axs = plt.subplots(2, 2) # a figure with a 2x2 grid of Axes
docker 配置
/etc/docker/daemon.json 相关配置
Dockerfile中执行apt update报错Temporary failure resolving
Temporary failure resolving是指地址解析失败
检查地址是否有问题,如果地址无误,/etc/docker/daemon.json中添加如下dns服务器
12345{ "dns": [ "8.8.8.8" # Google DNS server ]}
L1正则化与L2正则化的区别
结论
正则化都可以防止模型过拟合。
L1正则化更容易获得为0得解,即权重更倾向为稀疏,常用于进行特征选择。
L2正则化使得解的趋向0而不为0(不因正则化为0)。
假定参数为 www ,loss函数为 L(w)L(w)L(w) ,则包含L1正则化的目标函数为
F=L(w)+λ∣w∣ F = L(w) + \lambda \lvert w \rvert
F=L(w)+λ∣w∣
在 w=0w=0w=0 处的导数为
∂F∂w∣w=0+=∂L(w)∂w+λ \left.\frac{\partial F}{\partial w}\right|_{w=0^{+}} = \frac{\partial L(w)}{\partial w} + \lambda
∂w∂F∣∣∣∣∣w=0+=∂w∂L(w)+λ
∂F∂w∣w=0−=∂L(w)∂w−λ \left.\frac{\partial F}{\partial w}\right|_{w=0^{-}} = \frac{\partial L(w)}{\partial w} - \lambda
∂w∂F∣∣∣∣∣w=0−=∂w∂L ...
Normalization
之前有大概看过Normalization,了解了LN和BN的区别,恰好前段时间在面试中被问到,发现之前了解的还是太模糊了,所以又深入学习了一些,顺便写了个笔记。
什么是Normalization
一种使神经网络特征保持固定分布的运算
Normalization是如何计算的
y=x−E[x]Var[x]+ϵ∗γ+β y = \frac{x - \mathrm{E}[x]}{ \sqrt{\mathrm{Var}[x] + \epsilon}} * \gamma + \beta
y=Var[x]+ϵx−E[x]∗γ+β
以下是自己通过均值和方差做的对比实验,可以看到结果是一样的。但实际上LN在使用时大部分参数会采用默认值,即elementwise_affine=True以及eps=1e-5,只是那样我们去对比就过于麻烦,理解就好
12345678910111213import torchimport torch.nn as nn# Official NLP Examplebatch, sentence_length, embedding_dim = 20, 5, 10embedd ...
algorithms
动态规划
通过缓存子问题的结果来递推解决目标问题的解决方案
判断是否为动态规划问题的依据
是否存在子问题的局部最优解为全局最优解的局部解
是否可以找到状态(子问题与目标问题的规模n这个变量)
是否存在状态转移方程(递推公式,即子问题规模从n到n+1,最优解的关系,例如f(n+1)=f(n)+2)
12class A(object): ...
optim
优化器更新参数机制
Require: 初始化参数 θ\thetaθ
Require: 学习率 ϵ\epsilonϵ
while 没有达到停止准则 do
计算梯度估计: g←1m∇θ∑iL(f(x(i);θ),y(i))\boldsymbol{g} \leftarrow \frac{1}{m} \nabla_{\boldsymbol{\theta}} \sum_{i} L\left(f\left(\boldsymbol{x}^{(i)} ; \boldsymbol{\theta}\right), \boldsymbol{y}^{(i)}\right)g←m1∇θ∑iL(f(x(i);θ),y(i))
计算一阶动量、二阶动量: s=ϕ(g)s=\phi(g)s=ϕ(g) 、r=ψ(g)r=\psi(g)r=ψ(g)
计算更新: Δθ=ϵ⋅s/r\Delta \theta = \epsilon \cdot s / rΔθ=ϵ⋅s/r
应用更新: θ=θ+Δθ\theta = \theta + \Delta \thetaθ=θ+Δθ
SGD ...
loss
CrossEntropyLoss
熵
熵即一个事件所包含的信息量
s(x)=−∑iP(xi)logbP(xi)s(x)=-\sum_{i} P\left(x_{i}\right) \log _{b} P\left(x_{i}\right)
s(x)=−i∑P(xi)logbP(xi)
KL散度
KL散度可用来描述两个分布的距离,KL散度不具备有对称性。
KL散度的定义
对于离散分布
DKL(A∥B)=∑iPA(xi)log(PA(xi)PB(xi))=∑iPA(xi)log(PA(xi))−PA(xi)log(PB(xi))D_{K L}(A \| B)=\sum_{i} P_{A}\left(x_{i}\right) \log \left(\frac{P_{A}\left(x_{i}\right)}{P_{B}\left(x_{i}\right)}\right)=\sum_{i} P_{A}\left(x_{i}\right) \log \left(P_{A}\left(x_{i}\right)\right)-P_{A}\left(x_{i}\right) \lo ...
lstm
LSTM
it=σ(Wiixt+bii+Whiht−1+bhi)ft=σ(Wifxt+bif+Whfht−1+bhf)gt=tanh(Wigxt+big+Whght−1+bhg)ot=σ(Wioxt+bio+Whoht−1+bho)ct=ft⊙ct−1+it⊙gtht=ot⊙tanh(ct)\begin{array}{ll} \\
i_t = \sigma(W_{ii} x_t + b_{ii} + W_{hi} h_{t-1} + b_{hi}) \\
f_t = \sigma(W_{if} x_t + b_{if} + W_{hf} h_{t-1} + b_{hf}) \\
g_t = \tanh(W_{ig} x_t + b_{ig} + W_{hg} h_{t-1} + b_{hg}) \\
o_t = \sigma(W_{io} x_t + b_{io} + W_{ho} h_{t-1} + b_{ho}) \\
c_t = f_t \odot c_{t-1} + i_t \odot g_t \\
h_t = o_t ...
激活函数汇总
Sigmoid
函数
σ(x)=11+e−x\sigma(x) = \frac{1}{1 + e^{-x}}
σ(x)=1+e−x1
导数
σ′(x)=σ(x)⋅(1−σ(x))\sigma'(x) = \sigma(x)\cdot(1-\sigma(x))
σ′(x)=σ(x)⋅(1−σ(x))
优点
函数是可微的。
梯度平滑。
Sigmoid 函数的输出范围是 0 到 1,因此它对每个神经元的输出进行了归一化,课用于将预测概率作为输出的模型。
缺点
激活函数计算量大(在正向传播和反向传播中都包含幂运算和除法)
不是zero-centered
梯度消失
Tanh
函数
τ(x)=tanh(x)=ex−e−xex+e−x\tau(x) = \tanh(x) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}}
τ(x)=tanh(x)=ex+e−xex−e−x
导数
τ′(x)=1−τ2(x)\tau'(x) = 1 - \tau^{2}(x)
τ′(x)=1−τ2(x)
优点
zero-centered
相 ...