Advertisement

机器学习、人工智能、大数据学习中笔记

阅读量:

机器学习、人工智能、大数据学习中笔记

  • 代码实现

      • 实现卷积层
      • CrossEntropyLoss
      • 实现nn.seqential
  • 机器学习

      • EM算法

      • 隐马尔可夫模型(HMM)是什么

        • 概率计算
      • CRF是什么

        • 成对马尔科夫性
    • 局部马尔科夫性

    • 全局马尔可夫性

    • 条件随机场及线性链条件随机场

      • 决策树有哪些启发函数
        • ID3 最大熵增
    • C4.5 最大信息增益比

    • CART-最大基尼质数

    • 三者区别

      • 决策树剪枝有哪些方法
        • 预剪枝(pre-pruning)
    • 后剪枝(post-pruning)

      • 有哪些优化函数
      • 冲量法是什么
      • PCA是什么
      • 决策树的常用启发函数
      • 有哪些超参数调优方法
      • 模型评估中有哪些方法,优缺点有什么
      • 什么是A/B测试,有什么作用
      • 如何进行A/B测试
      • 余弦距离是否为一个严格定义的距离
      • 在怎样的场景下使用余弦相似度而不是欧氏距离
      • ROC曲线是什么
      • 如何计算AUC
      • ROC曲线和P-R曲线有什么区别特点
      • 准确率(Accuracy)精准率(Precision)召回率(Recall)均方根误差(RMSE)区别和局限
      • 生成方法和判别方法区别
      • 过拟合应该如何处理
      • 对于类别数据应该如何处理
      • KL散度是什么
      • 交叉熵是什么、
      • 人工智能、机器学习、深度学习区别
      • 特征工程是什么
      • 为什么要做归一化、哪些类型数据需要做
      • 归一化和标准化区别
  • 深度学习

        • 注意力机制是什么(Q、K、V)是什么
      • 注意力评分是什么
      • 注意力评分函数有哪些
        • 加性注意力函数
    • 缩放点积注意力

      • 深度学习优势
    • 卷积网络

      • 卷积下一层大小如何计算,padding和stride有什么作用
      • 卷积运算
      • 什么是感受野、怎样计算感受野
      • 一维卷积是什么
      • 卷积网络变种有哪些
      • 卷积网络和全连接层的区别
      • 卷积神经网络近年来的结构设计上的主要发展和变迁
    • 循环神经网络

      • RNN网络是怎样计算的
      • GRU
      • LSTM

学习中记得一些笔记:来源:李沐老师《动手学习深度学习_pytorch版本》、李航老师《统计学习方法》、葫芦娃《百面机器学习》《百面深度学习》、网络各种资料。现在是在做笔记,待做完以后再重新整理归类。实时更新。

代码实现

实现卷积层

复制代码
    import torch
    import torch.nn as nn
    
    def corr2d(X: torch.tensor, K: torch.tensor) -> torch.tensor:
    """
    步长为1、卷积核大小小于输入大小
    :param K: 卷积核
    :param X: 输入
    :return: 卷积后输出
    """
    n_h, n_w = X.shape
    k_h, k_w = K.shape
    re = torch.zeros((n_h - k_h + 1, n_w - k_w + 1))
    for i in range(re.shape[0]):
        for j in range(re.shape[1]):
            re[i][j] = (X[i:i + k_h, j:j + k_w] * K).sum()
    return re
    
    # test
    X = torch.tensor([[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]])
    K = torch.tensor([[0.0, 1.0], [2.0, 3.0]])
    print(corr2d(X, K))
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
复制代码
    tensor([[19., 25.],
        [37., 43.]])
    
    
      
      
    
复制代码
    class Cov2d(nn.Module):
    def __init__(self, kernel_size):
        super().__init__()
        self.weight = nn.Parameter(torch.randn(kernel_size))
        self.bais = nn.Parameter(torch.zeros(1))
    
    def forward(self, x):
        return corr2d(x, self.weight) + self.bais
    
    
      
      
      
      
      
      
      
      
    
复制代码
    net = Cov2d([2, 2])
    print(net(X))
    
    
      
      
    

CrossEntropyLoss

o_j为为归一化预测的o的第j个元素。
\hat y_j=softmax(o)=\frac{exp(o_j)}{\sum_{k}exp(o_k)}
这里就会发现当o_j 足够大时数值会上溢出。一般处理方法是o_j-max(o)。这样softmax公式就变成了:
sofmax(o)=\frac{exp(o_j-max(o))}{\sum_{k}{exp(o_k-max(o))}}
这样有效防止上溢出。
但对于之后求损失函数:
l=-\sum_{k}{y_ilog(\hat y_i)}
l=-log(\hat y_i)
\hat y_i足够小时便会下溢出那么对于原公式进行化简:
l=-log(\frac{exp(o_j)}{\sum_{k}exp(o_k)})
l=-o_j+log({\sum_{k}exp(o_k)})

实现nn.seqential

复制代码
    import torch
    import torch.nn as nn
    from torch.nn import functional as F
    
    
    class MySequential(nn.Module):
    def __init__(self, *arg):
        super().__init__()
        for block in arg:
            self._modules[block] = block
    
    def forward(self, x):
        for block in self._modules.values():
            x = block(x)
        return x
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    

验证

复制代码
    net = MySequential(nn.Linear(20, 30), nn.ReLU(), nn.Linear(30, 2))
    x = torch.randn((2, 20))
    net(x)
    
    
      
      
      
    

输出:

复制代码
    tensor([[ 0.2447, -0.0728],
        [ 0.0344, -0.3802]], grad_fn=<AddmmBackward0>)
    
    
      
      
    

这里nn.ReLU 和F.ReLU其实我感觉没有区别。(如果有的话请指正)
\acute x = \begin{cases} 1, & \text{x>threshold} \\ 0, & \text{x$$

机器学习

EM算法

不完全数据: 观测随机变量Y
完全数据:观测随机变量Y和隐随机变量Z
含有隐变量Z的概率模型,目标是极大化观测变量Y关于参数\theta的对数似然函数,即\underset{\theta}{max}L(\theta)
L(\theta)=logP(Y|\theta)=log\sum_zP(Y,Z|\theta)=log(P(Y|Z,\theta)P(Z|\theta))
L(\theta)\geq L(\theta^{(i)})+\sum_ZP(Z|Y,\theta^{(i)})log\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})}\\ L(\theta)=B(\theta,\theta^{(i)})
要使得\theta^{(i+1)}使得B最大就即:
\theta^{(i+1)}=\underset{\theta}{argmax}(L(\theta^{(i)})+\sum_ZP(Z|Y,\theta^{(i)})log\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})}\\ =\underset{\theta}{argmax}(\sum_ZP(Z|Y,\theta^{(i)})log{P(Y|Z,\theta)P(Z|\theta)})\\ =(\sum_ZP(Z|Y,\theta^{(i)})log{P(Y,Z|\theta) })

