前面介绍的是一些具体的模型,今天来介绍构成这些模型的基础。
向量点积是线性代数中的概念,用于衡量两个向量之间的相似度。
AI的背后是数学,将特征向量化、矩阵化就开始进入线性代数的世界了。
通过相似度进行分类,例如,调用openAI的Embedding API计算评论的Embedding,然后计算评论与正面的Embedding的相似度,与负面的Embedding的相似度,从而判断评论是正面还是负面。
在训练过程中,通过让两个向量相似度最大化来更新参数,例如,CLIP中的对比学习。
自注意力机制中的通过计算Query与Key之间的相似度,捕捉序列内部不同位置之间的依赖关系。
矩阵可以是一幅图像、存储关系的图、也可以是一个batch的特征向量。
可以对矩阵提取特征、也可以进行降维分解。
矩阵可以存储像素值、特征值、也可以存储梯度信息。
矩阵可以是静止的图像,也可以是动态的旋转、缩放、平移变换。
ANN中特征和权重的矩阵乘法、CNN中的卷积操作、Transformer中的自注意力和MLP也都是矩阵乘法。
神经网络的前向计算和反向传播都离不开矩阵乘法。
线性层加上激活函数就构成人工神经网络,包含隐藏层的人工神经网络就是多层感知机(MLP),激活函数使得原本线性变换具有复杂的非线性能力,仅有一个隐藏层的MLP可以逼近任意复杂的函数。
MLP多用于表格数据分类。
在目标检测中,CNN用于提取特征,全连接层(FC)用于检测框的分类和位置回归。
将batch个样本组织成矩阵的形式。
在机器学习中,如何计算特征的重要性?可以通过特征工程,例如相关性分析方法去掉对目标不重要的特征,还是让模型自己去学习,训练完成后,权重W中小的参数值对应的特征就是不重要的。
前向计算是通过矩阵和向量乘法实现的,在反向传播更新参数的过程,也是通过计算损失函数对各层参数的偏导数,具体涉及到标量对于矩阵和向量的偏导数,以及利用链式法将误差从输出层反向传播到每一层,更新每一层的权重和偏置。