数学之美——google大脑和人工神经网络

人工神经网络可用于解决:分类问题。

人工神经网络设计:

  1. 结构(网络分几层,每层几个节点,节点之间如何连接)
  2. 非线性函数f的设计,常用指数函数。

人工神经网络的训练

1.监督训练
- 假设成本函数C:训练的输出值与实际输出值的差距(例如定义为欧几里得距离)将训练人工神经网络的问题转化为最优化问题。
-解决最优化问题的常用方法是:梯度下降法 训练数据+成本函数C
2. 无监督训练
-定义新的成本函数C:能够在不知道正确输出值的情况下,确定训练出的模型是好还是坏。
例如:分类问题,定义样本到聚类中心的欧几里得距离为成本函数。

对于结构复杂的人工神经网络,训练计算量非常大,是NP-complete问题,有许多机器学习专家在寻找各种好的近似方法。

人工神经网络与贝叶斯网络的关系

不同点:人工神经网络在结构上是完全标准化的,而贝叶斯网络更灵活;人工神经网络先对各个变量进行线性组合,最后对组合的结果进行非线性变换,用计算机实现起来比较容易。而贝叶斯网络的变量可以组合成任意函数,毫无限制,在获得灵活性的同时,也增加了复杂性。
贝叶斯网络更容易考虑上下文前后的相关性,因此可以解码一个输入序列(例如将一段语音识别成文字。将英语句子翻译成中文)而人工神经网络的输出相对孤立,它可以识别一个个字,但是很难处理一个序列,因此常常是估计一个概率模型的参数。(例如机器翻译中语言模型参数的训练,声学模型参数的训练)
很多机器学习的数学工具其实是一通百通的,可以根据实际问题找到最方便的工具。

延伸google大脑

Google采用人工神经网络的原因:
1. 理论上,人工神经网络可以在多维空间画出各种形状的模式分类边界,有很好的通用性。
2. 过去20多年中,各种机器学习算法不断改进,但是人工神经网络算法很稳定几乎没变,google希望自己开发的计算工具能够设计一次长期使用。
3. 并非所有的机器学习算法(比如贝叶斯网络)都容易并行化。

-分块后虽然让块与块之间的计算变得非常复杂,但是却让一个原本无法在一台服务器上完成的大问题,分解成大量可以在一台服务器上完成的小问题。
-Google采用随机梯度下降法,比一般梯度下降法收敛更快的L-BFGS方法,其更容易实现并行化。
-Google大脑算法

1. 定义两个服务:取参数;推送参数
2. 对于第n太服务器,重复下列步骤:
取参数,取数据
计算成本函数的梯度
计算步长
计算新参数
推送新参数

你可能感兴趣的:(技术细节笔记)