算法实习-八股整理(腾讯面试真题)

1.top k和top p分别表示什么意思

用来选择输出token(解码)的两种主要方法

(1)挑出top token:贪心解码

贪心解码是一种合理的策略,但也有一些缺点,例如输出带有重复文本循环。想一想智能手机的自动建议中的建议。当您不断选择最高建议的单词时,它可能会变成重复的句子

(2)从top token中挑选:top-k

top-k 参数设置为 3,意思是从前 3 个tokens的候选名单中抽样。这种方法允许其他高分tokens有机会被选中。这种采样引入的随机性有助于在很多情况下生成的质量。将 top-k 设置为 1 可以进行贪心解码。

(3)从概率加起来为p的top tokens中挑选:top-p

在自然语言处理中,特别是在生成文本的模型(如语言模型)中,Top-p采样(也称为nucleus采样)是一种文本生成的策略,它的目标是在生成连贯且有多样性的文本的同时平衡确定性和随机性。

Top-p采样过程如下:

  1. 首先,模型计算词汇表中每个单词的概率分布,通常是通过softmax函数得到。
  2. 按概率从高到低排列单词,并计算累积概率。
  3. 选择一个概率阈值p(0 < p < 1),然后从概率分布中选择一个最小的子集,其中这个子集中单词的累积概率大于等于p。
  4. 最后,从这个子集中随机选择下一个单词。

特点和优势:

  • 更多样的文本生成:由于不再限制为k个最可能的单词,Top-p采样允许模型在有更高不确定性的情况下也能生成单词,这有助于生成更多样化的句子。
  • 动态词汇子集:不同于Top-k采样固定选择概率最高的k个单词,Top-p采样的词汇子集大小是动态变化的。在某些情况下,可能只有少数单词的累积概率就已经超过p,而在其他情况下,可能需要很多单词才能达到阈值p。
  • 减少奇异或非感知输出:Top-p采样能够通过忽略极其低概率的单词,减少奇异或者非语境相关的输出,从而生成更自然、更符合语境的文本。

Top-p采样是一种流行的语言模型生成策略,能够平衡生成文本的多样性和质量,被用于GPT-2、GPT-3等先进的模型中用于生成自然语言文本。

(4)temperture

较低的温度意味着较少的随机性;温度为 0 将始终产生相同的输出。执行具有“正确”答案的任务(如问题回答或总结)时,较低的温度(小于 1)更合适。如果模型开始自我重复,则表明温度过低。

高温意味着更多的随机性,这可以帮助模型给出更有创意的输出。如果模型开始偏离主题或给出无意义的输出,则表明温度过高。

2.L1正则化和L2正则化

正则化(Regularization)是一种用于避免机器学习模型过拟合的技术。
(1)L1正则化:也称为Lasso正则化,它通过将权重的绝对值之和加入损失函数来工作。如果模型参数是 ( \theta = (\theta_1, \theta_2, ..., \theta_n) ),L1正则化项就是 ( \lambda \sum_{i=1}^{n} |\theta_i| ),其中 ( \lambda ) 是一个超参数,用于控制正则化的强度。通过权重衰减来减少模型对训练数据的过拟合。L1正则化因其产生稀疏解的特性,特别适用于特征选择,帮助模型在许多特征中寻找最重要的那些。

(2)L2正则化:也称为Ridge正则化,它通过将权重的平方和加入损失函数来工作。L2正则化倾向于将权重分散到所有的特征上,但使得权重值较小,从而防止任何单个特征对模型预测的影响过大

3.优化器

在机器学习中,优化器是用来最小化(或最大化)一个目标函数,这个目标函数通常是损失函数,它衡量模型预测值与实际值之间的差距。优化器的目的是通过调整模型的参数来找到损失函数的最小值,从而使模型达到最佳的性能。

