机器学习及其相关定义
引言
由于机器学习领域的名词定义比较多,所以来写个博客梳理一下。
首先贴一张关系图:
机器学习
-
机器学习的主要任务:
-
分类(classification):将实例数据划分到合适的类别中。
-
回归(regression):主要用于预测数值型数据。
-
-
机器学习主要可以分为四种形式:
-
监督学习(supervised learning)
-
半监督学习(Semi-Supervised Learning)
-
无监督学习(unsupervised learning)
-
强化学习(reinforcement learning)
-
监督学习
-
必须确定目标变量的值,以便机器学习算法可以发现特征和目标变量之间的关系。在监督学习中,给定一组数据,我们知道正确的输出结果应该是什么样子,并且知道在输入和输出之间有着一个特定的关系。 (包括:分类和回归)
-
训练样本 = 特征(feature) + 目标变量(label: 分类-离散值/回归-连续值)
半监督学习
-
是模式识别和机器学习领域研究的重点问题,是监督学习与无监督学习相结合的一种学习方法。
-
使用大量的未标记数据,以及同时使用标记数据,来进行模式识别工作。当使用半监督学习时,将会要求尽量少的人员来从事工作,同时,又能够带来比较高的准确性。
无监督学习
-
无监督学习,即在未加标签的数据中,试图找到隐藏的结构。数据没有类别信息,也没有给定的目标值。
-
无监督学习包括的类型:
-
聚类:将数据集分成由类似的对象组成多个类。
-
密度估计:通过样本分布的紧密程度,来估计与分组的相似性。
-
-
此外,无监督学习还可以减少数据特征的维度,以便我们可以使用二维或三维图形更加直观地展示数据信息。
强化学习
所谓强化学习就是智能系统从环境到行为映射的学习,以使奖励信号(强化信号)函数值最大,由于外部给出的信息很少,强化学习系统必须依靠自身的经历进行自我学习。通过这种学习获取知识,改进行动方案以适应环境。
强化学习最关键的三个因素:
-
状态
-
行为
-
环境奖励。
强化学习和深度学习的主要区别:
-
深度学习的训练样本是有标签的,强化学习的训练是没有标签的,它是通过环境给出的奖惩来学习
-
深度学习的学习过程是静态的,强化学习的学习过程是动态的。这里静态与动态的区别在于是否会与环境进行交互,深度学习是给什么样本就学什么,而强化学习是要和环境进行交互,再通过环境给出的奖惩来学习
-
深度学习解决的更多是感知问题,强化学习解决的主要是决策问题。因此有监督学习更像是五官,而强化学习更像大脑。
应用
-
关于深度学习和强化学习的实例,最典型的莫过于谷歌的AlphaGo和AlphaZero两位了。AlphaGo是通过深度卷积神经网络,在训练了大约三千万组人类的下棋数据生成的模型,而AlphaZero使用强化学习的方式,通过自己和自己下棋的方式生成模型。而最终的实验结果也很让人震撼。AlphaGo击败了人类围棋顶尖高手,而AlphaZero击败了AlphaGo。
-
强化学习实际应用目前还较窄,主要包括AI游戏(如Atari),推荐系统,机器人控制相关(如Ng的无人机飞行)
传统机器学习
机器学习(ML)技术在预测中发挥了重要的作用,ML经历了多代的发展,形成了丰富的模型结构,例如:
-
线性回归
-
逻辑回归
-
决策树
-
支持向量机
-
贝叶斯模型
-
正则化模型
-
集成模型
-
神经网络
这些预测模型中的每一个都基于特定的算法结构,参数都是可调的。训练预测模型涉及以下步骤:
-
选择一个模型结构(例如逻辑回归,随机森林等)。
-
用训练数据(特征和标签)输入模型。
-
学习算法将输出最优模型(即具有使训练错误最小化的特定参数的模型)。
每种模式都有自己的特点,在一些任务中表现不错,但在其他方面表现不佳。但总的来说,我们可以把它们分成低功耗(简单)模型和高功耗(复杂)模型。选择不同的模型是一个非常棘手的问题。
机器学习的主要障碍是特征工程这个步骤,特征工程要靠手动设计完成,需要大量领域专业知识,因此它成为当今大多数机器学习任务的主要瓶颈。
深度学习
最初的深度学习网络是利用神经网络来解决特征层分布的一种学习过程。
DNN(深度神经网络)可以将原始信号(例如RGB像素值)直接作为输入值,而不需要创建任何特定的输入特征。通过多层神经元(这就是为什么它被称为“深度”神经网络),DNN可以“自动”在每一层产生适当的特征,最后提供一个非常好的预测,极大地消除了寻找“特征工程”的麻烦。
DNN也演变成许多不同的网络拓扑结构,例如:
-
CNN(卷积神经网络)
-
RNN(递归神经网络)
-
LSTM(长期短期记忆网络)
-
GAN(生成对抗网络)
所有的这些被统称为深度学习(Deep Learning)。
迁移学习
迁移学习能够将适用于大数据的模型迁移到小数据上,作为小数据模型的训练起点,节约训练神经网络需要的大量计算和时间资源。
例如采用在计算机视觉挑战赛通过ImageNet数据(源数据)集训练出来的AlexNet 模型迁移应用到另一个新的数据集(目标数据集)重新进行训练(微调)。
主要步骤:
-
在源数据上训练一个神经网络。比如在 ImageNet 上训练出的 AlexNet 模型。
-
将模型的输出层改成适合目标数据的大小。 新加载的数据并不需要作1000个类别的分类任务,因此 AlextNet 的最后三层可以针对性按照新的分类问题重新调整,例如:
-
降低之前训练网络的特征初始学习率,减缓迁移层的学习。
-
降低迁移学习设置过多的迭代训练次数,提高训练效率。
-
减小批(Mini Batch Size)的大小,降低内存使用率。
-
-
将输出层的权重初始化成随机值,但其他层的权重保持跟原先训练好的权重一致。
-
在目标数据集上开始训练。