为什么需要机器学习
问题1:复杂场景中的三维目标识别——难以编程实现
- 由于不清楚大脑工作原理,不知如何编写程序。
- 即使有了如何做的好主意,程序可能极其复杂。
问题2:信用卡交易欺诈的概率计算——难以编程实现
- 没有简单可靠的判定准则,需要组合大量的弱规则。
- 欺诈方法在变,规则也会随时间而改变,程序要适应这种改变。
机器学习方法如何应对这些问题?不会针对每个特定任务写程序,而是搜集给定输出与正确输出的大量范例。机器学习方法利用这些范例,并用程序来做这些事儿。
- 机器学习算法的程序不同于经典的程序,包含大量的参数。
- 在新数据上效果和训练数据上一样好。
- 通过在新的数据上训练,程序随数据而改变。
大规模计算比付钱写特定任务的程序更廉价。
通过机器学习提供最佳解决方法的例子:
- 模式识别:真实场景中的目标识别、人面辨识或表情识别、语音识别;
- 异常检测:信用卡交易中的异常序列、核电站传感器读数中的异常模式
- 预测:未来的股价、电影的喜好。
机器学习的标准范例——基于 MNIST 数据库的手写字符识别
- 可公开获取,并且利用中等规模的神经网络能快速的学习。
- 已知很多机器学习方法在 MNIST 上的性能。
超越 MNIST —— ImageNet
- 1000 类不同的对象,1.3M 来源于网络的高分辨率训练图像。
- 深度神经网络是否能很好的用于目标识别,这是一个很好的测试。
语音识别
- 预处理:将声波转换成声学系数,大约每 10ms 提取一个新向量。
- 声学模型:利用声音系数的相邻向量,放置 bet 到音位。
- 解码:找出能最佳拟合声音数据和模型的 bet 序列。
由 George Dahl 和 Abdel-rahman Mohamed 领导的深度神经网络正在取代以前的机器学习声学模型。
什么是神经网络
为什么要学习神经计算?
- 理解大脑实际上是如何工作的。
- 理解受神经元及其自适应连接启发的一种并行计算。
- 利用受大脑启发的新学习算法解决实际问题——本课程内容。
大脑大约有 $10^{11}$ 个神经元,每个神经元有大约 $10^4$ 个权值。
一些简单的神经元模型
理想化的神经元:
- 去除对理解主要原理无关紧要的复杂细节。
- 可以利用数学工具,并可类比其它相似的系统。
- 若理解基本原理,易于复杂化使模型更真实。
线性神经元:
- $y$:输出;
- $b$:偏置;
- $x_i$:第$i$个输入;
- $w_i$:第$i$个权值。
二值神经元:
首先计算输入的加权和;若和超过阈值则输出固定的尖峰信号(spike),可表示为
, 其中 ,
或者
, 其中 ,易知 $b=-\theta$。
Rectified 线性神经元/线性阈值神经元:
计算输入的线性加权和,输出是输入的非线性函数,可表示为
, 其中 。
Sigmoid 神经元:
这是最常用的神经元,输出是输入和的有界平滑函数,通常使用 logistic 函数表示为
, 其中 。
这拥有漂亮的导数形式,利于学习算法。
随机二值神经元:
拥有与 logistic 单元相同的形式
, 其中 。
但是,在一个较短的时间窗口内将 logistic 函数的输出作为产生 spike 的概率。We can do a similar trick for rectified linear units: The output is treated as the Poisson rate for spikes.
一个简单的学习示例
手写字符识别神经网络,由两层神经元构成。输入神经元表示像素值,输出神经元的激活表示类别。如上图所示,每个像素(红色标注)可以对所属的类别(数字)投票,识别结果就是得票多的数字。
三类机器学习
- 监督学习:给定输入,预测输出。
- 回归
- 分类
- 增强学习:采取适当行为以获取最大回报。
- 非监督学习:发现输入好的内在表达。