优化器在训练过程中执行以下主要任务:

  1. 计算梯度:优化器根据当前参数计算损失函数相对于各个参数的梯度。梯度是损失函数在参数空间中上升最快的方向,而我们的目的是下降到损失最小的点,因此需要向梯度的相反方向更新参数。
  2. 更新参数:优化器使用计算得到的梯度来更新模型的参数。通过这种方式,参数会逐渐调整以减少损失函数的值。
  3. 确定步长:优化器需要确定在参数空间中移动的步长,也称为学习率。学习率决定了参数更新的幅度,太大可能会导致跳过最佳解,太小可能会导致训练过程缓慢或陷入局部最小值。

优化器(Optimizer) 在深度学习中起着关键的作用,它决定了如何更新网络的权重来最小化损失函数。优化器的目标就是通过改变模型的权值,最小化(或最大化)给定的目标函数。

常见的优化器包括:

  1. 随机梯度下降(Stochastic Gradient Descent, SGD):SGD是最基本的优化算法,它使用一部分的样本来计算梯度并更新模型的权重。SGD可能会在训练过程中产生较大的波动。
  2. 带动量的随机梯度下降(Momentum):Momentum算法借鉴了物理学中的动量概念,它模拟的是物体运动时的惯性,即在更新的时候,会考虑上一次的更新方向。
  3. Adagrad:Adagrad是一种自适应学习率的方法,学习率的更新是基于全部历史梯度的函数,梯度大的参数学习率降低,梯度小的参数学习率升高。
  4. RMSprop:RMSprop可以看作是Adagrad算法的一个变种,解决了Adagrad学习率单调递减的问题,它仅考虑了最近一段时间内的平均梯度。
  5. Adam:Adam算法可以看作是把Momentum和RMSprop结合起来的优化函数,既考虑了历史梯度的一阶和二阶矩估计。

对于上述优化器的选择,没有硬性规定哪一种优化器总是优于其他优化器,取决于具体的应用和任务。在实际应用中,Adam优化器因为其综合了Momentum和RMSprop的优点,被广泛应用于各种深度学习任务中。

4.梯度消失&梯度爆炸

梯度消失(Vanishing Gradient)梯度爆炸(Exploding Gradient) 是深度学习训练中常见的两个问题。这两种情况都会影响到模型的学习过程。

  1. 梯度消失:在梯度下降过程中,通常用计算得到的梯度来调整模型的权重。但如果梯度很小(接近于0),那么权重的更新就会变得非常小,这将导致模型训练变得非常慢,甚至可能完全停止学习,这就是梯度消失的问题。
  2. 梯度爆炸:与梯度消失相反,如果梯度很大,那么权重的更新就会变得非常大,导致模型训练过程中产生大幅的波动,甚至可能导致模型的权重变得无穷大,从而引发模型的不稳定。这就是梯度爆炸的问题。

针对这两个问题,有几种常用的解决方案:

  1. 权重初始化:权重的初始化方式可以对训练过程有很大的影响。例如,使用 Xavier 初始化方法或 He 初始化方法,可以根据输入和输出的神经元数量来适当地初始化权重。这种方法可以有效地防止在训练初期就出现梯度消失或梯度爆炸。
  2. 非饱和激活函数:使用 ReLU(Rectified Linear Unit) 或者其变种,例如 Leaky ReLU 和 ELU,可以有效地解决梯度消失的问题,因为它们在正数区间内的梯度都为1。
  3. Batch Normalization:使用 Batch Normalization 可以在训练过程中对每一层的输入进行规范化处理,使得每层的输入都保持在一定的范围内,从而防止梯度消失和梯度爆炸。
  4. 梯度裁剪 (Gradient Clipping):当梯度的值超过某个阈值的时候,就将梯度的值设置为那个阈值。这是一种非常直观的方式来防止梯度爆炸。
  5. 残差连接 (Residual connection or shortcut connection):这是一种在深度神经网络中常见的技术,通过给网络添加跨层的连接,使得梯度可以直接从后面的层传到前面的层,从而缓解梯度消失问题。
  6. 长短期记忆 (Long Short Term Memory, LSTM) 和门控循环单元 (Gated Recurrent Unit, GRU) 等:在处理序列数据时,使用这些结构可以有效地解决梯度消失问题,因为它们都设计有特殊的结构(如门控机制)来保持长期依赖信息的传递,从而避免了梯度消失问题。

  • 21
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力毕业的每一天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值