这节课介绍了机器学习的几大框架,分别是监督学习(supervised learning)、强化学习(reinforcement learning)和无监督学习(unsupervised learning)。都是十分古老、传统、广泛应用的框架。
监督学习
监督学习是根据输入预测输出,即学习一个
y=f(x;W)
。这里面的W是f参数的显示表示,输入是
x
,输出是
监督学习分为两个子类,是根据输出
而对于预测输出
强化学习
课程中只在这里提及到了强化学习。强化学习模型根据输入学习一系列动作(action),而不同的动作会逐渐累计起来,在某些时候就会得到一些reward。模型学习的目的就是最大化这个reward。笔者根据自身记忆可以举一个相关实例:通常强化学习在游戏领域应用较多,输入就是当前的状态(如前后左右哪里有敌人,自身的技能CD值,红蓝条等等),应用学习到的模型可以根据当前输入,输出一个可以期望获得最大reward的动作(比如说放个大招),而最后的reward就是游戏的输赢(赢了就有1)。上面只是一个简单的例子,实际使用中,输入状态的设计、动作的集合、reward的公式以及根据中间状态得到一些更加频繁的reward,都是强化学习领域需要研究学习的内容。
关于强化学习,Hinton也说了几个比较有意思的部分。首先是reward会随时间衰减,即太遥远的reward对该动作的影响会很小(感觉有点类似学习贪婪算法)。然后强化学习是具有难度的,因为某个reward的获得往往基于一系列的动作,很难判断是当前系列动作内的哪个动作使得结果更好(/坏);其次强化学习的信息量只来源于时而出现的reward,信息量不足以支撑学习过多的参数,Hinton给了个2012年的参考值,大概只能学习几十个几百个参数(信息量少是强化学习主要应用于游戏领域的原因,但也因为游戏的数据易于获得,使得现在强化学习不再局限于少量参数了,AlphaGo的深度网络参数不只几十个)。
无监督学习
无监督学习即没有任何真值
y
,纯粹根据输入数据
Hinton先抱怨了一下无监督学习一直不受重视的学术定位,然后给出了无监督学习的很多应用方向。
首先是学习数据的另一种中间表示(实例就是AutoEncoder系列),这种中间表示再作为之后监督学习或者强化学习的输入。Hinton还举了个例子,学习到某个平面的距离这个任务可以使用两张图片之间的差异性学习(即无监督的),而不需要每次都去撞大脚趾头来学习(即强化学习)。
无监督学习还可以用于学习数据的低维表示,即俗称的降维。这里有一个基本假设就是大多数高维数据(如图像这种自由度几万的)实际上都位于某个低维流型之上或附近,从而把高维数据用低维流型对应的特征表示,可以保留绝大多数有用信息的同时,降低维数。而维数的降低就可以使得后续学习更加高效方便。Hinton还举了一个PCA的实例,实际上PCA就是假设的流型为超平面的降维。
另外,无监督学习还可以学习一种输入的高维经济表示,这个经济笔者理解为内存之类的占用量少。举了两个例子:第一个是学习到二值的特征,则只需要一个bit;第二个是学习到0附近的特征值,也可以减少bit表示。笔者想到的一个相关实例为Hopfield Net。
最后一个目的是学习一种稀疏表示。Hinton提到了聚类(clustering)问题实际上就是求取的一种特殊的稀疏表示(新学到的特征维数等于聚类数,然后特征即为所属类别为1,其他类别为0)。
这里从文中挑一些有意思的点记录一下,方便之后查找:
1. 强化学习的衰减reward
2. 有一些信息是可以通过无监督学习到的,所以可以在有监督之前加入无监督,应该会在数据集很大,但真值较少的情况下很有用。
3. 无监督的几个应用方向:降维、特征表示(稀疏、经济、中间特征)
4. PCA是降维到一个超平面流型上面
5. 聚类其实是在学习一种稀疏表示