1 简介
AIGC(Artificial Intelligence Generated Content,即人工智能生成内容)是一种利用人工智能技术自动创建文本、图像、音频和视频等内容的技术。AIGC的核心是通过机器学习和深度学习算法,让计算机模型学会理解和生成人类语言,从而能够自动产生有价值的内容。这是几个关键概念的关系:
生成式AI系统的设计通常基于神经网络模型,尤其是自然语言处理(NLP)领域的模型。这些模型的设计灵感往往来源于人脑的结构和功能,通过模拟神经元的连接和信息传递机制,构建复杂的网络结构。
一个典型的神经网络模型可能包括以下三部分:
(1)输入层:接收输入数据,如文本、语音或图像。
(2)处理层:通过多层的神经网络对输入进行处理和学习,提取关键信息和特征。
(3)输出层:根据学习到的信息生成响应或内容。
对神经网络简化,得到只有一个输入、1个处理和1个输出的模型:
这个图里,输入数据X经过线性函数l和非线性函数r计算,最终得到结果Y’。
要怎么理解上面这个图呢?
下面我们将它用一个例子来讲清楚其原理。
2 用一个求函数表达式的问题解析深度学习原理
首先提出问题:求下图中的y=f(x)关于x的表达式:
可以看到这个函数曲线大致分为了3部分,我们把它标注为下图:
如果要知道f(x)的表达式,那把1、2、3的表达式求出来,他们组合的结果就是f(x)的函数表达式了。
2.1 线性和非线性函数
在进行下一步之前,咱们得先了解下线性函数和非线性函数的区别:
2.1.1 线性函数(Linear Function)
线性函数是指输入和输出之间存在线性关系的函数。在线性函数中,输出是输入的加权和,可能还会加上一个偏置项。线性函数的一般形式可以表示为:
y=wx+b
其中,w 是权重,x 是输入,b 是偏置项,而 y 是输出。线性函数的特点是,当输入增加时,输出成比例地增加;当输入减少时,输出成比例地减少。线性函数无法捕捉输入和输出之间的复杂关系,如非线性模式或特征。
2.1.2 非线性函数(Non-linear Function)
非线性函数是指输入和输出之间不是简单比例关系的函数。非线性函数可以引入数据的复杂模式和结构,使得神经网络能够学习和模拟更加复杂的函数映射。非线性函数在神经网络中又比称为激活函数,常见的激活函数包括:
ReLU 函数:ReLU(x)=max(0,x)
Sigmoid 函数:....
Tanh 函数:....
Swish 函数:Swish(x)=x⋅σ(x)
非线性函数的特点是,它们可以使得神经网络的输出不仅仅依赖于输入的线性组合,还能够捕捉输入之间的相互作用和复杂的非线性关系。这对于解决实际问题非常重要,因为现实世界中的很多问题都是非线性的。
2.1.3 线性与非线性在神经网络中的作用
在线性神经网络中,如果网络只包含线性函数,那么无论网络有多少层,最终的输出都是输入的线性组合。这意味着多层线性网络的功能与单层线性网络相同,因为线性函数的复合仍然是线性的。这就是为什么我们需要非线性激活函数的原因。非线性激活函数打破了线性,使得每一层都能够学习到新的、更复杂的特征表示,从而使神经网络能够解决更加复杂的任务。
例:
Y=a(c(ex+f)+d)+b
3次线性操作后合并同类项,最终结果会等于:
Y= Ax+B
还是线性函数。
2.2 深度学习原理
2.2.1 函数分段
回到上面的例子,要求解的函数图像分割成3部分
对应上面的1、2、3分段的函数,3部分的表达式组合即可表达函数的y=f(x)。
2.2.2 引入非线性函数
接下来引入一个非线性函数,本例使用上文提到的ReLU函数。其图形如下所示:
2.2.3 非线性函数图形变换
对于坐标轴上的任意一段分段图形,都可通过调整R(x)函数获得,如下图所示:
对应到函数表达式上为:
R(x)1=R(x-1)
2.2.4 线性操作与非线性操作示例
以R(x)2=3R(x-4)-5 这个变换后得到的图像为例:
对数据X来说,
- x进行一次线性操作: y=x-4 (参数分别是1和4)
- 线性操作的结果做一次非线性操作:y=R(x-4)
- 非线性操作的结果再做一次线性操作:3R(x-4)-5 (参数分别是3和5)
自此,输入x通过线性+非线性+线性操作,得到一个任意位置的R(x)函数。
2.2.5 函数求解的神经网络图表达
我们将上述例子的求解方法按照前面的神经图来输出,就得到了下图:
图示有3个神经元,每个路径经过1次线性操作L,1次非线性操作R,1次线性操作L,得到1个分段函数f(x)1,3个路径得到3个分段函数组成预测函数Y’。
然而,正常情况下的要求的函数图像并不是规则的,于是就需要更多的处理节点、更多层数的隐藏层去处理,以得到更拟合原有函数y=f(x)的预测结果。
通过在隐藏层增加更多层的处理层,来获得更精确的预测结果。
隐藏层越多、单层的处理节点越多,其参数就越多,模型也越加复杂,结果也就接近正确值,正是因为中间隐藏层很多、很深,所以神经网络模型也叫深度学习模型。
在这个过程中,模型训练就是通过调整每个线性函数的参数(权重Weights和偏移量Biases),使结果更准确的拟合。
2.2.6 损失函数
既然是根据分段来拟合,那必然少不了与原始函数的差异,拟合函数与原函数的差异,我们用损失函数来说表示,损失函数是衡量模型预测结果与真实结果之间差异的指标。在训练过程中,模型的目标是最小化这个损失。
如:使用绝对值均值(Y与Y’在相同x的差值的绝对值的均值)来衡量损失函数的值。在计算得到损失函数的值后,通过优化算法、反向传播算法来调整权重,以找到最小化损失函数的权重值
2.2.6.1 反向传播算法
反向传播算法是神经网络训练中的核心,它通过计算损失函数相对于每个权重的梯度来更新权重。这个过程从输出层开始,逐层向输入层反向传播误差信号,每个神经元的权重都会根据误差梯度进行调整。反向传播通常与梯度下降算法结合使用,以找到最小化损失函数的权重值。
2.2.6.2 优化算法
优化算法用于更新网络中的权重,以减少损失函数的值。最常见的优化算法是随机梯度下降(SGD)及其变体,如Adam等。这些算法通过在每次迭代中调整权重来逐步优化模型的性能。
2.2.7正则化
在深度学习中,正则化是一种用于防止过拟合的技术。过拟合是指模型在训练数据上表现很好,但在未见过的测试数据上表现较差的现象。这通常是因为模型学习到了训练数据中的噪声和细节,而没有捕捉到数据的潜在分布或泛化特征。
常见的正则化方法包括:
L1正则化(Lasso):在损失函数中添加权重的绝对值之和,倾向于产生稀疏权重矩阵,即许多权重为零。
L2正则化(Ridge):在损失函数中添加权重的平方和,倾向于让权重均匀地分布,而不是选择少数几个特征。
Dropout:在训练过程中随机丢弃(即暂时移除)网络中的一些节点,防止模型对特定的神经元过度依赖。
早停(Early Stopping):在训练过程中监控模型在验证集上的表现,当性能不再提升或开始下降时停止训练,以避免过拟合。
正则化是深度学习中提高模型性能的重要手段,通过适当的正则化策略,可以使模型在未知数据上表现得更好。
OK,到这里我们已经把深度学习的整个流程讲完了,总结一下:
深度学习的核心部分,是通过一系列的学习和训练过程来掌握数据的特征和模式。
这个过程可以分为以下几个关键步骤:
(1)前向传播:
当输入数据(如文本序列)被送入模型时,它会通过每一层的神经元进行前向传播。每个神经元都会接收来自前一层的输入,通过加权求和(考虑每个连接的权重)后,通常会通过一个非线性激活函数(如ReLU)进行转换,产生输出到下一层。这个过程会一直重复,直到达到输出层。
(2)权重初始化:
在训练开始之前,模型中的权重通常会被初始化为随机值。这是为了防止权重在训练初期就陷入局部最优解,确保模型能够开始学习。权重初始化的方法有很多种,如随机初始化等,每种方法都旨在帮助模型更有效地学习。
(3)模型训练与参数优化
在训练过程中,模型通过损失函数来衡量模型预测结果与真实结果之间差异,在计算得到损失函数的值后,通过优化算法、反向传播算法来调整权重,以找到最小化损失函数的权重值。这个过程通常涉及到监督学习,即模型通过比较预测结果和真实结果的差异来不断调整自身参数。为了防止模型过拟合(即在训练数据上表现很好但在未见数据上表现差),通常会在训练过程中加入正则化项。
通过这些步骤,模型的处理层能够逐渐学习到如何从输入数据中提取特征,并将这些特征转化为有意义的输出。随着训练的进行,模型的性能会逐渐提高,最终能够生成符合预期的内容。
相信通过这篇文章,也能明白各种大模型里的提到的亿级的参数、模型训练等都是什么意思了。