简要笔记
Adam:= Netsterov动量+RMSprop
Netsterov:
估算动量过后的x位置$\theta_{peek} = \theta^{(t-1)} + 0.9 * g^{(t-1)}$
用新位置的梯度计算动量更新$g^{(t)} = 0.9* g^{(t-1)} +\nabla_{\theta}L(\theta_{peek})$
更新位置$\theta^{(t)} = \theta^{(t-1)} + g^{(t)}$
RMSprop:
梯度平方指数衰减的缓存 $\mathbb{E}[g_{(t)}^2]=0.9\mathbb{E}[g_{(t-1)}^2]+0.1g_{(t)}^2$
更新:$\theta_{(t)} = \theta_{(t-1)} – LR * \frac {0.001} {\sqrt{\mathbb{E}[g_{(t)}^2] + \epsilon }} g_{(t)} $
Adam:
动量 $m^{(t)} = 0.9* m^{(t-1)} + 0.1 \nabla_{\theta}L(\theta_{peek})$
梯度平方指数衰减的缓存 $\mathbb{E}[m_{(t)}^2]=0.9\mathbb{E}[m_{(t-1)}^2]+0.1m_{(t)}^2$
更新:$\theta_{(t)} = \theta_{(t-1)} – LR * \frac {0.001} {\sqrt{\mathbb{E}[m_{(t)}^2] + \epsilon }} m_{(t)} $
PCA:
$X \in \mathbb{R}(n, d)$
均值归零$\mu = mean(X, dim=0)$
$\bar{X} = X – tile(\mu, dim=0, num=n)$
均方差:$C = \bar{X}^T\bar{X} \in \mathbb{R}(d, d)$
对角化,坐标转换:$\Lambda =P^{-1}C P$
找到最大特征值的k个维度,就是方差最大的k个轴的方向,获取P的对应column,拼凑成转换矩阵
方差较小的轴自动被压缩拍扁,失去自由度。
LLE:
isomap:
局部(附近M个)样本,范围内,假设线性空间映射,找到两点之间距离。
“拼接”所有局部地图,使用Dijkstra计算任意两点之间距离,让它约等于sub-manifold上的测地线距离。
获得metric distance矩阵,可以使用centering process转化为kernel矩阵
用函数k(x1, x2)拟合,得到原始空间到内嵌空间的映射。
找到d维空间内的k维 sub-manifold,使得在每个局部d维小区域内,两点之间的测地线距离在原始d维空间内与在sub-manifold内大致相等。
VAE:
从Variational Inference得到最大化优化目标ELBO,即最小化
$-ELBO = -\mathbb{E}_{q}[logp(z, x)] + \mathbb{E}_{q}[logq(z \mid \nu)]$
$=-\mathbb{E}_{q}[logp(z, x) – p(z)] + \mathbb{E}_{q(z \mid \nu)}[logq(z \mid \nu) – p(z)]$
$=-\mathbb{E}_{q}[logp(x \mid z)] + D_{KL}[q(z \mid \nu) || p(z)]$
假设使用两个参数$\nu =(\boldsymbol{\mu}, \boldsymbol{\sigma})$能够描述一类数据,这类数据的每一个样本i都有它专属的$\boldsymbol{\mu}_i, \boldsymbol{\sigma}_i$
规定某种映射$\boldsymbol{\mu}_{\theta}(\boldsymbol{x})$以及$\boldsymbol{\sigma}_{\theta}(\boldsymbol{x})$,并构建满足正态分布的隐变量z:$q_{\theta}(\boldsymbol{z_i} \mid \boldsymbol{x}_i) = Norm(\boldsymbol{z_i}; \boldsymbol{\mu}_i \boldsymbol{\sigma}_i ) $
等同于$\boldsymbol{z_i} = \boldsymbol{\mu}_i + \boldsymbol{\sigma}_i * \epsilon_i$,噪音$\epsilon_i$采样自$Norm(\boldsymbol{0}, \boldsymbol{I})$ 重参数化操作不在z上直接采样,改为从另一个独立变量$\epsilon$采,使得经过z的梯度连续可导。
生成模型:$\boldsymbol{x’} _{\phi}^{(i)}(\boldsymbol{z_i})$,损失由两部分构成:
生成损失$||\boldsymbol{X}-\boldsymbol{X’}||^2$
噪音损失$D_{KL}[Norm(\boldsymbol{\mu}(\boldsymbol{X}), \boldsymbol{\sigma}(\boldsymbol{X})) || Norm(\boldsymbol{0}, \boldsymbol{I})] = \frac 1 2 \left[ \boldsymbol{\sigma}^2 + \boldsymbol{\mu}^2 – log(\boldsymbol{\sigma}^2) – 1 \right]$
让数据集分布X映射到Z时,p(Z)与标准正态分布$Norm(\boldsymbol{0}, \boldsymbol{I})$接近,同时让重参数采样后得到的$\boldsymbol{z}_i(\boldsymbol{x}_i)$解码出的$\boldsymbol{x’} _{\phi}^{(i)}(\boldsymbol{z_i})$尽量接近原始$\boldsymbol{x}_i$
LDA: Latent Dirichlet Allocation
$\boldsymbol{\theta} \in \mathbb{R}(K, M)$:M个文档,每个K种topic的分布。假如分布遵循多项式分布,则每个文档的参数$\alpha$都不同。
$\boldsymbol{z}_{1:M}$:从$\boldsymbol{\theta}$中采样得到的M个topic向量,第m个向量的长度等于第m个文档的句子长度
$\boldsymbol{\phi} \in \mathbb{R}(W, K)$: K种topic,W字典大小,每种topic上单词的分布,参数$\beta$。
优化目标:$p( \boldsymbol{\theta}, \boldsymbol{z}, \boldsymbol{\phi} \mid \textbf{D};\alpha, \beta)$
使用variational inference:
隐藏h,输入x,拟合变量$\nu$,要用全局参数$\nu$去尽可能还原x的信息
$ELBO + D_{KL}[q(h \mid \nu) || p(h \mid x)] = \mathbb{E}_{q}[logp(x)] \le log(\mathbb{E}_q[p(x)])$右边联合概率取log就是最大似然。
ELBO是log likelihood的下界,最小化KL距离无法直接计算p(h|x) 【VAE直接假设是Normal】,所以最大化ELBO来代替。
$ELBO = \mathbb{E}_{q}[logp(h, x)] – \mathbb{E}_{q}[logq(h \mid \nu)]$
$\nu = (\gamma, \lambda)$, $h=( \boldsymbol{\theta}, \boldsymbol{z})$
$\gamma$逼近$[Poly_K(\alpha)] * M$, $\lambda$逼近$\boldsymbol{\phi}$
$\gamma^*, \lambda^* = argmin_{(\gamma, \lambda)} D_{KL}\left[ q( \boldsymbol{\theta}, \boldsymbol{z} \mid \gamma, \lambda) || p( \boldsymbol{\theta}, \boldsymbol{z}, \boldsymbol{w} \in \textbf{D} \mid \ \alpha, \beta)\right]$
这里直接优化KL距离会不好评估,所以转化成最大化ELBO作为log likelihood的下界,用EM方法优化ELBO。
$L(\gamma, \lambda, \alpha, \beta) =ELBO = \mathbb{E}_{q}[logp(\boldsymbol{\theta} \mid \alpha) + logp(\boldsymbol{z} \mid \boldsymbol{\theta}) + logp( \boldsymbol{w} \in \textbf{D} \mid \boldsymbol{z}, \beta) – logq(\boldsymbol{\theta} \mid \gamma) – logq(\boldsymbol{z} \mid \lambda)]$
对上式的分布分别用Dirichlet或Polynomial分布建模,利用exponential family的特性:$\mathbb{E}_{p(\boldsymbol{u} \mid \boldsymbol{x}) \sim ExpFamily}[log(u_i \mid \boldsymbol{x})] = \Psi(x_i) – \Psi(\sum_j x_j)$,$\Psi(y) = \frac {\partial_y\Gamma(y)} { \Gamma(y)}$消去我们无法观测到的变量u,进行简化。
E-step固定$\alpha$与$\beta$,求$\frac {\partial L} {\partial \gamma}=0$ 与$\frac {\partial L} {\partial \lambda}=0$的解。M-step固定$\lambda$与$\gamma$,优化$\alpha$与$\beta$
word2vec:
理想状态编码与解码:$v_{w} = W_{embed}x_{onehot}$,$x_{onehot}=W_{context}^Tv_{w}$
embedding lookup: $v_w=W_{embed}[ind,:]$,$v^{‘}_w=W_{context}[ind,:]$
Full Softmax loss:
$p(w_{out} \mid w_{inp}) = \frac {exp( v^{‘T}_{out} v_{inp})} {\sum\limits_{i=1}^{V} exp( v^{‘T}_{i} v_{inp})}$
最大化联合概率
CBOW:$L=\sum\limits_{w \in Context} log p(w_{obj} \mid w)$
skip-gram:$L=\sum\limits_{w \in Context} log p(w \mid w_{obj})$
正常训练时间复杂度:
n-gram,h词向量长度,N词典规模,T训练文本单词个数
cbow的复杂度:$O([(n-1)h+hN]T)=O(hNT)$
加速:使用Hierarchical Softmax取代Softmax, 复杂度变$O(hlog(N)T)$
huffman树路径长度 = $O(log(N))$ = 预期二分类判定次数 < 一次N分类
树上叶子结点(词向量)和中间节点都被随机初始化,使用路径编码作为监督目标,sigmoid作为模型,更新所有节点上的向量。路径上所有sigmoid概率相乘获得最终预测输出单词的条件概率。
LSTM:
forget/input/out gate: 输入$x_{inp}=[h_{t-1}, x_t]$,输出sigmoid概率。
更新长记忆:$C_t=f_tC_{t-1}+i_t tanh(W_cx_{inp}+b_c)$
更新短期记忆以及step输出:$h_t=o_t tanh(C_t)$
GRU输入控制:$ h_{inp} = tanh(W (i_t h_{t-1} , x_t))$
GRU遗忘+输入门$z_t$:$h_t = (1-z_t) h_{t-1} + z_t h_{inp}$
HMM:
隐藏状态序列$\{s\}$,可观测变量序列$\{o\}$,“跳转为”表示成$\rightarrow$,“根据隐藏状态表现为”表示成$\leftarrow$
HMM联合概率$\prod_{t} p( s_{t-1} \rightarrow s_{t}) p( o_t \leftarrow s_t)$
Maximum Entropy Markov Model:$\prod_{t} p(s_{t-1} \rightarrow s_{t} \mid o_t \leftarrow s_t) p( o_t \leftarrow s_t)$
CRF:使用能量函数$p(E=f(p(s_{t-1} \rightarrow s_{t} ), p(o_t \leftarrow s_t)))$ 并全局归一化描述系统的联合概率。
CRF优点:没有观测值严格独立的假设,更加灵活,计算整个观测序列的联合概率,而非给定状态下的转移概率的联合。缺点参数多。
CRF:
$s_l(y_t, x, t) \in {0, 1}$:某个节点是否拥有某个y属性,$l=(1…L=len(labels)*T)$
$h_k(y_{t-1}, y_t, x, t) \in {0, 1}$:某个边的转移是否满足从$y_{t-1}$到$y_t$,$k=(1…K=len(labels)*len(labels)*T)$
上面循环上限里*T的位置信息有时候被简化成*1。
能量函数:$E(\boldsymbol x, \boldsymbol y) = – \sum\limits_{t=1}^{T} \left( \sum\limits_{k=1}^K \lambda_k h_k(y_{t-1}, y_t, x, t) + \sum\limits_{l=1}^L \mu_l s_l(y_t, x, t) \right)$
第二部分$\mu_l$概率直接从logits拿,第一部分$\lambda_k$需要训练。Partition function $Z(\boldsymbol x) = \sum\limits_{\boldsymbol{y’} \in AllPossible \boldsymbol y Values} exp\{ – E(\boldsymbol x, \boldsymbol{y’}) \}$
优化目标是能量模型下得到的$p(\boldsymbol y \mid \boldsymbol x)$
递归式计算Z的方法,假设一共有$C=len(labels)$种标签,$K=len(labels)*len(labels)$种跳转:
每增加一步,都有
$\{(s_{t}=0, h_{t}=0), …(s_{t}=0, h_{t}=1), …(s_{t}=C, h_{t}=K-1), …(s_{t}=C, h_{t}=K)\}$
一共K种新增排列组合。对应给序列添加的增量能量$z_0=\lambda_0+\mu_{t,0}, …z_K=\lambda_K+\mu_{t,C}$
递归buffer B:$B_t[i]=log\left[ (e^{B_{t-1}[0]} + e^{B_{t-1}[1]}…+e^{B_{t-1}[K]}) e^{z[i]} \right] $
buffer[i]的含义是:针对每一种$z_i$对应的$h_i(y_{t-1}, y_t)$与$s_i(y_t)$,所有以它们结尾的所有路径的能量的exp总和的log。
训练完模型,inference时使用类似的K叉树递归buffer D:$D_t[i]=max(D_{t-1}[i], D_{t-1}[1], …D_{t-1}[K]) + z[i]$,同时记录下每一步max操作时的路径即可。
Kernel:
$\boldsymbol{\Phi(x)} = (\boldsymbol{\phi(x^{(0)})}, … \boldsymbol{\phi(x^{(N)})}) \in \mathbb{R}(d, N)$,$\boldsymbol{K} =\boldsymbol{\Phi} ^T \boldsymbol{\Phi} $
根据Loss的形式以及目标向量$\boldsymbol{t} \in \mathbb{R}(N)$解$\frac {dL(\boldsymbol{w}, \boldsymbol{\Phi}, \boldsymbol{t})} {d \boldsymbol{w}} = 0$,规定在w的最优解时,如果将$\boldsymbol{\Phi}$视作坐标系变化Operator $\mathbb{R}(N) \rightarrow \mathbb{R}(d)$,存在向量a满足$\boldsymbol{\Phi} \boldsymbol{a}= \boldsymbol{w}$。找到最优$\boldsymbol w$可以替换为找到最优$\boldsymbol a$
当预测标量$y^{(p)}=\boldsymbol{w}^T \boldsymbol{\phi(x^{(p)})}$时,可替换成$y^{(p)} = \boldsymbol{a}^T \boldsymbol{\Phi}^T \boldsymbol{\phi(x^{(p)})} = \boldsymbol{a}^T \boldsymbol{k(x^{(p)})} $,定义kernel向量$\boldsymbol{k(x^{(p)})}= \boldsymbol{\Phi}^T \boldsymbol{\phi(x^{(p)})}$,即预测特征与Dataset内输入特征的内积向量。
内核空间映射函数$k(· , ·)$负责映射向量到内积,$\boldsymbol {k}_{[i]} = k(\boldsymbol{\phi(x^{(p)}}, \boldsymbol{\phi(x^{(i \in dataset)})}$
Softmax:
虚拟样本定义:假设未来即将输入的一个样本,它的标签被某个“全知全能”的模型测量了N次,每次该样本进入模型并携带固定能量的过程,就可以看作一个虚拟样本。我们不知道这个模型长啥样,所以也不知道具体哪一次测量的结果是什么。微正则态不可观测。
假设:系统内虚拟样本数量与总能量守恒;概率守恒(归一化);虚拟样本跳转分类时携带自身能量;系统熵(虚拟样本集合与所属的分类排列组合数)最大化;热平衡稳态,任何两个分类内虚拟样本互相跳转频率相同。
结论:所有微正则态出现的概率相等,在没有各个分类能量约束时是无偏的。无论我们得知未来的一个样本的能量会受到任何约束下,它属于哪个分类的不确定性(也就是合法的微正则系统数量)都能被最大化。
BN:
batch input $\boldsymbol{X} \in \mathbb{R}(B, d)$,$\mathbb{E}[\boldsymbol{x}] = \boldsymbol{\mu} = \frac {1} {B} \sum\limits_{i=1}^{B} \boldsymbol{x^{(i)}}$
缩放输入到均值0,方差1:$\hat{\boldsymbol{x}} = \frac { \boldsymbol{x} – \boldsymbol{\mu}} {\sqrt{Var[\boldsymbol{x}]+\epsilon}}$
输出添加两个可训练参数,缩放+偏置:$BN(\boldsymbol{x}) = \gamma \hat{\boldsymbol{x}} + \beta$
RL:
强化学习的决策过程满足Bellman Equation: $Q(s, a) = \mathbb{E}_{p(s’_{t+1})}[r(s’_{t+1}) \mid s_{t}, a_{t}] + \gamma \mathbb{E}_{p(s’_{t+1})} [ \sum\limits_{a’ \in A} \pi(a’ \mid s’_{t+1}) Q(s’_{t+1}, a’)] $
Q值是直到$\gamma$衰减到不再考虑的游戏后期,如果按照当前策略$\pi(a \mid s)$,预期还能获得多少累计收益。
on-policy方法下学习中的agent与infer时采用的策略一致,off-policy方法下学习时加入探索成分(replay buffer),infer时可能使用其他策略。
当policy空间A太大时,使用策略梯度。不同于使用Q预判后续收益之后贪婪选择策略,策略梯度直接将策略参数化并将时间连续化:
策略梯度的优化目标有两种:
一:如果定义策略$\pi* := \pi(t)$为当前策略,从新开始一局从$\tau = 1$直到结束的预期总收益$\rho_1 = \sum\limits_{\tau=1}^{\infty} \gamma^{\tau-1} \mathbb{E}[ r(\tau \mid \pi*, s_0)] = V_{\pi*}(s_0)$。
二:假设固定$\pi$,让系统演变无限长的时间,得到的最终状态的“固有分布”$d(s_\infty)$可以视作与初始无关,只与策略有关。在最终态分布下使用策略$\pi$得到的预期reward,就是无限长时间后$\pi$的平均每步收益:$\rho_2 = limit_{t \rightarrow \infty} \mathbb{E}_{\pi, s(t)}[r(t)]$
无论哪种目标,都与当前时刻关联不大,而和策略本身相关。它们求导后梯度上升迭代更新量是一样的:$ \nabla_{\theta} \rho_{1,2} = \sum\limits_{s_\infty \in S} d(s_\infty) \sum\limits_{a} (\nabla_{\theta} log\pi_{\theta}) Q(s_{\infty}, a) = \mathbb{E}_{\pi}[ (\nabla_{\theta} log\pi_{\theta}) Q(s, a)]$需要在最终固有分布上采样s,并评估s与每一个操作a的Q值以及$\nabla_{\theta} \pi(a \mid s)$,用于计算policy的更新梯度。
对比策略梯度公式,以及如果使用梯度上升进行最大化似然的操作,可以看成最大似然提升的每一步都被乘以了权重$Q$,所以高Q的策略概率提升,低Q的策略概率降低。
把$Q(s, a)$变成$Q(s, a) – Bias(s)$不会改变梯度更新公式,所以critic网络评估$V(s_{T+1})$作为bias,T是buffer内最后一步,V是$\mathbb{E}_{a \sim \pi(a \mid s)}[Q(s, a)]$。优势函数评估每一次操作的价值比起平均情况下要好多少。不同模拟线程下,Q值差异可能会很大,使用优势函数可以降低一个batch内的Q值方差,有助于收敛。
A3C中使用了第一种梯度目标(start-state),$ \nabla_{\theta} V_{\pi}(s_0) = \sum\limits_{s}\sum\limits_{k=0}^{\infty} \gamma^k Pr(s_0 \rightarrow s, k \mid \pi) \sum\limits_{a} \nabla_{\theta}\pi(a \mid s) Q(s, a) $,多个模拟线程采样从同一个初始$s_0$演变k步成为任意状态$s$的概率$Pr(s_0 \rightarrow s, k \mid \pi)$,同时每个线程上使用buffer记录多个t位置的$(s_t, a_t, r_t)$,用于将每一步k的$\gamma$乘进去以及计算每一步的$Q(s_k, a)$和$\nabla_{\theta}\pi(a \mid s_k)$。再将buffer末尾的$V(s_{T+1})$作为bias以便使用优势函数。
xgboost:
第m层回归树分割字段选择:对每一个字段的每一种二分方法(连续字段需要分箱)计算Gain,Gain的值与近似最优回归修正值$f_m$绑定。贪婪选择Gain最大的一个字段的一种二分方法。
最优修正值$f_m$的计算需要在$F_{m-1}$附近展开$\mathbb{E}_{data}[L(\boldsymbol{target}, F(\boldsymbol{x}))]$。求解使得下降Loss $\mathbb{E}_{data}[L(F_{m-1})] – \mathbb{E}_{data}[L(F_{m})]$最大化的$\Delta F = f_m$,可以让每一步修正都尽快地下降全局损失。
$Gain=\Delta \mathbb{E}_{data}[L]$,将上面的最优解$f_m^{*}(\frac {\partial L} {\partial F} \big|_{F=F_{m-1}}, \frac {\partial^2 L} {\partial F^2} \big|_{F=F_{m-1}})$代入,加入l2正则系数$\lambda$以及节点数量惩罚系数$\gamma$,求得$Gain= -\frac{1}{2} \sum\limits_{j \in Leaf} \frac { (\partial_{F}L |_{F_{m-1}})^2 } {\partial^2_{F}L | _{F_{m-1}} + \lambda } + \gamma$
如果第m步分裂,则减少原先的leaf节点,同时新增的两个新节点,其他之前的叶子节点不变。如果切分,则$Gain_{split}=Gain_{left} + Gain_{right} – Gain_{noSplit}$,只要切分收益为正,则可以进行树的成长。
GCN:
$\boldsymbol{H}^{(l+1)}(\boldsymbol{A}, \boldsymbol{H}^{(l)}) = \sigma \left( \boldsymbol{D}^{-\frac{1}{2}} (\boldsymbol{A} + \boldsymbol{I}) \boldsymbol{D}^{-\frac{1}{2}} \boldsymbol{H}^{(l)} \boldsymbol{W} \right)$
$H^{(l)} \in \mathbb{R}(N, d^{(l)})$,N个节点,每个节点d维特征。$\boldsymbol{W} \in \mathbb{R}(d^{(l)}, d^{(l+1)})$,不同层之间特征维度可以改变,W是特征变换矩阵。$ D_{ii}= \sum\limits_{j=1}^N (\boldsymbol{A}+\boldsymbol{I})_{ij}$负责求平均。
每一层GCN的操作就是对邻居以及自身节点的特征向量求和之后取平均值,再使用W变换。
Transformer/BERT:
预训练:QA双句也参与训练,多个句子间使用[SEP]分割。每个输入序列首字母[CLS],其位置的输出用于分类。概率性[MASK]用于防止双向encoder间接“看见”需要被预测的单词。另一个预训练TASK是预测两个句子是否是正确的连续上下文。
[MASK]出现概率80%,为了防止预训练与fine tune输入出现太大差异,保持10%概率单词不变,10%概率替换为其他随机单词。
输入embedding=词embedding+分句序号embedding+位置序号embedding
bert只使用了transformer的encoder部分。
Transformer Decoder:query来自decoder input,key与value来自encoder各个step的output。
$Attention(Q, K, V) = softmax(\frac {QK^T} {\sqrt{dim}}) V$
transformer的position embedding编码维度为$2N$,N是频谱内采样个数,则采样频率分别是$\omega_i = \frac {2\pi i} {T} = \frac{1} {10000^{i/N}} \forall i \in (1…N)$,最高频率10000 弧度/秒。注意到频谱上的采样并非均匀,而是几何级数变化的。embedding得到这些sin和cos的值,与后面的参数矩阵W相乘后,就可以训练sin和cos的傅里叶分量大小,在每个通道内拟合出一种任意形状的周期函数$f_c(t) = \boldsymbol{W}[c,:] \cdot embed(t)$;这里W暂时无视了对字向量做变换的channel。BERT里从训练分量,间接训练$f(t)$,变成把$f(t)$设定为可训练参数,直接训练。Trm的pos embedding优势是直接在频谱上训练,$f(t)$的描述精度不随t增加而减少,不会像BERT里较长句子里后面的t很少被lookup到,导致一部分embedding训练得较少。劣势在于固定了一套采样频率,使得forward后,既逆傅里叶变换后重组的$f(t)$,无法完美地表征准确embed(t),如果把bert里直接训练的$f(t)$试做准确embed(t)的话。
论证pos embedding的点积,大小只取决于两个embedding的相对位置$k=t_2-t_1$,而与绝对位置无关,最大的问题在于$(v_{wd1} + v_{pos}(t_1)) \cdot (v_{wd2} + v_{pos}(t_2))$,只能保证$ v_{pos}(t2) \cdot v_{pos}(t1)$只取决于k,但没法确保$v_{wd1}\cdot v_{pos}(t2) + v_{wd2}\cdot v_{pos}(t1)$也与$t_1$, $t_2$无关。
Meta-Learning:
define meta_learner;
for episode in (1, episode_num):
$X_{supportSet}, Y_{querySet}$ = shuffled_sample_from(AllDataset) # 从所有相似任务中采样Meta-Train,假设样本来自batch size个新任务,每个新任务有CK个样本用于训练,$[n_{batch}, n_{cWay}*n_{kShots}, d_{x}]$
losses = meta_learner.fit($X_{supportSet}, Y_{querySet}$) # 一个训练步骤内根据模型计算所有采样样本的loss
back_prop(gradients(sum(losses), params)) # 更新meta learner
$X_{supportSetFinal}, Y_{querySetFinal}$ = get_final_test_set() # 已经训练好meta learner,获取真正部署时的分类Dataset,$n_{batch}=1$
meta_learner.fit($X_{supportSetFinal}, Y_{querySetFinal}$)
predict = meta_learner.infer($x$)
基于metric方法:根据一个任务内的样本间距离,设计loss
基于rnn/lstm方法:使用rnn/lstm复用参数的特性,把一个任务内所有样本视作一个序列进行fit。rnn传递同一个任务内所有已经喂过的样本的信息。
基于optimization方法:学习更好的初始参数或optimizer参数,例如把forget gate=1,学习速率看作input gate,$i_t * \nabla_{\theta}L$看作c state更新量的方法。
Capsule:
两层胶囊,第一层j=1…M=胶囊超参个,第二层i=1…C=分类数量个。
压扁:保持方向(unit vector)且归一化到0-1大小($\frac {x^2} {x^2+1}$)。
对每个i而言,连接它的M个特征向量$\{ \boldsymbol{u}^{(i1)}, …, \boldsymbol{u}^{(iM)}\}$经过各自独享(某些模型也可能共享)的$\boldsymbol{W}^{(ij)}$旋转后,如果方向一致,则压扁后“合力”长度接近1,否则“合力”不一致的长度接近0。到i的M个向量的“合力”锚向量记作$\boldsymbol{v}_i$
每一轮routing by agreement时能量累积规则:$E_{ij} += \boldsymbol{v}_i \cdot \left( \boldsymbol{W}^{(ij)} \boldsymbol{u}^{(ij)} \right)$ 将锚合力向量与旋转后的j特征向量取点积。
对每一个特征j,根据softmax能量函数分配在C个分类上的权重分布,下一个iteration时计算“合力”的叠加权重$\boldsymbol{a}$就取决于这个softmax分布$\boldsymbol{v}_i=squash \left( \sum\limits_{j=1}^M a_{ij} \boldsymbol{W}^{(ij)} \boldsymbol{u}_{ij} \right)$。初始未经过routing by agreement时C分类上的权重是均匀分布。
GAN:
输入判别器的分布$q(x, y)$,取决于选择器$y$以及进入选择器的$p(x)$和$q(G(z))$。选择器各有0.5的概率选取二者之一,所以:
$q(x, y) = 0.5 p(x)$ if $y=1$; $q(x, y)=0.5q(G(z))$ if $y=0$,y与其他任何变量都是独立的。
$D_{KL}[q(x, y) || p(x, y)] = \int 0.5p(x) log \frac {0.5p(x)} {p(y=1 \mid x)p(x)} + 0.5q(x) log \frac {0.5q(x)} {p(y=0 \mid x)p(x)} dx$
判别器输出$D(x)=p(y=1\mid x)$,$1-D(x)=p(y=0 \mid x)$
$D_{KL}[q(x, y) || p(x, y)] = – \mathbb{E}_{x \sim p_{data}(x)}[logD(x)] – \mathbb{E}_{z \sim p_z(z)}[ log(1 – D(G(z)))] $
优化Discriminator(需要固定G,最大化$D_{KL}[q(x, y) || p(x, y)]$):
$Loss_D(D, G) = \mathbb{E}_{x \sim p_{data}(x)}[logD(x)] + \mathbb{E}_{z \sim p_z(z)}[ log(1 – D(G(z)))] $
优化Generator(需要固定D,最小化$D_{JS}[q(x, y) || p(x, y)]$,不是KL,因为最终收敛时最优判别器满足$D(x)=\frac {p(x)} {p(x)+q(x)}$),所以:
$Loss_G(D, G)= – \mathbb{E}_{z \sim p_{z}(z)}[logD(G(z))] $
GAN与VAE区别:
GAN隐藏变量z来自Uniform分布的100维白噪音采样,VAE的z来自拟合出的2维分布【近似于2维Norm(0, 1)】的采样,隐层信息量GAN比较大,所以效果更好。GAN生成器优化目标可以转化为$\min D_{JS}[ q(G(z)) || p(x)]$ ,VAE解码器优化目标是最小二乘,两者z的来源有区别,导致$(x_i, z_i)$的绑定方法也不同。
VAE可以获得编码模型$p(z \mid x)$,而GAN不行,这个模型或许在其他一些任务有用。
WGAN将原始的JS散度替换成Earth-Moving距离$\mathbb{E}_{(p(x), q(G(z)))}[ |x – z |]$,并惩罚判别器对生成的样本的梯度$\mathbb{E}_{G \sim q(G)} \left[ \left( \frac {\partial D(G(z))} { \partial G} \right) ^2 – 1 \right]$ 作为gradient penalty。
Tensorflow:
graph承载variables与tensors的连接结构,session负责结构中数值的propagate。
variable scope负责variables的存储路径,name scope负责tensorboard展示时的展开/折叠层级
Controller(MANN):
每轮更新i位置地址的使用量:$u_t[i] = \gamma u_{t-1}[i] + \sum\limits_{h \in heads} \left ( a_{t,h}^{(read)}[i] + a_{t, h}^{(write)}[i] \right)$
写入权重:挑选使用量最低的head个作为least used,生成$mask_{LeastUse}$。上轮t时每个head上的读取权重天然构成$mask_{Prev}$,按比例$\sigma(\boldsymbol{h}_t)$混合两个mask。$\boldsymbol{h}_t$是当前lstm cell的output
读取权重:与LSTM一样,先写再读。写入更新memory后,根据head个key与memory每个地址的cosine相似度,计算读取权重。
LSTM cell负责每一步产出query以及更新量add
Graph Dynamic (TODO):
智能体:
降低泛化误差必然需要信息压缩,利用已经压缩过的特征,可减少fine tune所需样本数,例如迁移学习和元学习。
多目标监督、多个相似任务,共用一些特征编码器,权重位于多任务的最优解“中间”。
网络结构决定先天“天性”,也就是最优解的大致范围。网络结构的改变与权重改变一同构成学习过程。
网络结构的生灭规则、信号传递的动力学规则,都是混沌系统的一部分。
稍微更改胶囊结构,变成社区网络结构,假设神经元极化激活过程足够快,且激活后持续高电势一段时间,可以简化成二值化能量模型(Ising模型),能够推导出非线性来源,以及相变的条件。
相变所需的外部场强大小,以及社区是否会发生相变,决定了社区是偏向编码器(稳定性,解偏二值化)还是解码器(适应性,连续唯一解),背后是连接强度的用进废退机制。稳定概念构成的编码器网络,是被迁移的部分,由大量数据反复训练巩固,训练过程存在信息压缩(负熵),不可逆。海马体存储编码后压缩过的信息。解码器容易被外部场强(自由意志)影响,信息压缩不明显,主要使用非线性变换。
编码器优化路径通过small-world模型,路径长度相似,推理时间能够同步。沿着置信网络(节点是社区)的高稳定->低稳定顺序,逐层优化链条联合概率,以及执行信息瓶颈操作。
存在对抗:编码器拟合世界,解码器+决策控制找到surprise,并给予reward。
优化目标候选:自由能(未来可能性数量)、编码器的信息瓶颈、强化学习reward。
相变的具体形式以及条件修正,需要SNN进行精确建模,涉及耗散结构以及复杂系统。“混沌边缘”的临界状态表现完全不同于编码器与解码器两个极端。