本书的知识体系:
常见的线性模型对比
一、基础学习基础
1、绪论
1.1人工智能
人工智能( Artificial Intelligence, AI) 就是让机器具有人类的智能,比如机器感知( 计算机视觉、语音信息处理)、学习( 模式识别、机器学习、强化学习)、语言( 自然语言处理)、记忆( 知识表示)、决策( 规划、数据挖掘) 等. 所有这些研究领域都可以看成是人工智能的研究范畴.
图灵测试:“一个人在不接触对方的情况下, 通过一种特殊的方式和对方进行一系列的问答,如果在相当长时间内, 他无法根据这些问题判断对方是人还是计算机, 那么就可以认为这个计算机是智能的。”
目前, 人工智能的主要领域大体上可以分为以下几个方面:
(1) 感知: 模拟人的感知能力, 对外部刺激信息( 视觉和语音等) 进行感知和加工. 主要研究领域包括语音信息处理和计算机视觉等.
(2) 学习: 模拟人的学习能力, 主要研究如何从样例或从与环境的交互中进行学习. 主要研究领域包括监督学习、无监督学习和强化学习等.
(3) 认知: 模拟人的认知能力, 主要研究领域包括知识表示、 自然语言理解、推理、规划、决策等.
发展历史:略
1.2机器学习
机器学习( Machine Learning,ML) 是指从有限的观测数据中学习( 或“猜测”) 出具有一般性的规律, 并利用这些规律对未知数据进行预测的方法.机器学习是人工智能的一个重要分支
机器学习模型一般会包含以下几个步骤:
(1) 数据预处理: 对数据的原始形式进行初步的数据清理( 比如去掉一些有缺失特征的样本, 或去掉一些冗余的数据特征等) 和加工( 对数值特征进行缩放和归一化等), 并构建成可用于训练机器学习模型的数据集.
(2) 特征提取: 从数据的原始特征中提取一些对特定机器学习任务有用的高质量特征. 比如在图像分类中提取边缘、 尺度不变特征变换( Scale InvariantFeature Transform, SIFT) 特征, 在文本分类中去除停用词等.
(3) 特征转换: 对特征进行进一步的加工, 比如降维和升维.( 很多特征转换方法也都是机器学习方法).降维包括特征抽取( Feature Extraction) 和特征选择( Feature Selection) 两种途径. 常用的特征转换方法有主成分分析( Principal Components Analysis,PCA)、线性判别分析(Linear Discriminant Analysis, LDA) 等.
(4) 预测: 机器学习的核心部分, 学习一个函数并进行预测.
1.3表示学习
为了提高机器学习系统的准确率, 我们就需要将输入信息转换为有效的特征, 或者更一般性地称为表示( Representation).
语义鸿沟( Semantic Gap):语义鸿沟问题是指输入数据的底层特征和高层语义信息之间的不一致性和差异性. 比如给定一些关于“车”的图片, 由于图片中每辆车的颜色和形状等属性都不尽相同, 因此不同图片在像素级别上的表示( 即底层特征) 差异性也会非常大. 但是我们理解这些图片是建立在比较抽象的高层语义概念上的. 如果一个预测模型直接建立在底层特征之上, 会导致对预测模型的能力要求过高. 如果可以有一个好的表示在某种程度上能够反映出数据的高层语义特征, 那么我们就能相对容易地构建后续的机器学习模型.表示学习的关键是解决语义鸿沟
好的表示包括以下几个优点:
(1) 一个好的表示应该具有很强的表示能力, 即同样大小的向量可以表示更多信息.
(2) 一个好的表示应该使后续的学习任务变得简单, 即需要包含更高层的语义信息.
(3) 一个好的表示应该具有一般性, 是任务或领域独立的. 虽然目前的大部分表示学习方法还是基于某个任务来学习, 但我们期望其学到的表示可以比较容易地迁移到其他任务上.
局部表示:局部表示通常可以表示为one-hot 向量的形式.假设所有颜色的名字构成一个词表 𝒱, 词表大小为 |𝒱|. 我们可以用一个|𝒱|维的one-hot向量来表示每一种颜色. 在第𝑖 种颜色对应的one-hot向量中, 第𝑖 维的值为1, 其他都为0.
优点:
1) 这种离散的表示方式具有很好的解释性, 有利于人工归纳和总结特征, 并通过特征组合进行高效的特征工程;
2) 通过多种特征组合得到的表示向量通常是稀疏的二值向量, 当用于线性模型时计算效率非常高.
缺点:
1) one-hot向量的维数很高, 且不能扩展. 如果有一种新的颜色, 我们就需要增加一维来表示;
2) 不同颜色之间的相似度都为0, 即我们无法知道“红色” 和“中国红” 的相似度要高于“红色” 和“黑色” 的相似度
分布式表示:将分布式表示叫作分散式表示可能更容易理解, 即一种颜色的语义分散到语义空间中的不同基向量上.
嵌入:使用神经网络来将高维的局部表示空间ℝ|𝒱| 映射到一个非常低维的分布式表示空间 ℝ𝐷, 𝐷 ≪ |𝒱|. 在这个低维空间中, 每个特征不再是坐标轴上的点, 而是分散在整个低维空间中
1.4深度学习
深度学习是机器学习的一个子问题, 其主要目的是从数据中自动学习到有效的特征表示.
深度学习需要解决的关键问题是贡献度分配问题(Credit Assignment Problem,CAP)[Minsky,1961],即一个系统中不同的组件(component)或其参数对最终系统输出结果的贡献或影响. 以下围棋为例, 每当下完一盘棋,最后的结果要么赢要么输.我们会思考哪几步棋导致了最后的胜利, 或者又是哪几步棋导致了最后的败局. 如何判断每一步棋的贡献就是贡献度分配问题, 这是一个非常困难的问题.从某种意义上讲, 深度学习可以看作一种强化学习( Reinforcement Learning,RL),每个内部组件并不能直接得到监督信息,需要通过整个模型的最终监督信息(奖励)得到,并且有一定的延时性.
目前, 深度学习采用的模型主要是神经网络模型, 其主要原因是神经网络模型可以使用误差反向传播算法, 从而可以比较好地解决贡献度分配问题. 只要是超过一层的神经网络都会存在贡献度分配问题, 因此可以将超过一层的神经网络都看作深度学习模型.
端到端学习( End-to-End Learning)也称端到端训练:
指在学习过程中不进行分模块或分阶段训练,直接优化任务的总体目标. 在端到端学习中, 一般不需要明确地给出不同模块或阶段的功能,中间过程不需要人为干预. 端到端学习的训练数据为“输入-输出”对的形式, 无须提供其他额外信息.因此,端到端学习和深度学习一样,都是要解决贡献度分配问题.目前,大部分采用神经网络模型的深度学习也可以看作一种端到端的学习.
1.5神经网络
人脑神经网络(暂略
人工神经网络:(历史略
1.7常用的深度学习框架
Theano(蒙特利尔大学)、Caffe(加州大学伯克利分校,主要用于计算机视觉. Caffe 用 C++ 和 Python 实现, 但可以通过配置文件来实现所要的网络结构, 不需要编码)、TensorFlow(Google)、 Pytorch(Facebook、NVIDIA、Twitter)、飞桨(PaddlePaddle百度)、MindSpore(华为)、Chainer(最早的动态计算框架)和MXNet(亚马逊、 华盛顿大学和卡内基· 梅隆大学等)
2、机器学习概述
机器学习( Machine Learning, ML) 就是让计算机从数据中进行自动学习,得到某种知识(或规律)机器学习也经常称为模式识别( Pattern Recognition,PR),但模式识别更偏向于具体的应用任务, 比如光学字符识别、语音识别、人脸识别等.
2.1基本概念
特征(Feature)、标签(Label)、样本(Sample)、示例(Instance)、数据集(Data Set)、训练集(Training Set)、训练样本( Training Sample)、 测试集(Test Set) 、测试样本(Test Sample)、特征向量(Feature Vector)
特征是一个𝐷 维特征向量𝒙 = [𝑥1, 𝑥2, ⋯ , 𝑥𝐷]T,标签用y表示,特征和标签看作一个样本 Sample = [Feature, Label]。训练集是有一堆样本的集合𝒟 = {(𝒙(1), 𝑦(1)), (𝒙(2), 𝑦(2)), ⋯ , (𝒙(𝑁), 𝑦(𝑁))}我们希望让计算机从一个函数集合ℱ = {𝑓1(𝒙), 𝑓2(𝒙), ⋯}中自动寻找一个“最优” 的函数𝑓∗(𝒙) 来近似每个样本的特征向量 𝒙 和标签 𝑦 之间的真实映射关系. 对于一个样本𝒙, 我们可以通过函数𝑓∗(𝒙)来预测其标签的值
𝑦̂ = 𝑓 ∗(𝒙),
或标签的条件概率
通过学习算法𝒜来寻找最优的函数。整个机器学习的基本流程如下:
2.2机器学习的三个基本要素
i.模型:
输入空间 𝒳 和输出空间 𝒴 构成了一个样本空间.对于样本空间中的样本(𝒙, 𝑦) ∈ 𝒳 × 𝒴, 假定 𝒙 和 𝑦 之间的关系可以通过一个未知的真实映射函数𝑦 =𝑔(𝒙) 或真实条件概率分布𝑝(𝑦|𝒙) 来描述. 机器学习的目标是找到一个模型来近映射函数𝑔 ∶ 𝒳→ 𝒴.似真实映射函数𝑔(𝒙)或真实条件概率分布𝑝(𝑦|𝒙).
于是,我们根据经验假设一个函数的集合ℱ, 称为假设空间(Hypothesis Space)该假设空间是由一个参数化的函数族(涉及到泛函分析,还好我学了哈哈哈)
ℱ = {𝑓(𝒙;𝜃)|𝜃 ∈ ℝ𝐷},𝑓(𝒙; 𝜃)是参数为𝜃 的函数,也称为模型(Model),D是参数的数量 |
线性模型:
假设空间是一个参数化的线性函数族,即𝑓(𝒙; 𝜃) = 𝒘T𝒙 + 𝑏,参数𝜃包含了权重向量𝒘和偏置𝑏
非线性模型:
广义的非线性模型可以写为多个非线性基函数𝜙(𝒙)的线性组合
𝑓(𝒙; 𝜃) = 𝒘T𝜙(𝒙) + 𝑏
𝜙(𝒙) = [𝜙1(𝒙), 𝜙2(𝒙), ⋯ , 𝜙𝐾(𝒙)]T 为 𝐾 个非线性基函数组成的向量,参数𝜃包含了权重向量𝒘和偏置𝑏.
如果𝜙(𝒙)本身为可学习的基函数, 比如 其中 ℎ(⋅) 为非线性函数, 𝜙′(𝒙) 为另一组基函数, 𝒘𝑘 和 𝑏𝑘 为可学习的参数, 则𝑓(𝒙; 𝜃)就等价于神经网络模型(Tips:如果不是可学习的基函数,是不是就是自己给定的基函数,比如将x输入,关于颜色特征为蓝色是[1,0,0,0],类似的表达,就是无法学习的意思,个人理解欢迎讨论。)
ii.学习准则:
训练集是独立同分布的(概率论学了,意思就是之间没有关系满足独立性,但是每个样本个体之间都是符合同一个概率分布,我个人理解就是假如玩云顶或金铲铲,在同一个等级下的D牌概率;或者就是在同一个大陆上,黑人人种遇到的概率。不能用4级的1费卡概率和9级1费卡作比较,也不能用非洲和南极洲黑人出现概率作比较。就是空间里面没有特例,不能说用个变性人的样本参与到男女分类的模型里,除非是3种性别分类,美国大杂烩???哈哈哈哈哈。)
一个好的模型 𝑓(𝒙, 𝜃∗) 应该在所有 (𝒙, 𝑦) 的可能取值上都与真实映射函数𝑦 = 𝑔(𝒙)一致, 即
|𝑓(𝒙, 𝜃∗) - 𝑦| < 𝜖, ∀(𝒙, 𝑦) ∈ 𝒳 × 𝒴, |
或与真是条件概率分布一致,即
|𝑓𝑦(𝒙, 𝜃∗) - 𝑝𝑟(𝑦|𝒙)| < 𝜖, ∀(𝒙, 𝑦) ∈ 𝒳 × 𝒴, |
模型𝑓(𝒙; 𝜃) 的好坏可以通过期望风险(Expected Risk) ℛ(𝜃)来衡量, 其定义为
ℛ(𝜃) = 𝔼(𝒙,𝑦)∼𝑝𝑟(𝒙,𝑦)[ℒ(𝑦, 𝑓(𝒙; 𝜃))],
其中𝑝𝑟(𝒙, 𝑦)为真实的数据分布, ℒ(𝑦, 𝑓(𝒙; 𝜃))为损失函数, 用来量化两个变量之间的差异
损失函数:
0-1 损失函数:能够客观地评价模型的好坏, 但其缺点是数学性质不是很好: 不连续且导数为0, 难以优化. 因此经常用连续可微的损失函数替代
平方损失函数:经常用在预测标签𝑦为实数值的任务,一般不适用于分类问题,多用于函数拟合
***交叉熵损失函数:一般用于分类问题. 假设样本的标签 𝑦 ∈ {1, ⋯ , 𝐶} 为离散的类别, 模型 𝑓(𝒙; 𝜃) ∈ [0, 1]𝐶的输出为类别标签的条件概率分布, 即
并满足
我们可以用𝐶 维的one-hot向量𝒚来表示样本标签Label,标签向量𝒚可以看作样本标签的真实条件概率分布𝑝𝑟(𝒚|𝒙), 即第𝑐维( 记为𝑦𝑐, 1 ≤ 𝑐 ≤ 𝐶) 是类别为 𝑐 的真实条件概率,假设样本的类别为 𝑘, 那么它属于第 𝑘 类的概率为 1, 属于其他类的概率为0.
对于两个概率分布, 一般可以用交叉熵来衡量它们的差异. 标签的真实分布𝒚和模型预测分布𝑓(𝒙; 𝜃)之间的交叉熵为
而𝒚为one-hot向量,故还可以写成
Hinge 损失函数:对于二分类问题, 假设 𝑦 的取值为 {-1, +1},𝑓(𝒙; 𝜃) ∈ ℝ
经验风险:但是因为不知道真实的数据分布或者映射函数,故一般计算的是经验风险,即在训练集上的平均损失,计算一组参数使得经验风险最小,这就是经验风险最小化准则ERM。
过拟合 :根据大数定理可知, 当训练集大小 |𝒟| 趋向于无穷大时,经验风险就趋向于期望风险.(如何选择训练样本个数可以参考PAC学习理论)然而通常情况下, 我们无法获取无限的训练样本, 并且训练样本往往是真实数据的一个很小的子集或者包含一定的噪声数据, 不能很好地反映全部数据的真实分布. 经验风险最小化原则很容易导致模型在训练集上错误率很低, 但是在未知数据上错误率很高. 这就是所谓的过拟合
这时就需要引入正则化来限制模型能力,𝜆用来控制正则化的强度,正则化项可以是各种范数,例如ℓ2 范数,其中ℓ1 范数的引入通常会使得参数有一定稀疏性, 因此在很多算法中也经常使用。从贝叶斯学习的角度来讲,正则化是引入了参数的先验分布,使其不完全依赖训练数据。
iii.优化算法:
超参数:用来定义模型结构或优化策略的,包括:聚类算法中的类别个数K、梯度下降法中的步长d、正则化项的系数、神经网络的层数、支持向量机中的核函数等。超参数优化是机器学习的一个经验性很强的技术,通常是按照人的经验设定,或者通过搜索的方法对一组超参数组合进行不断试错调整.
数值优化算法(最优化算法)可以参考这篇博客,(如果有更好的可以分享,后继我自己补充。
2.3机器学习的简单示例——线性回归(略
2.4偏差-方差分解 (衡量拟合能力和复杂度
𝑓𝒟(𝒙;𝜃) 表示在训练集𝒟 上学习到的模型,𝑓∗(𝒙;𝜃)表示最优模型。对于单个样本 𝒙,不同训练集 𝒟 得到模型 𝑓𝒟(𝒙) 和最优模型 𝑓∗(𝒙) 的期望差距为(数分思想)
第一项为偏差(Bias), 是指一个模型在不同训练集上的平均性能和最优模型的性能的差异,可以用来衡量一个模型的拟合能力,越大说明过拟合越差;第二项是方差(Variance),是指一个模型在不同训练集上的相互之间的差异,可以用来衡量一个模型是否容易过拟合,越大说明过拟合。
所以为了均衡性能,需要偏差-方差分解最小化。将其带入到损失函数中去,原来是𝑓𝒟(𝒙)-𝑓∗(𝒙),改成了不同训练集的期望。
方差一般会随着训练样本的增加而减少.当样本比较多时,方差比较少,这时可以选择能力强的模型来减少偏差.然而在很多机器学习任务上,训练集往往都比较有限,最优的偏差和最优的方差就无法兼顾。如果模型的复杂度增加,则模型的偏差会变小,但方差增大则需要我们进行调整减少复杂度。
方法:当一个模型在训练集上的错误率比较高时,说明模型的拟合能力不够,偏差比较高. 这种情况可以通过增加数据特征、提高模型复杂度、减小正则化系数等操作来改进.当模型在训练集上的错误率比较低,但验证集上的错误率比较高时,说明模型过拟合,方差比较高.这种情况可以通过降低模型复杂度、加大正则化系数、引入先验等方法来缓解.此外,还有一种有效降低方差的方法为集成模型,即通过多个高方差模型的平均来降低方差.
2.5机器学习算法的类型
监督学习(Supervised Learning):是指带有标签的样本学习,分为回归、分类、结构化学习(就是分类物品之间有着某种关系类似树状结构或网状结构等。
无监督学习(Unsupervised Learning,UL):是指从不包含目标标签的训练样本中自动学习到一些有价值的信息.
强化学习(Reinforcement Learning,RL):是通过交互来学习的机器学习算法,通过外界给予的奖励或回报调整策略,以取得最大化的期望总回报。
2.6数据的特征表示
传统的特征提取是通过人工,称特征工程,子集搜索:将D个原始特征分别组合,选择出一个最优的候选子集,子集搜索的方法有(逐个暴力测试、贪心策略(从0开始一个一个添加最优特征,或者一个一个删减无用特征))特征抽取:构造一个新的特征空间,将原始特征投影在新的空间中表示;机器通过需求自己学习,称为特征学习也叫表示学习,采用深度学习得到好的模型。人工提取的可以有图像特征(直方图、宽高比、笔画数、纹理特征、边缘特征)、文本特征。
2.7评价指标
评价模型的好与坏需要给一个测试集,对测试集中的预测结果进行评价分数:
准确率、错误率、精确率和召回率(不同类别的准确率与召回率)、宏平均与微平均、交叉验证
2.8理论和定理
计算学习理论(Computational Learning Theory)是机器学习的理论基础,用来分析问题难度、计算模型能力,其中最基础的理论就是可能近似正确(Probably Approximately Correct,PAC)学习理论.
泛化错误:期望错误与经验错误之间的差异,称为泛化错误。根据大数定理,当训练集大小|𝒟|趋向于无穷大时, 泛化错误趋向于0, 即经验风险趋近于期望风险.
i.PAC学习理论
降低对学习算法能力的期望,只要求学习算法可以以一定的概率学习到一个近似正确的假设,即PAC学习(PAC Learning)。
ii. 没有免费午餐定理
出自最优化理论,对于基于迭代的最优化算法,不存在某种算法对所有问题(有限的搜索空间内)都有效.不存在一种机器学习算法适合于任何领域或任务.如果有人宣称自己的模型在所有问题上都好于其他模型,那么他肯定是在吹牛.
iii.奥卡姆剃刀原理
简单的模型泛化能力更好.如果有两个性能相近的模型,我们应该选择更简单的模型.因此,在机器学习的学习准则上,我们经常会引入参数正则化来限制模型能力,避免过拟合.
iv.丑小鸭定理
v.归纳偏置
3、线性模型
线性模型( Linear Model):通过样本特征的线性组合来精选预测的模型,给定一个 𝐷 维样本 𝒙 = [𝑥1, ⋯ , 𝑥𝐷]T, 其线性组合函数为:其中 𝒘 = [𝑤1, ⋯ , 𝑤𝐷]T 为 𝐷 维的权重向量, 𝑏 为偏置。
𝑓(𝒙; 𝒘) = 𝑤1𝑥1 + 𝑤2𝑥2 + ⋯ + 𝑤𝐷𝑥𝐷 + 𝑏
= 𝒘T𝒙 + 𝑏,
如果输出目标y不是一个实数,而是离散的,则需要添加非线性的决策函数𝑔(⋅):𝑦 = 𝑔(𝑓(𝒙; 𝒘))
3.1线性判别函数和决策边界
二分类:一般可以取{+1, -1} 或 {0, 1}作为标签,二分类可分是指:
多分类: (1) “一对其余” 方式:把多分类问题转换为 𝐶 个“一对其余” 的二分类问题.这种方式共需要 𝐶 个判别函数,其中第 𝑐 个判别函数 𝑓𝑐 是将类别 𝑐 的样本和不属于类别𝑐的样本分开.
(2) “一对一” 方式:把多分类问题转换为 𝐶(𝐶 - 1)/2 个“一对一” 的二分类问题.这种方式共需要𝐶(𝐶 - 1)/2个判别函数,其中第(𝑖, 𝑗)个判别函数是把类别𝑖 和类别𝑗 的样本分开.(个人不建议)
(3) “argmax” 方式:这是一种改进的“一对其余” 方式,共需要 𝐶 个判别函数,也就是最接近哪个标签就是谁的。。
可以看出,在前两个方式之中,都存在很多难以确定类别的空间,除非判别函数𝑓很复杂 。
3.2Logistic回归
常用的二分类问题的线性模型,引入了非线性函数g:ℝ𝐷 → (0, 1)来预测类别标签,也就是激活函数,而Logistic回归就是指采用Logistic函数来做激活函数,用交叉熵作损失函数。
用Logistic回归模型对每个样本𝒙(𝑛) 进行预测, 输出其标签为1的后验概率, 记为𝑦(𝑛),𝒘是参数
由偏导表达式可知,采用梯度下降法去更新迭代(或其他优化算法如牛顿法)
3.3softmax回归
多项或多类的Logistic回归,有𝐶 个标签取值,则给定一个样本,对于类别c的条件概率是
依然采用交叉熵损失函数,损失函数类似,梯度也类似
3.4感知器
是最简单的人工神经网络,只有一个神经元,是一个错误驱动的在线学习算法,激活函数是sgn()符号函数,如果对每个样本有𝑦(𝑛)∗𝒘T𝒙(𝑛) > 0,则成立,否则则更新权重:𝒘 ← 𝒘 + 𝑦𝒙
。初始化一个权重向量𝒘 ← 0( 通常是全零向量),每次分错一个样本的时候,就更新权重,损失函数与梯度函数:
最重要的知识是模型的收敛性:对于两类问题, 如果训练集是线性可分的,那么感知器算法可以在有限次迭代后收敛.然而,如果训练集不是线性可分的, 那么这个算法则不能确保会收敛,(证明暂略,先记住结论)因为初始权重向量为0, 在第𝐾次更新时感知器的权重向量为,k是第k个错误样本,K是总更新次数。
- (1)在数据集线性可分时,感知器虽然可以找到一个超平面把两类数据分开, 但并不能保证其泛化能力.
- (2)感知器对样本顺序比较敏感.每次迭代的顺序不一致时,找到的分割超平面也往往不一致.
- (3)如果训练集不是线性可分的,就永远不会收敛.
改进的感知器可以有参数平均感知器,提高感知器的鲁棒性和泛化能力,因为后面的样本比前面的样本对最终的权重向量影响更大,(文章给了个好理解的例子:比如有 1000 个训练样本,在迭代 100 个样本后,感知器已经学习到一个很好的权重向量.在接下来的899个样本上都预测正确,也没有更新权重向量.但是,在最后第1000个样本时预测错误,并更新了权重.这次更新可能反而使得权重向量变差。)可以在每个权重向量𝒘𝑘一个置信系数 𝑐𝑘( 1≤𝑘 ≤ 𝐾)最终的分类结果通过这 𝐾 个不同权重的感知器投票决定。(为了减少参数数量,可以将系数平均化)
拓展到多分类也是一样的,只要将标签设置为𝒚 ∈ {0, 1}𝐶 为类别的one-hot向量表示,称为广义感知器,一般用来处理结构化学习问题,常用的特征函数是𝜙(𝒙, 𝒚),即𝒙和𝒚的外积(标量)
关于线性可分与收敛性有
3.5支持向量机
二分类算法,如果是线性可分的,则存在一个超平面𝒘T𝒙 + 𝑏 = 0将样本分开,
3.6损失函数对比
对于损失函数,可以找到一个未知量,例如在二分类里取𝑦𝑓(𝒙; 𝒘),将所有损失函数定义变化在𝑦𝑓(𝒙; 𝒘)的函数,则可以得到下图来选择合适的损失函数,可以知道除了平方损失都适用,因为𝑦𝑓(𝒙; 𝒘)>0是正确的情况,需要减少损失函数,预测越正确损失函数越小。
二、基础模型
4、前馈神经网络
分布式并行处理( Parallel Distributed Processing,PDP) 模型:1)信息表示是分布式的(非局部的);2)记忆和知识是存储在单元之间的连接上;3)通过逐渐改变单元之间的连接强度来学习新的知识.
4.1神经元
重点是激活函数:(1) 连续并可导(允许少数点上不可导)的非线性函数. 可导的激活函数可以直接利用数值优化的方法来学习网络参数.
(2) 激活函数及其导函数要尽可能的简单,有利于提高网络计算效率.
(3) 激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小, 否则会影响训练的效率和稳定性.
Sigmoid型函数:一类 S 型曲线函数,为两端饱和函数(就是导数无穷极限是0)。Logistic函数和Tanh函数都是Sigmoid型函数, 具有饱和性,但是计算开销较大.因为这两个函数都是在中间( 0附近) 近似线性,两端饱和.因此,这两个函数可以通过分段函数来近似
Logistic函数:
Tanh函数:
ReLU函数:为左饱和函数,且在 𝑥 > 0 时导数为 1, 在一定程度上缓解了神经网络的梯度消失问题, 加速梯度下降的收敛速度,缺点是ReLU 函数的输出是非零中心化的, 给后一层的神经网络引入偏置偏移,会影响梯度下降的效率,ReLU 神经元在训练时比较容易“死亡”. 在训练时, 如果参数在一次不恰当的更新后, 第一个隐藏层中的某个 ReLU 神经元在所有的训练数据上都不能被激活, 那么这个神经元自身参数的梯度永远都会是0, 在以后的训练过程中永远不能被激活. 这种现象称为死亡 ReLU 问题
Leaky ReLU(带泄露的ReLU):在输入 𝑥 < 0时,保持一个很小的梯度𝛾. 这样当神经元非激活时也能有一个非零的梯度可以更新参数,避免永远不能被激活
PReLU(带参数的 ReLU,Parametric ReLU)引入一个可学习的参数, 不同神经元可以有不同的参数. 对于第 𝑖 个神经元, 其 PReLU 的定义为
ELU( Exponential Linear Unit,指数线性单元)是一个近似的零中心化的非线性函数其中 𝛾 ≥ 0是一个超参数,决定𝑥 ≤ 0时的饱和曲线,并调整输出均值在0附近。
Softplus 函数:可以看作 Rectifier 函数的平滑版本其导数刚好是Logistic函数.
Swish 函数:swish(𝑥) = 𝑥𝜎(𝛽𝑥),其中 𝜎(⋅) 为 Logistic 函数, 𝛽 为可学习的参数或一个固定超参数.Swish函数可以看作线性函数和ReLU函数之间的非线性插值函数,其程度由参数𝛽 控制
GELU(Gaussian Error Linear Unit,高斯误差线性单元)GELU(𝑥) = 𝑥𝑃(𝑋 ≤ 𝑥)其中𝑃(𝑋 ≤ 𝑥)是高斯分布𝒩(𝜇, 𝜎2)的累积分布函数,其中𝜇, 𝜎为超参数,一般设𝜇 = 0, 𝜎 = 1即可. 由于高斯分布的累积分布函数为S型函数, 因此GELU函数可以用Tanh函数或Logistic函数来近似GELU(𝑥) ≈ 0.5𝑥(1 + tanh ((π/2)^0.5 (𝑥 + 0.044715𝑥3)))或 GELU(𝑥) ≈ 𝑥𝜎(1.702𝑥)
Maxout单元:Maxout 单元的输入是上一层神经元的全部原始输出,是一个向量𝒙 = [𝑥1; 𝑥2; ⋯ ; 𝑥𝐷]每个Maxout单元有𝐾 个权重向量𝒘𝑘 ∈ ℝ𝐷 和偏置𝑏𝑘 (1 ≤ 𝑘 ≤ 𝐾). 对于输入𝒙, 可以得到𝐾个净输入𝑧𝑘, 1 ≤ 𝑘 ≤ 𝐾.𝑧𝑘 = 𝒘T 𝑘𝒙 + 𝑏𝑘其中𝒘𝑘 = [𝑤𝑘,1, ⋯ , 𝑤𝑘,𝐷]T 为第𝑘个权重向量.Maxout单元的非线性函数定义为maxout(𝒙) = max ,𝑘∈[1,𝐾](𝑧𝑘).
4.2网络结构
前馈网络、记忆网络、图网络