Deep Learning
未读和大部分人一样,我对自然语言处理和语言模型的了解从ChatGPT开始。也和大部分人一样,第一次接触就被ChatGPT的能力所震惊 —— 硅基智能确实做到了理解人类的语言。
我也产生了几乎人人都会有的疑问:怎么做到的?硅基智能潜力是否会远胜于碳基智能?
在这篇文章中,我并不试图去解释ChatGPT的一切,而是将从原理出发,思考计算机理解语言的关键要素,这些思考落到了一个具体的切入点 —— embedding —— 一个第一眼难以理解但极为关键的东西。
文章是一个门外汉通过业余的研究和碎片的思考所完成,谬误之处难以避免,欢迎专业的研究人员指正。
1 编码:文字的数字化
Embedding 这个词直译为中文是:嵌入,这是让人头秃的两个字 —— 啥是嵌入?嵌入了啥?跟自然语言又有啥关系?
嵌入的体现形式是一组具有固定长度的数组,或者叫做向量,但它究竟是什么?为什么需要它?它在计算机理解自然语言的过程中扮演的是怎样的角色呢?
要回答这些问题,不妨先思考:让计算机理解自然语言,我们需要做什么?
计算的基础是数,而自然语言是文字,因此很容易想到要做的第一步是让文字数字化,为行文方便,我们将这个过程叫 ...
Deep Learning
未读(Latent Space)理解深度学习中的潜在空间
什么是潜在空间?
If I have to describe latent space in one sentence, it simply means a representation of compressed data.
[!NOTE]
想象一个大的手写数字数据集(0–9),就像上面显示的那样。 与其他不同编号(即3s与7s)的图像相比,相同编号的手写图像(即3的图像)彼此最相似。 但是我们可以训练一种算法来识别这些相似之处吗? 如何进行?如果您已经训练了一个模型来对数字进行分类,那么您也已经训练了该模型来学习图像之间的“结构相似性”。 实际上,这就是模型能够通过学习每个数字的特征而首先对数字进行分类的方式。这个过程似乎对您“隐藏”了,那根据定义,潜在性即是指“隐藏”。
“潜在空间”的概念很重要,因为它的用途是“深度学习”的核心-学习数据的特征并简化数据表示形式以寻找模式。
其实,Latent Variable这个概念在统计机器学习中并不陌生,概率图模型里从GMM (高斯混合模型), HMM(隐马尔科夫模型), 到PP ...
低秩分解的几何解释
低秩分解(Low-rank factorization)也可以通过几何的方式来解释,帮助我们理解其含义和应用。
假设我们有一个m×n的矩阵A,我们希望对其进行低秩分解,即将其分解为两个低秩矩阵的乘积:A ≈ UV^T。其中,U是一个m×k的矩阵,V是一个n×k的矩阵,k远远小于m和n。
几何上,可以将矩阵A视为描述一个向量空间中的点集。每一列可以看作是一个向量,而这些向量组成了一个n维的向量空间。低秩分解可以理解为通过两个低维的向量空间的点集的线性组合来近似表示原始向量空间中的点集。
具体地说,U矩阵的列向量可以看作是原始向量空间的基向量,它们将原始向量空间中的点集映射到一个低维的子空间。V矩阵的列向量则表示这个低维子空间中的基向量。通过对这两个子空间的基向量的线性组合,我们可以近似表示原始向量空间中的点集。
这个分解可以理解为以下几个几何步骤:
U矩阵的列向量将原始向量空间中的点集映射到一个低维的子空间。这个子空间具有较低的维度k。
V矩阵的列向量表示这个低维子空间中的基向量,用于描述子空间中的点集。
通过对U和V的线性组合,将低维子空间中的点集映射回原始向量空 ...
Deep Learning
未读Siamese网络
问题背景
分类问题:
分类数量较少,每一类的数据量较多,比如ImageNet、VOC等。这种分类问题可以使用神经网络或者SVM解决,只要事先知道了所有的类。
分类数量较多(或者说无法确认具体数量),每一类的数据量较少,比如人脸识别、人脸验证任务。
解决方法:
提出一种思路:将输入映射为一个特征向量,使用两个向量之间的距离来表示输入之间的差异,如图像语义上的差异。
Siamese网络,每次需要输入两个样本作为一个sample对计算损失函数。
提出Contrastive Loss用于训练。
应用场景
孪生神经网络用于处理两个输入"比较类似"的情况。伪孪生神经网络适用于处理两个输入"有一定差别"的情况。比如,我们要计算两个句子或者词汇的语义相似度,使用siamese network比较适合;如果验证标题与正文的描述是否一致(标题和正文长度差别很大),或者文字是否描述了一幅图片(一个是图片,一个是文字),就应该使用pseudo-siamese network。也就是说,要根据具体的应用,判断应该使用哪一种结构,哪一种L ...
可解释机器学习
作者:SkylaSun
链接:https://zhuanlan.zhihu.com/p/570926717
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
可解释机器学习
可解释性方法将机器学习模型的决策过程转变成人类更能理解的结果。通用可解释性方法一般仅基于特征进行解释,无法处理图结构信息,在处理漏洞发掘场景下的图数据时,作者将边的相关性分数传递到邻接节点中,从而产生一个节点级别的解释。
CAM(类别激活映射图),一种特征可视化技术,最初为解释CNN模型而设计,将深层网络中学习到的语义信息,通过权重与输出节点联系起来。
线性近似,通过梯度与输入,计算每个特征对分类输出的线性化贡献。
GradCAM,将线性近似方法应用于GNN层的中间激活函数,而非输入激活,产生了类似CAM的优势。
SmoothGrad,对多个噪声输入进行节点特征梯度平均,并且产生了抗噪声的解释。
IG(积分梯度),改进了线性近似,过程中参考了反事实基线输入G‘,并且使用延实际输入G的直线路径平均的梯度,以及G和G’之间的输入激活。
Gradient or Salie ...
Deep Learning
未读Triplet Loss
💡 TripletLoss案例
【对比学习】| Triplet loss
MXNet/Gluon 中 Triplet Loss 算法
1.什么是triplet loss 损失函数?
triplet loss 是深度学习的一种损失函数,主要是用于训练差异性小的样本,比如人脸,细粒度分类等;其次在训练目标是得到样本的embedding任务中,triplet loss 也经常使用,比如文本、图片的embedding。本文主要讨论,对于训练样本差异小的问题。
2.tripletloss原理
损失函数公式:
。输入是一个三元组,包括锚(Anchor)示例、正(Positive)示例、负(Negative)示例,通过优化锚示例与正示例的距离小于锚示例与负示例的距离,实现样本之间的相似性计算。a:anchor,锚示例;p:positive,与a是同一类别的样本;n:negative,与a是不同类别的样本;margin是一个大于0的常数。最终的优化目标是拉近a和p的距离,拉远a和n的距离。其中样本可以分为三类:
**easy triplets:**即
,这种情况不需要 ...
Deep Learning
未读
总结
在此,笔者可以得到一些对Multi-Head-Attention的结论:
通俗点理解Self-Attention就是用Q、K计算出每个token的权重进而对V向量进行提纯的方法,为什么叫Self-Attention呢,就是Q、K、V是来自于同一个输入经过三个不同的线性变换得到的。
对于大部分query,每个头都学习了某种固定的pattern模式,而且12个头中大部分pattern是差不多的,但是总有少数的pattern才能捕捉到语法/句法/词法信息。
《Attention Is All You Need》这篇原论文原文中解释了多头的作用:将隐状态向量分成多个头,形成多个子语义空间,可以让模型去关注不同维度语义空间的信息(或者说让模型去关注不同方面的信息)。
多头attention的有些头的功能是不一样的,有的头可能没啥信息(如第5head),有的头pattern由位置信息主导,有的头由语法信息主导,有的头由词法信息主导,而能够捕捉到语法/句法/词法信息的头其实是非常少的(这一点已被大量学术论文证明,笔者的句法破坏实验也验证了这一点),那么multi-head的作 ...
注意力机制
注意力机制是深度学习模型中的一种强大工具,可以选择性地关注输入数据的特定特征或部分。注意力机制的引入在各种自然语言处理(NLP)任务中,如机器翻译、文本摘要和语音识别等方面,都取得了显著的改进。
有几种类型的注意力机制。以下是其中一些最流行的类型:
1. 软注意力
软注意力是一种注意力机制,它计算输入特征的加权和,其中权重在训练过程中学习。软注意力通常用于序列到序列模型中,在这种模型中,输出取决于整个输入序列。软注意力已被证明可以显著提高机器翻译模型的性能。
Soft Attention=∑i=1Txαihi\text{Soft Attention} = \sum_{i=1}^{T_x} \alpha_i h_iSoft Attention=∑i=1Txαihi
其中,TxT_xTx是输入序列的长度,hih_ihi是第iii个输入特征向量,αi\alpha_iαi是第iii个特征向量的权重,由以下公式计算:
αi=exp(ei)∑j=1Txexp(ej)\alpha_i = \frac{\exp(e_i)}{\sum_{j=1}^{T_x} \exp(e_ ...
正则化
0 范数:向量中非零元素的个数
1 范数: 向量中各个元素绝对值之和。
2 范数: 向量中各个元素平方和的 1/2 次方,L2 范数又称 Euclidean 范数或者 Frobenius 范数
p 范数: 为 x 向量各个元素绝对值 p 次方和的 1/p 次方
L1 和 L2 正则先验分别服从什么分布?L1 是拉普拉斯分布,L2 是高斯分布。
为什么 L1 和 L2 正则化可以防止过拟合?
拟合过程中通常都倾向于让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什么影响,即抗扰动能力强。
L1 & L2 正则化会使模型偏好于更小的权值。更小的权值意味着更低的模型复杂度;**添加 L1 & L2 正则化相当于为模型添加了某种先验,**限制了参数的分布,从而降低了模型的复杂度。
模型的复杂度降低,意味着模型对于噪声与异常点的抗干 ...
激活函数对神经网络的重要性自不必多言,机器之心也曾发布过一些相关的介绍文章,比如《一文概览深度学习中的激活函数》。本文同样关注的是激活函数。来自丹麦技术大学的 Casper Hansen 通过公式、图表和代码实验介绍了 sigmoid、ReLU、ELU 以及更新的 Leaky ReLU、SELU、GELU 这些激活函数,并比较了它们的优势和短板。
选自mlfromscratch,作者:Casper Hansen,机器之心编译,参与:熊猫、杜伟。
在计算每一层的激活值时,我们要用到激活函数,之后才能确定这些激活值究竟是多少。根据每一层前面的激活、权重和偏置,我们要为下一层的每个激活计算一个值。但在将该值发送给下一层之前,我们要使用一个激活函数对这个输出进行缩放。本文将介绍不同的激活函数。
目录
1.概述
2.sigmoid 函数是什么?
3.梯度问题:反向传播
梯度消失问题
梯度爆炸问题
梯度爆炸的极端案例
避免梯度爆炸:梯度裁剪/范数
4.整流线性单元(ReLU)
死亡 ReLU:优势和缺点
5.指数线性单元(ELU)
6.渗漏型整流线性单元(Leaky ReLU)
7. ...