隐马尔可夫模型(HMM)是什么

在马尔可夫模型中,每个状态代表了一个可观察的事件,所以,马尔可夫模型有时又称为可视马尔可夫模型(visible Markov model, VMM)。在隐马尔可夫模型(HMM)中我们不知道模型所经过的状态序列,只指导状态的概率函数,也就是说,观察到的事件是状态的随机函数,因此,该模型是一个双重随机过程。其中模型的状态转移过程是不可观察的,即隐蔽的,可观察事件的随机过程是隐蔽的状态转换过程的随机函数。
状态集合Q={q_1,q_2,\dots ,q_N},\text{ } |Q|=N
观测集合V={v_1,v_2,\dots,v_M},\text{ } |V|=M
状态序列I={i_1,i_2,\dots,i_T}\text{ }i_t\in Q
观测序列O={o_1,o_2,\dots, o_T}o_t\in V
状态转移矩阵 \mathbf{A}=[a_{ij}]
在t时刻处于状态q_i条件下,在t+1时刻转移到状态q_j的概率:a_{ij}=\mathbf{P}(i_t+1=q_j|i_t=q_i)
观察概率矩阵:B=[b_j(k)]_{N\times M}
在t时刻处于状态q_i条件下生成观察v_k的概率:
b_j(k)=\mathbf{P}(o_t=v_k|i_t=q_j)
初始概率向量:\pi_i=P(i_i=q_i)
在时刻t=1处于状态q_i的概率:
\pi_i=P(i_1=q_i)
隐马尔科夫模型\lambda=(A,B,\pi)
隐马尔可夫模型需要满足两个条件:

  1. 齐次马尔可夫假设:在任意时刻t的状态只依赖于时刻t-1
    P(i_t|i_t-1,o_t-1,\dots,i_1,o_1)=P(i_t|i_t-1)

  2. 观测独立性假设:任意时刻的观测只依赖于该时刻的状态。
    P(o_t|i_T,o_T,i_{T-1},\dots,i_1,o_1)=P(o_t|i_t)

  • 隐马尔科夫模型三个基本问题:
  1. 概率计算
    已知\lambda=(A,B,\pi)和O={o_1,o_2,\dots,o_T},计算P(O|\lambda)
    表示给定模型\lambdat和之前的序列O,且o_t状态为q_i的概率

  2. 学习
    已知O={o_1,o_2,\dots,o_T},计算\lambda^*=\mathbf{argmax}P(O|\lambda)
    (得到观测序列重构模型\lambda所以HMM为生成式模型

  3. 预测 (encoder)
    已知\lambda=(A,B,\pi)和O={o_1,o_2,\dots,o_T}计算\lambda^*=\mathbf{argmax}P(I|O,\lambda)
    已知模型和序列可以预测未来状态或者重构其他序列。

  • 观测序列生成算法:
    • 输入:隐马尔科夫模型\lambda=(A,B,\pi),观测序列长度T
    • 输出:观测序列O={o_1,o_2,\dots,o_t,\dots,o_T}
  1. 初始状态有\pi产生状态i_1
  2. t=1
  3. 由状态i_t的观测概率分布b_j(k)生成o_t
  4. 由状态i_t的状态转移分布a_{ij}生成t+1时刻的状态i_{t+1}
  5. t=t+1,如果t则回到步骤3,否则完成生成。
概率计算
  • 前向概率\alpha_t(i)=P(o_1,o_2,\dots,o_t,i_t=q_i|\lambda)\\ =P(i_t=q_i,o_1^t)\\ =\sum_{j=1}^NP(i_{t-1}=q_j,i_t=q_i,o_1^{t-1},o_t)\\ =\sum_{j=1}^NP(i_t=q_i,o_t|i_{t-1}=q_j,o_1^{t-1})\cdot P(i_{t-1}=q_j,o_1^{t-1})\\ =\sum_{j=1}^NP(i_t=q_i,o_t|i_{t-1}=q_j)\cdot \alpha_{t-1}(j)\\ =\sum_{j=1}^NP(o_t|i_t=q_i,i_{t-1}=q_j)\cdot P(i_t=q_i|i_{t-1}=q_j)\cdot \alpha_{t-1}(j)\\ =\sum_{j=1}^Nb_i(o_t)\cdot a_{ji}\cdot \alpha_{t-1}(j)
    \alpha_1(j)=P(o_1,i_1=q_j )=P(o_1|i_1=q_j)\cdot P(i_1=q_j)=b_1(j)\cdot \pi_j

  • 概率计算
    P(O|\lambda)=P(o_1^T|\lambda)=\sum_{i=1}^NP(o_1^T,i_T=q_i)=\sum_{i=1}^N\alpha_T(i)

  • 向前计算过程

  1. 初值
    \alpha_1(i)=b_1(i)\cdot \pi_i

  2. 递推
    \alpha_{t+1}=\sum_{j=1}^Nb_i(o_{t+1})\cdot a_{ji}\cdot \alpha_{t}(j)

  3. 终止
    P(O|\lambda)=\sum_{i=1}^N\alpha_T(i)

通过EM算法
\lambda^{(i+1)}=\underset{\lambda}{argmax}(\sum_{I}P(I|O,\lambda^{(i)})logP(O,I|\lambda))\\ =\underset{\lambda}{argmax}(\sum_{I}\frac{P(I,O|\lambda^{(i)})logP(O,I|\lambda)}{P(O|\lambda^{(i)})})\\ =\underset{\lambda}{argmax}(\sum_{I}{P(I,O|\lambda^{(i)})logP(O,I|\lambda)}
P(O,I|\lambda)=\pi_{i1}b_{i1}(o_1)a_{i1i2}b_{i2}(o_2),\dots,a_{iT-1T}b_{T}(o_T)
所以\lambda = \underset{\lambda}{argmax}(\sum_{I}{\pi_{i1}P(O,I|\lambda)}+\sum_{I}{(\sum_{t=1}^{T-1}loga_{i_ti_{t+1}})P(O,I|\lambda)})+\sum_{I}{(\sum_{t=1}^{T-1}logb_{i_t}(o_t))P(O,I|\lambda)})
对三项极大化:(拉格朗日乘子法偏导等于0)
Baum-Welch 算法

  1. 初始化
    n=0,选取a_{ij}^{0},b_j(k^{(0)}),\pi_i^{(0)},得到模型\lambda^{(0)}=(a_{ij}^{0},b_j(k^{(0)}),\pi_i^{(0)})

  2. 递推
    n=1,2,\dots, T
    a_{ij}^{n+1}=\frac{\sum_{t=1}^{T-1}P(O,i_t=i,i_{t+1}=j\lambda)}{\sum_{t=1}^{T-1}P(O,i_t=i|\lambda)}=\frac{\sum_{t=1}^{T-1}\xi_t(i,j)}{\sum_{t=1}^{T-1}\gamma_t(i)}
    b_j(k)^{n+1}=\frac{\sum_{t=1}^{T}P(O,i_t=j|\lambda)I(o_t=u_k)}{\sum_{t=1}^{T}P(O,i_t=j|\lambda)}=\frac{\sum_{t=1,o_t=vk}^{T}\gamma_t(j)}{\sum_{t=1}^{T}\gamma_t(j)}
    \pi_i^{n+1}=\frac{P(O,i_1=i|\lambda)}{P(O|\lambda)}
    其中\gamma=-P(O|\lambda)右边等式中\lambda表示模型上次计算时的值

  3. 终止

CRF是什么

成对马尔科夫性
局部马尔科夫性

P(\mathbf{Y_v},\mathbf{Y_o}|\mathbf{Y_w})=P(\mathbf{Y_v}|\mathbf{Y_w})P(\mathbf{Y_o}|\mathbf{Y_w})
其中v\in \mathbf{V}是无向图G中任意节点,对应的随机变量是\mathbf{Y_v},\mathbf{W}是与v有边连接的所有的节点,对应的随机变量组是\mathbf{Y_w}\mathbf{O}是\mathbf{v,W}以外的其他所有节点,对应的随机变量组是\mathbf{Y_o}
即给定随机变量组\mathbf{Y_W}的条件随机变量\mathbf{Y_v}\mathbf{Y_o}是条件独立的。

全局马尔可夫性

####马尔科夫随机场因式分解
团:无向图中任意两个节点均有边连接的节点子集。
最大团:无向图中的一个团,且不能再加进任何一个点构成更大的团。
概率无向图联合概率分布。
P(\mathbf{Y})=\frac{1}{\mathbf{Z}}\prod_{\mathbf{C}}\mathbf{\Psi_{C}(\mathbf{Y_C})}
C是无向图最大团,Yc是C的节点对应的随机变量。
\Psi_C(\mathbf{Y_C})=exp{-E(\mathbf{Y_C})}
Z是规范化因子,保证P(Y)构成概率分布

条件随机场及线性链条件随机场

设X与Y是随机变量,若随机变量Y构成一个由无向图G=(V,E)表示的马尔科夫随机场
P(\mathbf{Y|X})X决定Y且Y是线性的
P(\mathbf{Y_v}|X,Y_w,w\neq v)=P(\mathbf{Y_v}|X,Y_w,w~v)
w~v表示在图中与节点v相连的所有节点w,w\neq v表示系欸但v以外的所有节点。

决策树有哪些启发函数

ID3、C4.5、CART

ID3 最大熵增

样本集合D、类别数为K、数据集D的经验熵表示为:
\mathbf{H(D)}=-\sum_{k=1}^{K}{\frac{|C_k|}{|D|}log_2\frac{|C_k|}{|D|}\quad}
C_k是样本集合D中属于第k类的样本子集,|C_k|表示为该子集的元素个数|D|表示样本集合的元数个数。
计算某个特征A对于数据集D的经验条件熵H(D|A)
\mathbf{H(D|A)}=\sum_{i=1}^{n}{\frac{|D_i|}{|D|}H(D_i)}=\\ \sum_{i=1}^{n}{\frac{|D_i|}{|D|}(-\sum_{k=1}^{K}{\frac{|D_ik|}{|D_i|}log_2\frac{|D_ik|}{|D_i}\quad}})
信息增益g(D|A)为:
\mathbf{g(D|A)}=H(D)-H(D|A)

C4.5 最大信息增益比

g_R(D,A)=\frac{g(D,A)}{H_A(D)}\quad
其中H_A(D)=-\sum_{i=1}^n{{\frac{|D_i|}{|D|}}log_2{\frac{|D_i|}{|D|}\quad}}

CART-最大基尼质数

Gini(D)=1-\sum_{i=1}^n{(\frac{C_k}{D})^2}
CART在每次迭代中选择基尼质数最小的特征及其对应切分点进行分类。但CART和ID3、C4.5不同在于其为二叉树。
特征A的Gini指数为:
Gini(D|A)=\sum_{i=1}{n}\frac{D_i}{D}\quad Gini(D_i)

三者区别

ID3会倾向于取值较多的特征。因此信息增益反映了给定条件后不确定性减少的程度,特征取值越多就意味着确定性更高,也就是条件熵越小。信息增益越大。这种方法的泛化性较弱。
引入信息增益比能够对取值较多的特征进行惩罚、避免ID3出现过拟合的特征。提高泛化。
从样本类型来看、ID3只能处理离散变量、而C4.5和CART都可以处理连续变量。C4.5通过对数组排序后找到类别不同的分割线作为切分点,古滕居切分点把连续属性转换为bool型,从而将连续变量转换成多个取值区间的离散型变量。而对于CART由于其在构建时每次都会对特征进行二值化分,因此可以很好的适用于连续型变量。
从应用角度ID3、C4.5只能用于分类任务,CART不仅能用于分类也能用于回归任务。
ID3对样本缺失值比较敏感,C4.5和CART可以对缺失值进行不同方式处理;ID3和CART可在每个节点上灿盛出多叉分支,且每个特征在层级之间不会复用,而CART每个节点只会产生两个分支,且特征会复用。
ID3和C4.5通过剪枝来权衡树的准确性和泛化能力。CART直接利用全部数据
发现所有可能的树结构进行对比。

决策树剪枝有哪些方法

预剪枝(pre-pruning)
后剪枝(post-pruning)

有哪些优化函数

梯度下降、随机梯度下降、小批量梯度下降、冲量法、adma。

冲量法是什么

冲量法(mountain)
选择是用 “泄漏的平均值” 取代梯度计算:

\mathbf{v}_t = \beta \mathbf{v}_{t-1} + \mathbf{g}_{t, t-1}

其中\mathbf{g}_{t,t-1}表示t时刻的梯度下降。

对于大约 \beta \in (0, 1)。这有效地将瞬时梯度替换为多个 * 过去 * 渐变的平均值。\mathbf{v} 被称为 * 动量 *。它累积了过去的梯度,类似于向下滚动目标功能景观的重球如何与过去的力量相结合。为了更详细地了解发生了什么,让我们递归地将 \mathbf{v}_t 扩展到

\begin{aligned} \mathbf{v}_t = \beta^2 \mathbf{v}_{t-2} + \beta \mathbf{g}_{t-1, t-2} + \mathbf{g}_{t, t-1} = \ldots, = \sum_{\tau = 0}^{t-1} \beta^{\tau} \mathbf{g}_{t-\tau, t-\tau-1}. \end{aligned}

大型 \beta 相当于长期平均值,而较小的 \beta 相对于梯度法只是略有修正。新的梯度替换不再指向特定实例下降最陡的方向,而是指向过去渐变的加权平均值的方向。这使我们能够实现对一批次进行平均值的大部分好处,而无需实际计算其梯度的成本。稍后我们将更详细地重新讨论这个平均程序。

上述推理构成了现在所谓的 * 加速 * 梯度方法的基础,例如具有动量的渐变。在优化问题条件不佳的情况下(例如,有些方向的进展比其他方向慢得多,类似狭窄的峡谷),他们还享受更有效的好处。此外,它们允许我们在随后的渐变中进行平均值,以获得更稳定的下降方向。事实上,即使是对于无噪音凸问题,加速方面也是动量起作用的关键原因之一,以及为什么它运行得如此良好。

PCA是什么

将高维数据用低维数据来还原,即将高维数据投影到低维空间中,并最大化投影方差。
流程:

  1. 对样本数据进行中心化处理
  2. 求样本协方差矩阵
  3. 对协方差矩阵进行特征值分解,将特征值从大到小排列。
  4. 取特征值前d维的特征向量w_1,w_2,...,w_d通过映射将n维样本映射到d维。
    x_i^{'}=\begin{bmatrix} \omega_1^Tx_i \\ \omega_2^Tx_i \\ \dots \\ \omega_d^Tx_i \\ \end{bmatrix}

决策树的常用启发函数

  1. ID3-最大信息熵增益
    对于样本集合D,类别数K,数据集D的经验熵为:
    H(D)=-\sum_{k=1}^{K}\frac{|C_k|}{|D|}{log_2\frac{|C_k|}{|D|}\quad}
    C_k是样本集合D中属于第k类的样本子集,|C_k|表示该子集元素个数,|D|表示样本集合的元素个数。
    计算某个特征A对于数据集D的经验条件熵H(D|A)为:
    H(D|A)=\sum_{i=1}^{n}\frac{|D_k|}{|D|}H(D_i)\\ =\sum_{i=1}^{n}\frac{|D_k|}{|D|}(-\sum_{k=1}^{K}\frac{|D_{ik}|}{|D_i|}{log_2\frac{|D_{ik}|}{|D_i|}\quad})
    其中D_iD中特征A取第i个值得样本子集,D_{ik}表示D_i中属于第k类得样本子集。
    使用g(D,A)表示信息增益。
    g(D,A)=H(D)-H(D|A)

  2. C4.5-最大信息增益比
    g_R(D,A)=\frac{g(D,A)}{H_A(D)}\\ H_A(D)=-\sum_{i=1}^{n}{\frac{|D_i|}{|D|}log_2\frac{|D_i|}{|D|}}

  3. CART-最大基尼指数
    Gini(D)=1-\sum_{k=1}^n{(\frac{|C_k|}{|D|})^2}
    Gini描述的是数据的纯度。
    特征A的Gini指数定义为:
    Gini(D|A)=\sum_{i=1}n\frac{|D_i|}{D}Gini(D_i)

ID3采用信息增益作为评价标准,会倾向于取值较多的特征。因为信息增益反映的是给定条件以后不确定性减少的程度,特征值取得越多意味着确定性越高。这种方法较容易过拟合。C4.5通过引入信息增益比一定程度上对取值比较多的特征进行优化(相当于引入惩罚项)
ID3只能处理离散变量,C4.5和CART都能处理连续变量,

有哪些超参数调优方法

  1. 网格搜索
  2. 随机搜索
  3. 贝叶斯优化
    通过对目标函数形状进行学习,找到使目标函数向全局最优值提升的参数。具体而言就是根据先验分布,假设一个搜集函数;然后每一次使用新的采样点来测试目标函数时,利用这个信息来更新目标函数的先验分布。最后算法测试有后验分布给出全局值最有可能出现的位置的点。

模型评估中有哪些方法,优缺点有什么

  • Holdout检验
    将原始样本的样本集合随即划分成训练集和验证集两部分。
    缺点是在验证集上计算的最后评估指标与原始分组有很大关系。

  • 交叉验证
    k-fold交叉验证:将样本分为k部分大小相等的子集;依次遍历这些子集,遍历到的子集作为验证集,其余作为训练集,将得到结果取均值作为最终评估指标。
    留一验证:每次留一个样本作为验证集。

  • 自助法
    前两种方法,当样本量较少时划分训练集验证集会使得训练数据减少。自助法:对于总数n的样本集合,进行n次有放回的随机抽样,得到大小为n的训练集。n次采样过程中(可以重复抽取),没有抽取出来的样本作为验证集。

什么是A/B测试,有什么作用

在这里插入图片描述
知乎解释
原因:

  1. 离线评估无法完全消除模型过拟合影响,因此离线评估效果无法代替线上评估结果。
  2. 离线评估无法完全还原线上工程环境。简而言之数据存在丢失、标签数据缺失、线上环境延迟等情况。
  3. 线上某些商业指标在离线评估中无法计算。

如何进行A/B测试

  1. 主要手段是进行用户分桶。将用户分为实验组和对照组,对实验组实行新模型,对对照组实行就模型。在分桶时猪一样笨独立性和采样方式无偏,确保同一个用户只能分到同一个桶中。

余弦距离是否为一个严格定义的距离

距离的定义:在一个集合中如果每一对元素克为宜确定一个实数,使得三条距离公里成立(正定性,对称性,三角不等式)成立,则该实数可称为这对元素之间的距离。

  • 正定性
    dist(A,B)\geq 0
    证明:
    dist(A,B)=1-cos(\theta)=\frac{||A||_2||B||_2-AB}{||A||_2||B||_2}\quad\geq0

  • 对称性
    dist(A,B)=dist(B,A)
    这个证明略。

  • 三角不等式
    dist(A,B)+dist(B,C)\geq dist(A,C)
    等号在共线时取得。
    给定三个点A=(1,0),B=(1,1),C=(0,1)则有:
    dist(A,B)=1-\frac{\sqrt{2}}{2}\quad\\ dist(B,C)=1-\frac{\sqrt{2}}{2}\quad\\ dist(A,C)=1\\ dist(A,B)+dist(B,C)\leq dist(A,C)

KL散度也不满足三角定理

在怎样的场景下使用余弦相似度而不是欧氏距离

向量A,B的余弦相似度为\frac{A\cdot B}{\vert\vert A\vert\vert_2||B||_2}\quad欧式距离为||A-B||_2,所以能够发现余弦距离大小与向量本身大小无关,所以在计算类似于文本相似度时两段文本类容相似但段落不一致,如果使用词向量或者词频作为特征计算欧斯距离可能较大、但余弦相似度较小。并且欧斯距离和纬度大小相关。
欧氏距离:||A-B||_2\\ 余弦相似度:cos(A,B)\\ 余弦距离:1-cos(A,B)
具体选择视情况而定。

ROC曲线是什么

ROC曲线是Receiver Operating Characteristic Curve简称。中文为“受试者工作特性曲线”。(最初源于医学领域)
ROC横坐标为假阳性率FPR=\frac{FP}{N}\quad。纵坐标为真阳性率TPR=\frac{TP}{P}\quad真阳性率也是召回率。

如何计算AUC

AUC是ROC曲线下的面积大小。该值能够量化反应基于ROC曲线衡量出的模型性能。

ROC曲线和P-R曲线有什么区别特点

ROC的横轴:FP/N纵轴:TP/P和P-R曲线横轴:TP/P纵轴:TP/(FP+TP)
在正负样本分布发生变化时ROC曲线基本保持不变,P-R曲线一般会发生较大变化。所以ROC能够更稳定反应模型本省好坏。P-R能够看到模型在特定数据集上的表现。

准确率(Accuracy)精准率(Precision)召回率(Recall)均方根误差(RMSE)区别和局限

  1. 准确率:Accuary=\frac{n_correct}{n_total}\quad
    当出现样本类别不平衡时这类方法无法有效区分、比如正样本1000个负样本10个只要预测时全为正样本就可以让正确率99%。

  2. 精准率:分类器分类正确的正样本个数占分类器分为正样本中的比例。

  3. 召回率:分类正确的正样本数占正真正样本的数量的比例。
    单独用精准率和召回率进行评估是不准确的,因此也引入了F1值。

  4. F1=\frac{2\times precision\times recall}{precision+recall}\quad

  5. RMSE=\sqrt{\frac{\sum_{i=1}^{n}(y_i-\hat{y_i})^2}{n}\quad}因为RMSE对于较大的离群样本会非常敏感即使模型效果较好但当遇见较少的离群较远样本也会使得RMSE值很差。
    为此可以使用平均绝对比五擦汗提高鲁棒性。
    MAPE=\sum_{i=1}^n\mid\frac{y_i-\hat{y_i}}{y_i}\mid \times \frac{100}{n}该方法相当于对每个误差点进行归一化。

生成方法和判别方法区别

判别方法:数据直接学习决策函数f(x)或者条件概率分布p(y|x)作为预测模型。该方法关心给定输入x,应该预测什么样的输出y。(KNN、感知机、决策树、逻辑斯蒂回归、SVM等)
生成方法:生成模型由数据学生西联合概率分布p(x,y)然后求出概率条件分布p(y|x)作为预测模型。模型表示了给定输入x产生输出y的生成关系(朴素贝叶斯法和隐马尔可夫模型)

过拟合应该如何处理

两种方法:

  1. 基于模型:
    简化模型(非线性模型变为线性模型)、添加约束(结构风险最小化、正则化)、集成学习、Dropout超参数等。

  2. 基于数据:
    数据扩充:对原始数据适当变换达到扩充数据的效果。

对于类别数据应该如何处理

常用的三种方法:

  1. 序号编码:比如衣服尺码三种s,m,l分别为1,2,3
  2. one-hot:分别为(1,0,0),(0,1,0),(0,0,1)
  3. 二进制编码:分别为(0,1),(1,0),(1,1)

除此以外还有Helmert Contrast、Sum Contrast、Polynomial Contrast等。

KL散度是什么

又称相对熵、是衡量相同空间中两个概率分布相对差距的测度。两个概率p(x)q(x)的KL散度为:

D(p||q)=\sum_{x\in X}p(x)log\frac{p(x)}{q(x)}\quad

交叉熵是什么、

用于衡量估计模型和真是概率分布之间的差异。
随机变量X\backsim p(x),模型q(x)用于近似p(x)的分布,
H(X,q)=H(X)+D(p||q)\\ =-\sum_{x\in X}p(x)logq(x)\\ =E_p(log\frac1{q(x)})

人工智能、机器学习、深度学习区别

人工智能泛指让机器具有人的智力的技术。
机器学习指计算机通过观察环境(学习数据特征)自我更新进步。
深度学习是机器学习的一种方法。基于神经网络。

特征工程是什么

对原始数据进行处理将其提炼为特征。从本质上讲特征工程是一个表现和展示数据的过程。实际工作生产中,特征工程指的是去除原始数据中的杂质和冗余。

为什么要做归一化、哪些类型数据需要做

是各个特征之间具有可比性(统一量纲)。使模型能够更容易通过梯度下降找到最优解。
在这里插入图片描述上图来源

主要方法有线性归一化。
\acute x=\frac{x-x_{min}}{x_{max}-x_{min}}\quad
标准化有些地方也叫零均值归一化
\acute x=\frac{x-\bar x}{\sigma}\quad
使用场景:

  1. 对输出范围有要求
  2. 数据较稳定,不存在极端最大值或最小值。
  3. 存在异常值或者较多噪声使用标准化,通过中心化避免异常值和极端值影响。
  4. SVM,KNN,PCA等模型必须进行归一化或者标准化。

决策树 不需要归一化因为其计算的是信息增益比,信息增益比和特征是否归一化无关。

归一化和标准化区别

归一化会改变数据的原始距离、分布和信息。标准化不会。

深度学习

注意力机制是什么(Q、K、V)是什么

通过Q对每个K进行匹配、使得Q(自主性提示)和K(非自主性提示)进行交互,然后引导偏向于V(感官输入)。

注意力评分是什么

Q与(键值对)的匹配的注意力权重之和。
f(q,(k_1,v_1),(k_2,v_2)...,(k_m,v_m)) = \sum_{i}^{m}{\alpha{(q,k_i)}v_i}
\alpha{(q,k_i)}为标量,计算公式为:
\alpha(\mathbf{q}, \mathbf{k}_i) = \mathrm{softmax}(a(\mathbf{q}, \mathbf{k}_i)) = \frac{\exp(a(\mathbf{q}, \mathbf{k}_i))}{\sum_{j=1}^m \exp(a(\mathbf{q}, \mathbf{k}_j))} \in \mathbb{R}.

注意力评分函数有哪些

加性注意力函数

一般来说,当查询和键是不同长度的矢量时,可以使用加性注意力作为评分函数。
a(\mathbf q, \mathbf k) = \mathbf w_v^\top \text{tanh}(\mathbf W_q\mathbf q + \mathbf W_k \mathbf k) \in \mathbb{R},

缩放点积注意力

使用点积可以得到计算效率更高的评分函数。但是点积操作要求查询和键具有相同的长度 𝑑。假设查询和键的所有元素都是独立的随机变量,并且都满足均值为 0 和方差为 1。那么两个向量的点积的均值为 0,方差为 𝑑。为确保无论向量长度如何,点积的方差在不考虑向量长度的情况下仍然是 1,则可以使用 缩放点积注意力(scaled dot-product attention) 评分函数:
a(\mathbf q, \mathbf k) = \mathbf{q}^\top \mathbf{k} /\sqrt{d}
将点积除以 \sqrt{d}。在实践中,我们通常从小批量的角度来考虑提高效率,例如基于 n 个查询和 m 个键-值对计算注意力,其中查询和键的长度为 d,值的长度为 v。查询 \mathbf Q\in\mathbb R^{n\times d}、键 \mathbf K\in\mathbb R^{m\times d} 和值 \mathbf V\in\mathbb R^{m\times v} 的缩放点积注意力是

\mathrm{softmax}\left(\frac{\mathbf Q \mathbf K^\top }{\sqrt{d}}\right) \mathbf V \in \mathbb{R}^{n\times v}.

深度学习优势

能够处理人们并不完全懂得问题,也更加擅长处理含噪声或不完全的数据。

卷积网络

卷积下一层大小如何计算,padding和stride有什么作用

通常,垂直padding为p_h当垂直步幅为 s_h 、水平padding为p_w水平步幅为 s_w 时,输出形状为

\lfloor(n_h-k_h+p_h+s_h)/s_h\rfloor \times \lfloor(n_w-k_w+p_w+s_w)/s_w\rfloor.

  1. 填充可以增加输出的高度和宽度。这常用来使输出与输入具有相同的高和宽。
  2. 步幅可以减小输出的高和宽,例如输出的高和宽仅为输入的高和宽的 1/𝑛( 𝑛 是一个大于 1 的整数)。
  3. 填充和步幅可用于有效地调整数据的维度。

卷积运算

其实严格意义不能叫做卷积运算而应该叫做互相关运算,因为在实际卷积中是输入张量和卷积张量进行互相关运算产生张量。
在这里插入图片描述
截图:李沐老师动手学习深度学习

0\times0+1\times1+3\times2+4\times3=19,\\ 1\times0+2\times1+4\times2+5\times3=25,\\ 3\times0+4\times1+6\times2+7\times3=37,\\ 4\times0+5\times1+7\times2+8\times3=43.
假设·输入的二维大小为n_h\times n_w卷积核为k_h\times k_w 输出大小为:(n_h-k_h+1)\times (n_w-k_w+1)(步长为1,不带padding(也就是卷积核能够全部遍历且不溢出的情况))。

什么是感受野、怎样计算感受野

对于某层输出特征图上某个点,在卷积网络的原始输入数据上能够影响到这个点的取值的区域。

一维卷积是什么

普通卷积可以转化为矩阵乘法。
y=Ax
x,y为卷的输入输出(展平为一维向量的形式)维度分别为d^{(i)}和 d^{o},A是由卷积核、滑动步长决定的长对角矩阵维度为d^{0}\times d^{i},其每一行对应着卷积核的一次滑动位置。
定义一维输入向量x=[a,b,c,d,e,f,g]^T,卷积核为K=[x,y,z],设卷积的滑动步长为2,则输出向量为:
y=\begin{bmatrix} ax+by+cz \\ cx+dy+ez \\ ex+fy+gz\\ \end{bmatrix}=\begin{bmatrix} x&y&y&z&0&0&0&0 \\ 0&0&x&y&y&z&0&0\\ 0&0&0&0&x&y&y&z\\ \end{bmatrix}\begin{bmatrix} a\\ b\\ c\\ d\\ e\\ f\\ g\\ \end{bmatrix}\\ =Ax

卷积网络变种有哪些

  1. 分组卷积:将输入通道和输出通道都划分为同样的组数,然后让处于相同组号的输入输出通道互相进行“全连接”。记g为输入\输出通道所分的组数,则其参数量和计算量都降低为普通卷积的1/g

  2. 转置矩阵:普通卷积为y=AxA^T为矩阵A的转置,定义转置卷积运算为:\hat{y}=A^T\hat{x}
    \hat{x}和\hat{y}为转置卷积的输入和输出。起作用:1.转置卷积能够将普通卷积中输入到输出的尺寸 变换逆反。2.转置卷积的信息正向传播与普通卷积的反向传播所用矩阵相同。实现对特征图进行扩展或者上采样。

  3. 空洞卷积:在不使用池化的情况下扩大感受野。

卷积网络和全连接层的区别

MLP是输出层每个节点于输入层每个节点都有连接。
卷积神经网络具有 局部连接权值共享
卷积核通过对输入的多通道特征图进行扫描和运算。
在这里插入图片描述

  1. 局部链接: 因为卷积核尺寸小于输入的特征图尺寸,所以输出层的每个节点都只和输入层的部分节点相关,这与生物视觉信号相似,存在一个感受野的概念。全连接层中节点之间的连接时稠密的。

  2. 权值共享:因为卷积核参数一致是的在输出层上不同位置的节点与输入层权值连接都一样。全连接层中不同节点连接权值不同。
    为什么要权值共享百度百科 :另外,换个角度理解为什么权值要固定,比如我有个曲线的特征过滤器,那么这个过滤器在扫描全图的时候,我们想要提取出所有的曲线区域,是不是这个过率器不能变?如果在上半部分过滤器是曲线,到下半部分变成了直线,那么在图像上下区域内提取出来的曲线特征是真正的曲线吗?个人认为从这个直白的角度更容易理解。
    百面深度学习 :权值共享降低内存和计算复杂度。

  3. 输入/输出数据结构化:在输入输出时保持原始数据的结构、空间对应特征。(二维图像进入全连接层会损失数据与原始数据结构上的对应)

卷积神经网络近年来的结构设计上的主要发展和变迁

  • AlexNet
  1. 其主要堆砌了卷积层和池化层,在网络末端加上了全连接层和Softmax
  2. 采用ReLU作为激活函数(替换了Sigmoid函数(一个是在0值附近梯度问题和均值方差偏移))缓解了梯度消失问题。
  3. 使用了局部响应归一化(LRN):对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力,并且加快收敛。
  4. 使用了Dropout和数据扩充
  5. 利用分组卷积突破GPU显存瓶颈
  • VGGNet
    采用同一个尺寸的卷积核和池化层。网络更深
  1. 使用3 3卷积核代替之前5 5,7*7等打卷机和,使得在更少的参数量、更小的计算量下,获得同样的感受野和更深更大的网络深度。
  2. 2\times2 池化代替3\times3池化这里我没太懂希望有懂的大佬说一下
  3. 去掉了局部响应归一化
  • GoogLeNet/Inception-v1
    将网络中的大模块替换成由多个卷积层组成的多分支结构。数学依据是,大型稀疏矩阵可以分解成多个稠密小矩阵。Inception模块会使用1\times1、3\times3、5\times5三种卷积核进行多路特征提取。是的网络稀疏化的同时,增强网络对多尺寸特征的适应性。
  1. 1\times1卷积核可以对通道数进行压缩减少计算量。
  2. 网络中有多条支路,环节梯度消失问题。
  3. 在网络末端将之前的网络的第一个全连接层换成了全局平均池化层。
  • ResNet
    随着网络层数增加,网络的训练误差和测试误差都会上升。称为网络退化(degeneration)。其与过拟合是不同的。其采用了跳层连接(shortcut connection)。
  1. 缩短误差反向传播到各层的路径,有效抑制梯度消失现象。
  2. 当发生网络加深性能退化时,跳层连接和其直连结构组合使得网络回到之前网络的浅层状态。

循环神经网络

RNN网络是怎样计算的

\mathbf{h_t} = \phi(\mathbf{W _{HH}h_t-1 + W_{hx}x_t+b_{h}})

GRU

在简单RNN上面新增了重置门和更新门。均为0-1的向量。
重置门:重置门允许我们控制可能还想记住的过去状态的数量。
更新们:更新门将允许我们控制新状态中有多少个是旧状态的副本。
数学描述,对于给定的时间步 t,假设输入是一个小批量 \mathbf{X}_t \in \mathbb{R}^{n \times d} (样本个数:n,输入个数:d),上一个时间步的隐藏状态是 \mathbf{H}_{t-1} \in \mathbb{R}^{n \times h}(隐藏单元个数:h)。然后,重置门 \mathbf{R}_t \in \mathbb{R}^{n \times h} 和更新门 \mathbf{Z}_t \in \mathbb{R}^{n \times h} 的计算如下:

\begin{aligned} \mathbf{R}_t = \sigma(\mathbf{X}_t \mathbf{W}_{xr} + \mathbf{H}_{t-1} \mathbf{W}_{hr} + \mathbf{b}_r),\\ \mathbf{Z}_t = \sigma(\mathbf{X}_t \mathbf{W}_{xz} + \mathbf{H}_{t-1} \mathbf{W}_{hz} + \mathbf{b}_z), \end{aligned}

其中 \mathbf{W}_{xr}, \mathbf{W}_{xz} \in \mathbb{R}^{d \times h}\mathbf{W}_{hr}, \mathbf{W}_{hz} \in \mathbb{R}^{h \times h} 是权重参数,\mathbf{b}_r, \mathbf{b}_z \in \mathbb{R}^{1 \times h} 是偏置参数。请注意,在求和过程中会触发广播机制。我们使用 sigmoid 函数)将输入值转换到区间 (0, 1)
接下来,将重置门 \mathbf{R}_t 与常规隐状态更新机制集成,得到在时间步 t 的候选隐藏状态 \tilde{\mathbf{H}}_t \in \mathbb{R}^{n \times h}

\tilde{\mathbf{H}}_t = \tanh(\mathbf{X}_t \mathbf{W}_{xh} + \left(\mathbf{R}_t \odot \mathbf{H}_{t-1}\right) \mathbf{W}_{hh} + \mathbf{b}_h),

其中 \mathbf{W}_{xh} \in \mathbb{R}^{d \times h}\mathbf{W}_{hh} \in \mathbb{R}^{h \times h} 是权重参数,\mathbf{b}_h \in \mathbb{R}^{1 \times h} 是偏置项,符号 \odot 是哈达码乘积(按元素乘积)运算符。在这里,我们使用 tanh 非线性激活函数来确保候选隐藏状态中的值保持在区间 (-1, 1) 中。

计算的结果是 候选隐藏状态 (candidate),因为我们仍然需要结合更新门的操作。\mathbf{R}_t\mathbf{H}_{t-1} 的元素相乘可以减少以往状态的影响。每当重置门 \mathbf{R}_t 中的项接近 1 时,相当于普通的循环神经网络。对于重置门 \mathbf{R}_t 中所有接近 0 的项,候选隐藏状态是以 \mathbf{X}_t 作为输入的多层感知机的结果。因此,任何预先存在的隐藏状态都会被 重置 为默认值。
最后,我们需要结合更新门 \mathbf{Z}_t 的效果。这确定新的隐藏状态 \mathbf{H}_t \in \mathbb{R}^{n \times h} 在多大程度上就是旧的状态 \mathbf{H}_{t-1} ,以及对新的候选状态 \tilde{\mathbf{H}}_t 的使用量。更新门 \mathbf{Z}_t 仅需要在 \mathbf{H}_{t-1}\tilde{\mathbf{H}}_t 之间进行按元素的凸组合就可以实现这个目标。这就得出了门控循环单元的最终更新公式:

\mathbf{H}_t = \mathbf{Z}_t \odot \mathbf{H}_{t-1} + (1 - \mathbf{Z}_t) \odot \tilde{\mathbf{H}}_t.

每当更新门 \mathbf{Z}_t 接近 1 时,我们就只保留旧状态。此时,来自 \mathbf{X}_t 的信息基本上被忽略,从而有效地跳过了依赖链条中的时间步 t。相反,当 \mathbf{Z}_t 接近 0 时,新的隐藏状态 \mathbf{H}_t 就会接近候选的隐藏状态 \tilde{\mathbf{H}}_t。这些设计可以帮助我们处理循环神经网络中的梯度消失问题,并更好地捕获时间步距离很长的序列的依赖关系。例如,如果整个子序列的所有时间步的更新门都接近于 1,则无论序列的长度如何,在序列起始时间步的旧隐藏状态都将很容易保留并传递到序列结束。
总之,门控循环单元具有以下两个显著特征:

  • 重置门有助于捕获序列中的短期依赖关系。
  • 更新门有助于捕获序列中的长期依赖关系。

LSTM

数学描述,假设有 h 个隐藏单元,批量大小为 n,输入数为 d。因此,输入为 \mathbf{X}_t \in \mathbb{R}^{n \times d},前一时间步的隐藏状态为 \mathbf{H}_{t-1} \in \mathbb{R}^{n \times h}。相应地,时间步 t 的门被定义如下:输入门是 \mathbf{I}_t \in \mathbb{R}^{n \times h},遗忘门是 \mathbf{F}_t \in \mathbb{R}^{n \times h},输出门是 \mathbf{O}_t \in \mathbb{R}^{n \times h}。它们的计算方法如下:

\begin{aligned} \mathbf{I}_t &= \sigma(\mathbf{X}_t \mathbf{W}_{xi} + \mathbf{H}_{t-1} \mathbf{W}_{hi} + \mathbf{b}_i),\\ \mathbf{F}_t &= \sigma(\mathbf{X}_t \mathbf{W}_{xf} + \mathbf{H}_{t-1} \mathbf{W}_{hf} + \mathbf{b}_f),\\ \mathbf{O}_t &= \sigma(\mathbf{X}_t \mathbf{W}_{xo} + \mathbf{H}_{t-1} \mathbf{W}_{ho} + \mathbf{b}_o), \end{aligned}

其中 \mathbf{W}_{xi}, \mathbf{W}_{xf}, \mathbf{W}_{xo} \in \mathbb{R}^{d \times h}\mathbf{W}_{hi}, \mathbf{W}_{hf}, \mathbf{W}_{ho} \in \mathbb{R}^{h \times h} 是权重参数,\mathbf{b}_i, \mathbf{b}_f, \mathbf{b}_o \in \mathbb{R}^{1 \times h} 是偏置参数。

候选记忆单元

接下来,设计记忆单元。由于还没有指定各种门的操作,所以先介绍 候选记忆单元 (candidate memory cell)\tilde{\mathbf{C}}_t \in \mathbb{R}^{n \times h}。它的计算与上面描述的三个门的计算类似,但是使用 \tanh 函数作为激活函数,函数的值范围为 (-1, 1)。下面导出在时间步 t 处的方程:

\tilde{\mathbf{C}}_t = \text{tanh}(\mathbf{X}_t \mathbf{W}_{xc} + \mathbf{H}_{t-1} \mathbf{W}_{hc} + \mathbf{b}_c),

其中 \mathbf{W}_{xc} \in \mathbb{R}^{d \times h}\mathbf{W}_{hc} \in \mathbb{R}^{h \times h} 是权重参数,\mathbf{b}_c \in \mathbb{R}^{1 \times h} 是偏置参数。

记忆单元

在门控循环单元中,有一种机制来控制输入和遗忘(或跳过)。类似地,在长短期记忆网络中,也有两个门用于这样的目的:输入门 \mathbf{I}_t 控制采用多少来自 \tilde{\mathbf{C}}_t 的新数据,而遗忘门 \mathbf{F}_t 控制保留了多少旧记忆单元 \mathbf{C}_{t-1} \in \mathbb{R}^{n \times h} 的内容。使用与前面相同的按元素做乘法的技巧,得出以下更新公式:

\mathbf{C}_t = \mathbf{F}_t \odot \mathbf{C}_{t-1} + \mathbf{I}_t \odot \tilde{\mathbf{C}}_t.

如果遗忘门始终为 1 且输入门始终为 0,则过去的记忆单元 \mathbf{C}_{t-1} 将随时间被保存并传递到当前时间步。引入这种设计是为了缓解梯度消失问题,并更好地捕获序列中的长距离依赖关系。

隐藏状态

最后,我们需要定义如何计算隐藏状态 \mathbf{H}_t \in \mathbb{R}^{n \times h}。这就是输出门发挥作用的地方。在长短期记忆网络中,它仅仅是记忆单元的 \tanh 的门控版本。这就确保了 \mathbf{H}_t 的值始终在区间 (-1, 1) 内。

\mathbf{H}_t = \mathbf{O}_t \odot \tanh(\mathbf{C}_t).

只要输出门接近 1,我们就能够有效地将所有记忆信息传递给预测部分,而对于输出门接近 0,我们只保留存储单元内的所有信息,并且没有进一步的过程需要执行。

全部评论 (0)

还没有任何评论哟~