奎克的藏经阁 · 原书印刷页

人工智能与大数据技术导论 · 第 198 页

PDF 物理页索引 214 · 第7章

书名
人工智能与大数据技术导论
作者
未记录
印刷页
198
PDF 物理页
214(从 0 开始)
章节
第7章
UUID
cd4f7678-cd9b-4971-bde0-e9ad46a6cc71
来源类型
original_book
页面 SHA-256
c6864d4f60c3bb59e851b497ebd4ee2580c2c57d5bfe9e6beeb80465066f28c0

我们知道神经网络计算主要包括线性组合和激活函数。激活函数在模型训练之前是定死的,不存在参数。神经网络的所有参数都集中在线性组合器的权重系数上。所以,这里的参数就是指权重系数。

在这个例子中,第一个隐藏层有4个节点,也就是有4个并行的线性组合器结构。对于每个线性组合器,因为输入变量有3个,将它们线性组合需要3+1=4个参数(包括常数项)。因此,这一层一共需要 $4 \times 4 = 1 6$ 个参数。第二层有3个线性组合器结构,但此时输入变量变为4个,所以每个组合器需要4+1=5个参数,本层一共包含5×3=15个参数。同理,可计算出输出层包括 $( 3 + 1 ) \times 2 = 8$ 个参数。整个神经网络包含 $1 6 + 1 5 + 8 = 3 9$ 个参数。

7.2.2向量化

神经网络的参数数量庞大。上述例子只是一个简单的3层网络,就有39个参数。在人们通常使用的网络模型中,拥有成千上万的参数是非常的。这还是最简单的普通网络模型,后文要叙述的卷积神经网络的参数数量量级甚至可以达到十万到百万。为了方便,我们需要借助向量和矩阵来表示这些参数以及中间运算的产物。这样不仅表示起来更加清晰简单,编写代码时也能充分利用矩阵化计算的优势,省去一些循环,从而使运算速度大幅提升。

7.2.3 价值函数

要找到最合适的参数,首先我们要确定一个优化目标,也就是要定义一个价值函数(CostFunction)。价值函数衡量的是模型预测值和真实值之间的偏离程度。我们要设法让预测值和真实值之间尽可能接近,可以按如下方式定义价值函数。

首先,价值函数是所有样本损失函数的叠加。损失函数(LossFunction)是定义在一条样本数据上的。为了定量刻画某一条样本记录预测值与真实值的差异,在神经网络中可以使用交叉熵来定义损失函数:

$$
\scriptstyle \mathrm { J } ( \mathbf { x } , \mathbf { y } ) = \mathrm { L } ( \mathbf { y } , \mathbf { y } \mathrm { h a t } )
$$

计算每一个样本的损失函数,然后遍历整个样本,取均值后即可得到价值函数:

$$
\mathrm { C ( x , y ) { = } 1 / m \ ^ { * } \ s i g m a ( J ( x , y ) ) }
$$

7.2.4梯度下降和反向传播

在介绍反向传播前,我们先来了解梯度下降。首先,梯度下降是一种优化方法,是用来找函数最优值的一种思路。

反向传播是为了优化价值函数,修正神经网络中参数的过程。反向传播是神经网络的核心理念。简单来说,我们训练神经网络的目标和所有机器学习模型一样,是为了找到模型的参数。这里用“找到”这个词比“计算”或者“求解”更为恰当。因为计算机是通过将初始化的参数一次次修正最终得到结果,这个过程是一步步探索的过程。随着计算机一次次地迭代,参数在不断朝着最优的结果去修正,从而越来越接近最优值。这个过程的核心就是在贯彻梯度下降思想。梯度下降的目的是找到当前状态下使得待优化函数下降最快的点。

人工智能与大数据技术导论

198