“ DAY 11。温故而知新。”
今天这篇文章,主要是对《Pattern Recognition and Machine Learning》一书中5.2节做一些回顾。[1]
稍微了解一些神经网络的朋友应该都知道,在训练一个神经网络前,需要定义损失函数(loss function),即衡量模型输出与真实值之间的误差(error)。
今天要聊的error公式如下:
这里{x_n}, n=1,…,N 是输入向量,{t_n}, n=1,…,N 是目标向量,w是模型的参数。
这是一个回归问题的典型且直观的损失函数(当模型输出值y和目标值t一致时,误差为0)。目标是找到合适的w,使得E(w)的值尽可能的小。
回归问题:模型的输出值是一个连续的标量,通常用模型输出与真实值之间的最小平方误差来衡量模型的准确程度。
虽然式(5.11)很直观,但我们仍然要抛出一个问题,为什么式(5.11)是科学的?跟最大似然有什么联系?
图源网络
考虑回归问题,假设一组数据{x_n, t_n}, n=1,…,N 表示的是对输入和输出的N次观测,且各次观测都是独立地从高斯分布中抽取的,均值与输入x有关且由输出确定,则:
其中β是高斯噪声的精度(方差的倒数)。
由于各次观测都是独立地,独立地抽取的数据点被称为独立同分布(independent and identically distributed, i.i.d.),由于数据集是独立同分布的,因此可以给出数据集的概率或者说是似然函数:
诸如神经网络之类的人工智能算法,所要做的是——最大化似然函数,使得给定输入X和模型参数w的情况下,得出对结果尽可能准的估计。这个似然函数是连乘的形式,一般通过取对数的方式转换成累加的形式,方便运算。于是,最大似然函数问题可以转换为最小负对数似然问题:
为了最大化似然函数--> 需要最小化负对数似然--> 需要最小化下式(忽略掉上式中的常数项):
这个公式是不是有点眼熟?
没错,这就是本文开篇的公式(5.11),一个用来计算误差的平方误差和损失函数。从最大似然的角度上,可以更加科学地理解,为什么在回归问题中,往往采用平方误差作为损失函数的计算方式。
类似的,对于分类问题而言,往往采用交叉熵损失函数的方式,而这一在每个做算法的同学脑子里的交叉熵损失函数,也能够从最大似然角度推导出。
大道至简,殊途同归。
或许就留到下一篇吧。
参考资料:
[1] Bishop C M . Pattern Recognition and Machine Learning (Information Science and Statistics)[M]. Springer-Verlag New York, Inc. 2006.