Update 第二章_机器学习基础.md

This commit is contained in:
scutan90 2019-07-01 23:01:51 +08:00
parent fdcd45d32d
commit 1b3f155800
1 changed files with 194 additions and 149 deletions

View File

@ -6,7 +6,7 @@
# 第二章 机器学习基础
机器学习起源于上世纪50年代1959年在IBM工作的Arthur Samuel设计了一个下棋程序这个程序具有学习的能力它可以在不断的对弈中提高自己。由此提出了“机器学习”这个概念它是一个结合了多个学科如概率论优化理论统计等最终在计算机上实现自我获取新知识学习改善自己的这样一个研究领域。机器学习是人工智能的一个子集目前已经发展出许多有用的方法比如支持向量机回归决策树随机森林强化方法集成学习深度学习等等一定程度上可以帮助人们完成一些数据预测自动化自动决策最优化等初步替代脑力的任务。
机器学习起源于上世纪50年代1959年在IBM工作的Arthur Samuel设计了一个下棋程序这个程序具有学习的能力它可以在不断的对弈中提高自己。由此提出了“机器学习”这个概念它是一个结合了多个学科如概率论优化理论统计等最终在计算机上实现自我获取新知识学习改善自己的这样一个研究领域。机器学习是人工智能的一个子集目前已经发展出许多有用的方法比如支持向量机回归决策树随机森林强化方法集成学习深度学习等等一定程度上可以帮助人们完成一些数据预测自动化自动决策最优化等初步替代脑力的任务。本章我们主要介绍下机器学习的基本概念、监督学习、分类算法、逻辑回归、代价函数、损失函数、LDA、PCA、决策树、支持向量机、EM算法、聚类和降维以及模型评估有哪些方法、指标等等。
## 2.1 基本概念
@ -16,24 +16,25 @@
### 2.1.2 什么是神经网络
神经网络就是按照一定规则将多个神经元连接起来的网络。不同的神经网络,具有不同的连接规则。
例如全连接(Full Connected, FC)神经网络,它的规则包括:
神经网络就是按照一定规则将多个神经元连接起来的网络。不同的神经网络,具有不同的连接规则。例如全连接(Full Connected, FC)神经网络,它的规则包括:
1. 有三种层:输入层,输出层,隐藏层。
1有三种层:输入层,输出层,隐藏层。
2. 同一层的神经元之间没有连接。
2同一层的神经元之间没有连接。
3. fully connected的含义第 N 层的每个神经元和第 N-1 层的所有神经元相连,第 N-1 层神经元的输出就是第 N 层神经元的输入。
3fully connected的含义第 N 层的每个神经元和第 N-1 层的所有神经元相连,第 N-1 层神经元的输出就是第 N 层神经元的输入。
4. 每个连接都有一个权值。
4每个连接都有一个权值。
**神经网络架构**
图2-2就是一个神经网络系统它由很多层组成。输入层负责接收信息比如一只猫的图片。输出层是计算机对这个输入信息的判断结果它是不是猫。隐藏层就是对输入信息的传递和加工处理。
![图2-2 神经网络系统](E:/DeepLearning-500-questions/ch02_%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80/img/ch2/2.5.1.png)
**神经网络架构**
图2-1就是一个神经网络系统它由很多层组成。输入层负责接收信息比如一只猫的图片。输出层是计算机对这个输入信息的判断结果它是不是猫。隐藏层就是对输入信息的传递和加工处理。
![图2-2 神经网络系统](E:/DeepLearning-500-questions/ch02_%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80/img/ch2/2.5.1.png)
图2-1 神经网络系统
### 2.1.3 各种常见算法图示
日常使用机器学习的任务中我们经常会遇见各种算法图2-1是各种常见算法的图示。
日常使用机器学习的任务中我们经常会遇见各种算法图2-2是各种常见算法的图示。
| 回归算法 | 聚类算法 | 正则化方法 |
| :----------------------: | :----------------------: | :----------------------: |
@ -50,8 +51,8 @@
| 深度学习 | 降低维度算法 | 集成算法 |
| :-----------------------: | :-----------------------: | :-----------------------: |
| ![](./img/ch2/2.2.10.png) | ![](./img/ch2/2.2.11.png) | ![](./img/ch2/2.2.12.png) |
| :-: | :-: | :-: |
| | 图2-1 各种常见算法 | |
图2-2 各种常见算法图示
### 2.1.4 计算图的导数计算
@ -81,27 +82,33 @@ $$
> 柏拉图有一天问老师苏格拉底什么是爱情?苏格拉底叫他到麦田走一次,摘一颗最大的麦穗回来,不许回头,只可摘一次。柏拉图空着手出来了,他的理由是,看见不错的,却不知道是不是最好的,一次次侥幸,走到尽头时,才发现还不如前面的,于是放弃。苏格拉底告诉他:“这就是爱情。”这故事让我们明白了一个道理,因为生命的一些不确定性,所以全局最优解是很难寻找到的,或者说根本就不存在,我们应该设置一些限定条件,然后在这个范围内寻找最优解,也就是局部最优解——有所斩获总比空手而归强,哪怕这种斩获只是一次有趣的经历。
> 柏拉图有一天又问什么是婚姻?苏格拉底叫他到树林走一次,选一棵最好的树做圣诞树,也是不许回头,只许选一次。这次他一身疲惫地拖了一棵看起来直挺、翠绿,却有点稀疏的杉树回来,他的理由是,有了上回的教训,好不容易看见一棵看似不错的,又发现时间、体力已经快不够用了,也不管是不是最好的,就拿回来了。苏格拉底告诉他:“这就是婚姻。”
优化问题一般分为局部最优和全局最优。
优化问题一般分为局部最优和全局最优。其中,
1. 局部最优,就是在函数值空间的一个有限区域内寻找最小值;而全局最优,是在函数值空间整个区域寻找最小值问题。
2. 函数局部最小点是它的函数值小于或等于附近点的点。但是有可能大于较远距离的点。
3. 全局最小点是那种它的函数值小于或等于所有的可行点。
1局部最优就是在函数值空间的一个有限区域内寻找最小值而全局最优是在函数值空间整个区域寻找最小值问题。
2函数局部最小点是它的函数值小于或等于附近点的点但是有可能大于较远距离的点。
3全局最小点是那种它的函数值小于或等于所有的可行点。
### 2.1.5 大数据与深度学习之间的关系
首先来看大数据、机器学习及数据挖掘三者简单的定义:
**大数据**通常被定义为“超出常用软件工具捕获,管理和处理能力”的数据集。
**机器学习**关心的问题是如何构建计算机程序使用经验自动改进。
**数据挖掘**是从数据中提取模式的特定算法的应用。
在数据挖掘中,重点在于算法的应用,而不是算法本身。
**数据挖掘**是从数据中提取模式的特定算法的应用,在数据挖掘中,重点在于算法的应用,而不是算法本身。
**机器学习和数据挖掘**之间的关系如下:
数据挖掘是一个过程,在此过程中机器学习算法被用作提取数据集中的潜在有价值模式的工具。
大数据与深度学习关系总结如下:
1. 深度学习是一种模拟大脑的行为。可以从所学习对象的机制以及行为等等很多相关联的方面进行学习,模仿类型行为以及思维。
2. 深度学习对于大数据的发展有帮助。深度学习对于大数据技术开发的每一个阶段均有帮助,不管是数据的分析还是挖掘还是建模,只有深度学习,这些工作才会有可能一一得到实现。
3. 深度学习转变了解决问题的思维。很多时候发现问题到解决问题走一步看一步不是一个主要的解决问题的方式了在深度学习的基础上要求我们从开始到最后都要基于一个目标为了需要优化的那个最终目标去进行处理数据以及将数据放入到数据应用平台上去这就是端到端End to End
4. 大数据的深度学习需要一个框架。在大数据方面的深度学习都是从基础的角度出发的,深度学习需要一个框架或者一个系统。总而言之,将你的大数据通过深度分析变为现实,这就是深度学习和大数据的最直接关系。
1深度学习是一种模拟大脑的行为。可以从所学习对象的机制以及行为等等很多相关联的方面进行学习模仿类型行为以及思维。
2深度学习对于大数据的发展有帮助。深度学习对于大数据技术开发的每一个阶段均有帮助不管是数据的分析还是挖掘还是建模只有深度学习这些工作才会有可能一一得到实现。
3深度学习转变了解决问题的思维。很多时候发现问题到解决问题走一步看一步不是一个主要的解决问题的方式了在深度学习的基础上要求我们从开始到最后都要基于一个目标为了需要优化的那个最终目标去进行处理数据以及将数据放入到数据应用平台上去这就是端到端End to End
4大数据的深度学习需要一个框架。在大数据方面的深度学习都是从基础的角度出发的深度学习需要一个框架或者一个系统。总而言之将你的大数据通过深度分析变为现实这就是深度学习和大数据的最直接关系。
@ -111,28 +118,33 @@ $$
### 2.2.1 监督学习
1. 监督学习是使用已知正确答案的示例来训练网络。已知数据和其一一对应的标签,训练一个预测模型,将输入数据映射到标签的过程。
2. 监督式学习的常见应用场景如分类问题和回归问题。
3. 常见的有监督机器学习算法包括支持向量机(Support Vector Machine, SVM),朴素贝叶斯(Naive Bayes),逻辑回归(Logistic Regression)K近邻(K-Nearest Neighborhood, KNN),决策树(Decision Tree),随机森林(Random Forest)AdaBoost以及线性判别分析(Linear Discriminant Analysis, LDA)等。深度学习(Deep Learning)也是大多数以监督学习的方式呈现。
特点:监督学习是使用已知正确答案的示例来训练网络。已知数据和其一一对应的标签,训练一个预测模型,将输入数据映射到标签的过程。
常见应用场景:监督式学习的常见应用场景如分类问题和回归问题。
算法举例:常见的有监督机器学习算法包括支持向量机(Support Vector Machine, SVM),朴素贝叶斯(Naive Bayes),逻辑回归(Logistic Regression)K近邻(K-Nearest Neighborhood, KNN),决策树(Decision Tree),随机森林(Random Forest)AdaBoost以及线性判别分析(Linear Discriminant Analysis, LDA)等。深度学习(Deep Learning)也是大多数以监督学习的方式呈现。
### 2.2.2 非监督式学习
1. 在非监督式学习中,数据并不被特别标识,适用于你具有数据集但无标签的情况。学习模型是为了推断出数据的一些内在结构。
2. 常见的应用场景包括关联规则的学习以及聚类等。
3. 常见算法包括Apriori算法以及k-Means算法。
定义:在非监督式学习中,数据并不被特别标识,适用于你具有数据集但无标签的情况。学习模型是为了推断出数据的一些内在结构。
常见应用场景:常见的应用场景包括关联规则的学习以及聚类等。
算法举例常见算法包括Apriori算法以及k-Means算法。
### 2.2.3 半监督式学习
1. 在此学习方式下,输入数据部分被标记,部分没有被标记,这种学习模型可以用来进行预测。
2. 应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,通过对已标记数据建模,在此基础上,对未标记数据进行预测。
3. 常见算法如图论推理算法Graph Inference或者拉普拉斯支持向量机Laplacian SVM等。
特点:在此学习方式下,输入数据部分被标记,部分没有被标记,这种学习模型可以用来进行预测。
常见应用场景:应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,通过对已标记数据建模,在此基础上,对未标记数据进行预测。
算法举例常见算法如图论推理算法Graph Inference或者拉普拉斯支持向量机Laplacian SVM等。
### 2.2.4 弱监督学习
1. 弱监督学习可以看做是有多个标记的数据集合,次集合可以是空集,单个元素,或包含多种情况(没有标记,有一个标记,和有多个标记)的多个元素。
2. 数据集的标签是不可靠的,这里的不可靠可以是标记不正确,多种标记,标记不充分,局部标记等。
3. 已知数据和其一一对应的弱标签,训练一个智能算法,将输入数据映射到一组更强的标签的过程。标签的强弱指的是标签蕴含的信息量的多少,比如相对于分割的标签来说,分类的标签就是弱标签。
4. 举例,给出一张包含气球的图片,需要得出气球在图片中的位置及气球和背景的分割线,这就是已知弱标签学习强标签的问题。
特点:弱监督学习可以看做是有多个标记的数据集合,次集合可以是空集,单个元素,或包含多种情况(没有标记,有一个标记,和有多个标记)的多个元素。 数据集的标签是不可靠的,这里的不可靠可以是标记不正确,多种标记,标记不充分,局部标记等。已知数据和其一一对应的弱标签,训练一个智能算法,将输入数据映射到一组更强的标签的过程。标签的强弱指的是标签蕴含的信息量的多少,比如相对于分割的标签来说,分类的标签就是弱标签。
算法举例:举例,给出一张包含气球的图片,需要得出气球在图片中的位置及气球和背景的分割线,这就是已知弱标签学习强标签的问题。
在企业数据应用的场景下, 人们最常用的可能就是监督式学习和非监督式学习的模型。 在图像识别等领域,由于存在大量的非标识的数据和少量的可标识数据, 目前半监督式学习是一个很热的话题。
@ -170,7 +182,7 @@ $$
### 2.8.1 常用分类算法的优缺点?
接下来我们介绍常用分类算法的优缺点如表2-1所示。
表2-1 常用分类算法的优缺点
表2-1 常用分类算法的优缺点
|算法|优点|缺点|
|:-|:-|:-|
|Bayes 贝叶斯分类法|1所需估计的参数少对于缺失数据不敏感。<br />2有着坚实的数学基础以及稳定的分类效率。|1需要假设属性之间相互独立这往往并不成立。喜欢吃番茄、鸡蛋却不喜欢吃番茄炒蛋<br />2需要知道先验概率。<br />3分类决策存在错误率。|
@ -186,15 +198,17 @@ $$
### 2.8.2 分类算法的评估方法
分类评估方法主要功能是用来评估分类算法的好坏,而评估一个分类器算法的好坏又包括许多项指标。了解各种评估方法,在实际应用中选择正确的评估方法是十分重要的。
- **几个常用术语**
这里首先介绍几个常见的模型评价术语现在假设我们的分类目标只有两类计为正例positive和负例negative分别是
这里首先介绍几个常见的模型评价术语现在假设我们的分类目标只有两类计为正例positive和负例negative分别是
1) True positives(TP): 被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数;
2) False positives(FP): 被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数;
3) False negatives(FN):被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数;
4) True negatives(TN): 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数。 
表2-2 四个术语的混淆矩阵
![图2-3 术语的混淆矩阵](./img/ch2/2.9/1.png)
图2-3是这四个术语的混淆矩阵,做以下说明:
表2-2是这四个术语的混淆矩阵,做以下说明:
1P=TP+FN表示实际为正例的样本个数。
2True、False描述的是分类器是否判断正确。
3Positive、Negative是分类器的分类结果如果正例计为1、负例计为-1即positive=1、negative=-1。用1表示True-1表示False那么实际的类标=TF\*PNTF为true或falsePN为positive或negative。
@ -236,11 +250,11 @@ $$
- **ROC曲线和PR曲线**
如图2-4ROC曲线是Receiver Operating Characteristic Curve受试者工作特征曲线的简称是以灵敏度真阳性率为纵坐标以1减去特异性假阳性率为横坐标绘制的性能评价曲线。可以将不同模型对同一数据集的ROC曲线绘制在同一笛卡尔坐标系中ROC曲线越靠近左上角说明其对应模型越可靠。也可以通过ROC曲线下面的面积Area Under Curve, AUC来评价模型AUC越大模型越可靠。
如图2-3ROC曲线是Receiver Operating Characteristic Curve受试者工作特征曲线的简称是以灵敏度真阳性率为纵坐标以1减去特异性假阳性率为横坐标绘制的性能评价曲线。可以将不同模型对同一数据集的ROC曲线绘制在同一笛卡尔坐标系中ROC曲线越靠近左上角说明其对应模型越可靠。也可以通过ROC曲线下面的面积Area Under Curve, AUC来评价模型AUC越大模型越可靠。
![](./img/ch2/2.7.3.png)
图2-4 ROC曲线
图2-3 ROC曲线
PR曲线是Precision Recall Curve的简称描述的是precision和recall之间的关系以recall为横坐标precision为纵坐标绘制的曲线。该曲线的所对应的面积AUC实际上是目标检测中常用的评价指标平均精度Average Precision, AP。AP越高说明模型性能越好。
@ -260,33 +274,49 @@ $$
广义线性模型家族里,依据因变量不同,可以有如下划分:
1. 如果是连续的,就是多重线性回归。
2. 如果是二项分布,就是逻辑回归。
3. 如果是泊松Poisson分布就是泊松回归。
4. 如果是负二项分布,就是负二项回归。
5. 逻辑回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释。所以实际中最常用的就是二分类的逻辑回归。
1如果是连续的就是多重线性回归。
2如果是二项分布就是逻辑回归。
3如果是泊松Poisson分布就是泊松回归。
4如果是负二项分布就是负二项回归。
5逻辑回归的因变量可以是二分类的也可以是多分类的但是二分类的更为常用也更加容易解释。所以实际中最常用的就是二分类的逻辑回归。
### 2.9.2 逻辑回归适用性
1. 用于概率预测。用于可能性预测时,得到的结果有可比性。比如根据模型进而预测在不同的自变量情况下,发生某病或某种情况的概率有多大。
2. 用于分类。实际上跟预测有些类似,也是根据模型,判断某人属于某病或属于某种情况的概率有多大,也就是看一下这个人有多大的可能性是属于某病。进行分类时,仅需要设定一个阈值即可,可能性高于阈值是一类,低于阈值是另一类。
3. 寻找危险因素。寻找某一疾病的危险因素等。
4. 仅能用于线性问题。只有当目标和特征是线性关系时,才能用逻辑回归。在应用逻辑回归时注意两点:一是当知道模型是非线性时,不适用逻辑回归;二是当使用逻辑回归时,应注意选择和目标为线性关系的特征。
5. 各特征之间不需要满足条件独立假设,但各个特征的贡献独立计算。
逻辑回归可用于以下几个方面:
1用于概率预测。用于可能性预测时得到的结果有可比性。比如根据模型进而预测在不同的自变量情况下发生某病或某种情况的概率有多大。
2用于分类。实际上跟预测有些类似也是根据模型判断某人属于某病或属于某种情况的概率有多大也就是看一下这个人有多大的可能性是属于某病。进行分类时仅需要设定一个阈值即可可能性高于阈值是一类低于阈值是另一类。
3寻找危险因素。寻找某一疾病的危险因素等。
4仅能用于线性问题。只有当目标和特征是线性关系时才能用逻辑回归。在应用逻辑回归时注意两点一是当知道模型是非线性时不适用逻辑回归二是当使用逻辑回归时应注意选择和目标为线性关系的特征。
5各特征之间不需要满足条件独立假设但各个特征的贡献独立计算。
### 2.9.3 逻辑回归与朴素贝叶斯有什么区别
1. 逻辑回归是判别模型, 朴素贝叶斯是生成模型,所以生成和判别的所有区别它们都有。
2. 朴素贝叶斯属于贝叶斯,逻辑回归是最大似然,两种概率哲学间的区别。
3. 朴素贝叶斯需要条件独立假设。
4. 逻辑回归需要求特征参数间是线性的。
逻辑回归与朴素贝叶斯区别有以下几个方面:
1逻辑回归是判别模型 朴素贝叶斯是生成模型,所以生成和判别的所有区别它们都有。
2朴素贝叶斯属于贝叶斯逻辑回归是最大似然两种概率哲学间的区别。
3朴素贝叶斯需要条件独立假设。
4逻辑回归需要求特征参数间是线性的。
### 2.9.4 线性回归与逻辑回归的区别
(贡献者:黄钦建-华南理工大学)
线性回归与逻辑回归的区别如下描述:
线性回归的样本的输出,都是连续值,$ y\in (-\infty ,+\infty )$,而逻辑回归中$y\in (0,1)$只能取0和1。
1线性回归的样本的输出,都是连续值,$ y\in (-\infty ,+\infty )$,而逻辑回归中$y\in (0,1)$只能取0和1。
对于拟合函数也有本质上的差别:
2对于拟合函数也有本质上的差别:
线性回归:$f(x)=\theta ^{T}x=\theta _{1}x _{1}+\theta _{2}x _{2}+...+\theta _{n}x _{n}$
@ -304,7 +334,9 @@ $$
当$\theta ^{T}x<0$则y<0.5$\theta ^{T}x\rightarrow -\infty $$y \rightarrow 0 $即y为0类;
这个时候就能看出区别,在线性回归中$\theta ^{T}x$为预测值的拟合函数;而在逻辑回归中$\theta ^{T}x$为决策边界。
这个时候就能看出区别,在线性回归中$\theta ^{T}x$为预测值的拟合函数;而在逻辑回归中$\theta ^{T}x$为决策边界。下表2-3为线性回归和逻辑回归的区别。
表2-3 线性回归和逻辑回归的区别
| | 线性回归 | 逻辑回归 |
|:-------------:|:-------------:|:-----:|
@ -327,36 +359,32 @@ $$
2. 用于找到最优解的目的函数。
### 2.10.2 代价函数作用原理
在回归问题中,通过代价函数来求解最优解,常用的是平方误差代价函数。有如下假设函数:
$$
h(x) = A + Bx
$$
假设函数中有$A$和$B$两个参数,当参数发生变化时,假设函数状态也会随着变化。
如下图所示:
在回归问题中通过代价函数来求解最优解常用的是平方误差代价函数。假设函数图像如图2-4所示当参数发生变化时假设函数状态也会随着变化。
![](./img/ch2/2.16/1.jpg)
图2-4 $h(x) = A + Bx$函数示意图
想要拟合图中的离散点,我们需要尽可能找到最优的$A$和$B$来使这条直线更能代表所有数据。如何找到最优解呢,这就需要使用代价函数来求解,以平方误差代价函数为例,假设函数为$h(x)=\theta_0x$。
**平方误差代价函数的主要思想**就是将实际数据给出的值与拟合出的线的对应值做差,求出拟合出的直线与实际的差距。在实际应用中,为了避免因个别极端数据产生的影响,采用类似方差再取二分之一的方式来减小个别数据的影响。因此,引出代价函数:
$$
J(\theta_0, \theta_1) = \frac{1}{m}\sum_{i=1}^m(h(x^{(i)})-y^{(i)})^2
$$
**最优解即为代价函数的最小值**$\min J(\theta_0, \theta_1)$。如果是1个参数代价函数一般通过二维曲线便可直观看出。如果是2个参数代价函数通过三维图像可看出效果参数越多越复杂。
当参数为2个时代价函数是三维图像。
**最优解即为代价函数的最小值**$\min J(\theta_0, \theta_1)$。如果是1个参数代价函数一般通过二维曲线便可直观看出。如果是2个参数代价函数通过三维图像可看出效果参数越多越复杂。
当参数为2个时代价函数是三维图像如下图2-5所示
![](./img/ch2/2.16/2.jpg)
图2-5 代价函数三维图像
### 2.10.3 为什么代价函数要非负
目标函数存在一个下界,在优化过程当中,如果优化算法能够使目标函数不断减小,根据单调有界准则,这个优化算法就能证明是收敛有效的。
只要设计的目标函数有下界,基本上都可以,代价函数非负更为方便。
### 2.10.4 常见代价函数
1. **二次代价函数quadratic cost**
1**二次代价函数quadratic cost**
$$
J = \frac{1}{2n}\sum_x\Vert y(x)-a^L(x)\Vert^2
$$
@ -371,17 +399,18 @@ $$
$$
其中,$z$表示神经元的输入,$\sigma$表示激活函数。权值$w$和偏置$b$的梯度跟激活函数的梯度成正比,激活函数的梯度越大,权值$w$和偏置$b$的大小调整得越快,训练收敛得就越快。
*注*神经网络常用的激活函数为sigmoid函数该函数的曲线如下所示
*注*神经网络常用的激活函数为sigmoid函数该函数的曲线如下图2-6所示:
![](./img/ch2/2.18/1.jpg)
如图所示对0.88和0.98两个点进行比较:
图2-6 sigmoid函数曲线
如上图所示对0.88和0.98两个点进行比较:
假设目标是收敛到1.0。0.88离目标1.0比较远梯度比较大权值调整比较大。0.98离目标1.0比较近,梯度比较小,权值调整比较小。调整方案合理。
假如目标是收敛到0。0.88离目标0比较近梯度比较大权值调整比较大。0.98离目标0比较远梯度比较小权值调整比较小。调整方案不合理。
原因在使用sigmoid函数的情况下, 初始的代价(误差)越大,导致训练越慢。
2. **交叉熵代价函数cross-entropy**
2**交叉熵代价函数cross-entropy**
$$
J = -\frac{1}{n}\sum_x[y\ln a + (1-y)\ln{(1-a)}]
$$
@ -396,29 +425,28 @@ $$
当误差越大时,梯度就越大,权值$w$和偏置$b$调整就越快,训练的速度也就越快。
**二次代价函数适合输出神经元是线性的情况交叉熵代价函数适合输出神经元是S型函数的情况。**
3. **对数似然代价函数log-likelihood cost**
对数似然函数常用来作为softmax回归的代价函数。深度学习中普遍的做法是将softmax作为最后一层此时常用的代价函数是对数似然代价函数。
对数似然代价函数与softmax的组合和交叉熵与sigmoid函数的组合非常相似。对数似然代价函数在二分类时可以化简为交叉熵代价函数的形式。
3**对数似然代价函数log-likelihood cost**
对数似然函数常用来作为softmax回归的代价函数。深度学习中普遍的做法是将softmax作为最后一层此时常用的代价函数是对数似然代价函数。
对数似然代价函数与softmax的组合和交叉熵与sigmoid函数的组合非常相似。对数似然代价函数在二分类时可以化简为交叉熵代价函数的形式。
在tensorflow中
与sigmoid搭配使用的交叉熵函数`tf.nn.sigmoid_cross_entropy_with_logits()`。
与softmax搭配使用的交叉熵函数`tf.nn.softmax_cross_entropy_with_logits()`。
与sigmoid搭配使用的交叉熵函数`tf.nn.sigmoid_cross_entropy_with_logits()`。
与softmax搭配使用的交叉熵函数`tf.nn.softmax_cross_entropy_with_logits()`。
在pytorch中
与sigmoid搭配使用的交叉熵函数`torch.nn.BCEWithLogitsLoss()`。
与softmax搭配使用的交叉熵函数`torch.nn.CrossEntropyLoss()`。
与sigmoid搭配使用的交叉熵函数`torch.nn.BCEWithLogitsLoss()`。
与softmax搭配使用的交叉熵函数`torch.nn.CrossEntropyLoss()`。
### 2.10.5 为什么用交叉熵代替二次代价函数
1. **为什么不用二次方代价函数**
由上一节可知,权值$w$和偏置$b$的偏导数为$\frac{\partial J}{\partial w}=(a-y)\sigma'(z)x$$\frac{\partial J}{\partial b}=(a-y)\sigma'(z)$ 偏导数受激活函数的导数影响sigmoid函数导数在输出接近0和1时非常小会导致一些实例在刚开始训练时学习得非常慢。
2. **为什么要用交叉熵**
交叉熵函数权值$w$和偏置$b$的梯度推导为:
1**为什么不用二次方代价函数**
由上一节可知,权值$w$和偏置$b$的偏导数为$\frac{\partial J}{\partial w}=(a-y)\sigma'(z)x$$\frac{\partial J}{\partial b}=(a-y)\sigma'(z)$ 偏导数受激活函数的导数影响sigmoid函数导数在输出接近0和1时非常小会导致一些实例在刚开始训练时学习得非常慢。
2**为什么要用交叉熵**
交叉熵函数权值$w$和偏置$b$的梯度推导为:
$$
\frac{\partial J}{\partial w_j}=\frac{1}{n}\sum_{x}x_j(\sigma{(z)}-y)\;
\frac{\partial J}{\partial b}=\frac{1}{n}\sum_{x}(\sigma{(z)}-y)
$$
由以上公式可知,权重学习的速度受到$\sigma{(z)}-y$影响,更大的误差,就有更快的学习速度,避免了二次代价函数方程中因$\sigma'{(z)}$导致的学习缓慢的情况。
由以上公式可知,权重学习的速度受到$\sigma{(z)}-y$影响,更大的误差,就有更快的学习速度,避免了二次代价函数方程中因$\sigma'{(z)}$导致的学习缓慢的情况。
## 2.11 损失函数
@ -433,9 +461,8 @@ L(Y, f(x))$来表示。损失函数越小,模型的鲁棒性就越好。损
损失函数可分为经验风险损失函数和结构风险损失函数。经验风险损失函数指预测结果和实际结果的差别,结构风险损失函数是在经验风险损失函数上加上正则项。
下面介绍常用的损失函数:
1. **0-1损失函数**
1**0-1损失函数**
如果预测值和目标值相等值为0如果不相等值为1。
$$
L(Y, f(x)) =
\begin{cases}
@ -454,41 +481,36 @@ L(Y, f(x)) =
\end{cases}
$$
2. **绝对值损失函数**
2**绝对值损失函数**
和0-1损失函数相似绝对值损失函数表示为
$$
L(Y, f(x)) = |Y-f(x)|
$$
3. **平方损失函数**
3**平方损失函数**
$$
L(Y, f(x)) = \sum_N{(Y-f(x))}^2
$$
这点可从最小二乘法和欧几里得距离角度理解。最小二乘法的原理是,最优拟合曲线应该使所有点到回归直线的距离和最小。
4. **对数损失函数**
4**对数损失函数**
$$
L(Y, P(Y|X)) = -\log{P(Y|X)}
$$
常见的逻辑回归使用的就是对数损失函数有很多人认为逻辑回归的损失函数是平方损失其实不然。逻辑回归它假设样本服从伯努利分布0-1分布进而求得满足该分布的似然函数接着取对数求极值等。逻辑回归推导出的经验风险函数是最小化负的似然函数从损失函数的角度看就是对数损失函数。
5. **指数损失函数**
6**指数损失函数**
指数损失函数的标准形式为:
$$
L(Y, f(x)) = \exp(-Yf(x))
$$
例如AdaBoost就是以指数损失函数为损失函数。
6. **Hinge损失函数**
7**Hinge损失函数**
Hinge损失函数的标准形式如下
$$
L(y) = \max{(0, 1-ty)}
$$
@ -552,25 +574,24 @@ $$
如何确定这两个参数?最大似然估计是比较常用的方法。最大似然的目标是找到一些参数值,这些参数值对应的分布可以最大化观测到数据的概率。
因为需要计算观测到所有数据的全概率,即所有观测到的数据点的联合概率。现考虑如下简化情况:
1. 假设观测到每个数据点的概率和其他数据点的概率是独立的。
2. 取自然对数。
假设观测到单个数据点$x_i(i=1,2,...n)$的概率为:
1假设观测到每个数据点的概率和其他数据点的概率是独立的。
2取自然对数。
假设观测到单个数据点$x_i(i=1,2,...n)$的概率为:
$$
P(x_i;\mu,\sigma)=\frac{1}{\sigma \sqrt{2\pi}}\exp
\left( - \frac{(x_i-\mu)^2}{2\sigma^2} \right)
$$
3. 其联合概率为:
$$
P(x_1,x_2,...,x_n;\mu,\sigma)=\frac{1}{\sigma \sqrt{2\pi}}\exp
\left( - \frac{(x_1-\mu)^2}{2\sigma^2} \right) \\ \times
\frac{1}{\sigma \sqrt{2\pi}}\exp
\left( - \frac{(x_2-\mu)^2}{2\sigma^2} \right) \times ... \times
\frac{1}{\sigma \sqrt{2\pi}}\exp
\left( - \frac{(x_n-\mu)^2}{2\sigma^2} \right)
$$
3其联合概率为
$$
P(x_1,x_2,...,x_n;\mu,\sigma)=\frac{1}{\sigma \sqrt{2\pi}}\exp
\left( - \frac{(x_1-\mu)^2}{2\sigma^2} \right) \\ \times
\frac{1}{\sigma \sqrt{2\pi}}\exp
\left( - \frac{(x_2-\mu)^2}{2\sigma^2} \right) \times ... \times
\frac{1}{\sigma \sqrt{2\pi}}\exp
\left( - \frac{(x_n-\mu)^2}{2\sigma^2} \right)
$$
对上式取自然对数,可得:
$$
\ln(P(x_1,x_2,...x_n;\mu,\sigma))=
@ -600,43 +621,65 @@ $$
## 2.12 梯度下降
### 2.12.1 机器学习中为什么需要梯度下降
1. 梯度下降是迭代法的一种,可以用于求解最小二乘问题。
2. 在求解机器学习算法的模型参数即无约束优化问题时主要有梯度下降法Gradient Descent和最小二乘法。
3. 在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。
4. 如果我们需要求解损失函数的最大值,可通过梯度上升法来迭代。梯度下降法和梯度上升法可相互转换。
5. 在机器学习中,梯度下降法主要有随机梯度下降法和批量梯度下降法。
梯度下降是机器学习中常见优化算法之一,梯度下降法有以下几个作用:
1梯度下降是迭代法的一种可以用于求解最小二乘问题。
2在求解机器学习算法的模型参数即无约束优化问题时主要有梯度下降法Gradient Descent和最小二乘法。
3在求解损失函数的最小值时可以通过梯度下降法来一步步的迭代求解得到最小化的损失函数和模型参数值。
4如果我们需要求解损失函数的最大值可通过梯度上升法来迭代。梯度下降法和梯度上升法可相互转换。
5在机器学习中梯度下降法主要有随机梯度下降法和批量梯度下降法。
### 2.12.2 梯度下降法缺点
1. 靠近极小值时收敛速度减慢。
2. 直线搜索时可能会产生一些问题。
3. 可能会“之字形”地下降。
梯度概念需注意:
1. 梯度是一个向量,即有方向有大小。
2. 梯度的方向是最大方向导数的方向。
3. 梯度的值是最大方向导数的值。
梯度下降法缺点有以下几点:
1靠近极小值时收敛速度减慢。
2直线搜索时可能会产生一些问题。
3可能会“之字形”地下降。
梯度概念也有需注意的地方:
1梯度是一个向量即有方向有大小。
2梯度的方向是最大方向导数的方向。
3梯度的值是最大方向导数的值。
### 2.12.3 梯度下降法直观理解
梯度下降法经典图示:
梯度下降法经典图示如下图2.7所示
![](./img/ch2/2.25/1.png)
形象化举例,由上图,假如最开始,我们在一座大山上的某处位置,因为到处都是陌生的,不知道下山的路,所以只能摸索着根据直觉,走一步算一步,在此过程中,每走到一个位置的时候,都会求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。不断循环求梯度,就这样一步步地走下去,一直走到我们觉得已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山势低处。
图2.7 梯度下降法经典图示
形象化举例由上图2.7所示,假如最开始,我们在一座大山上的某处位置,因为到处都是陌生的,不知道下山的路,所以只能摸索着根据直觉,走一步算一步,在此过程中,每走到一个位置的时候,都会求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。不断循环求梯度,就这样一步步地走下去,一直走到我们觉得已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山势低处。
由此,从上面的解释可以看出,梯度下降不一定能够找到全局的最优解,有可能是一个局部的最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。
**核心思想归纳**
1. 初始化参数,随机选取取值范围内的任意数;
2. 迭代操作:
a计算当前梯度
b修改新的变量
c计算朝最陡的下坡方向走一步
d判断是否需要终止如否返回a
3. 得到全局最优解或者接近全局最优解。
1初始化参数随机选取取值范围内的任意数
2迭代操作
a计算当前梯度
b修改新的变量
c计算朝最陡的下坡方向走一步
d判断是否需要终止如否返回a
3得到全局最优解或者接近全局最优解。
### 2.12.4 梯度下降法算法描述
1. 确定优化模型的假设函数及损失函数。
举例,对于线性回归,假设函数为:
梯度下降法算法步骤如下:
1确定优化模型的假设函数及损失函数。
举例,对于线性回归,假设函数为:
$$
h_\theta(x_1,x_2,...,x_n)=\theta_0+\theta_1x_1+...+\theta_nx_n
$$
@ -647,13 +690,12 @@ $$
,x^{(j)}_1,...,x^{(j)}_n)-y_j)^2
$$
2. 相关参数初始化。
主要初始化${\theta}_i$、算法迭代步长${\alpha} $、终止距离${\zeta} $。初始化时可以根据经验初始化,即${\theta} $初始化为0步长${\alpha} $初始化为1。当前步长记为${\varphi}_i $。当然,也可随机初始化。
2相关参数初始化。
主要初始化${\theta}_i$、算法迭代步长${\alpha} $、终止距离${\zeta} $。初始化时可以根据经验初始化,即${\theta} $初始化为0步长${\alpha} $初始化为1。当前步长记为${\varphi}_i $。当然,也可随机初始化。
3. 迭代计算。
1计算当前位置时损失函数的梯度对${\theta}_i $,其梯度表示为:
3迭代计算。
1计算当前位置时损失函数的梯度对${\theta}_i $,其梯度表示为:
$$
\frac{\partial}{\partial \theta_i}J({\theta}_0,{\theta}_1,...,{\theta}_n)=\frac{1}{2m}\sum^{m}_{j=0}(h_\theta (x^{(j)}_0
,x^{(j)}_1,...,x^{(j)}_n)-y_j)^2
@ -677,12 +719,15 @@ $$
### 2.12.5 如何对梯度下降法进行调优
实际使用梯度下降法时,各项参数指标不能一步就达到理想状态,对梯度下降法调优主要体现在以下几个方面:
1. **算法迭代步长$\alpha$选择。**
在算法参数初始化时有时根据经验将步长初始化为1。实际取值取决于数据样本。可以从大到小多取一些值分别运行算法看迭代效果如果损失函数在变小则取值有效。如果取值无效说明要增大步长。但步长太大有时会导致迭代速度过快错过最优解。步长太小迭代速度慢算法运行时间长。
2. **参数的初始值选择。**
初始值不同,获得的最小值也有可能不同,梯度下降有可能得到的是局部最小值。如果损失函数是凸函数,则一定是最优解。由于有局部最优解的风险,需要多次用不同初始值运行算法,关键损失函数的最小值,选择损失函数最小化的初值。
3. **标准化处理。**
由于样本不同特征取值范围也不同导致迭代速度慢。为了减少特征取值的影响可对特征数据标准化使新期望为0新方差为1可节省算法运行时间。
1**算法迭代步长$\alpha$选择。**
在算法参数初始化时有时根据经验将步长初始化为1。实际取值取决于数据样本。可以从大到小多取一些值分别运行算法看迭代效果如果损失函数在变小则取值有效。如果取值无效说明要增大步长。但步长太大有时会导致迭代速度过快错过最优解。步长太小迭代速度慢算法运行时间长。
2**参数的初始值选择。**
初始值不同,获得的最小值也有可能不同,梯度下降有可能得到的是局部最小值。如果损失函数是凸函数,则一定是最优解。由于有局部最优解的风险,需要多次用不同初始值运行算法,关键损失函数的最小值,选择损失函数最小化的初值。
3**标准化处理。**
由于样本不同特征取值范围也不同导致迭代速度慢。为了减少特征取值的影响可对特征数据标准化使新期望为0新方差为1可节省算法运行时间。
### 2.12.6 随机梯度和批量梯度区别
随机梯度下降SDG和批量梯度下降BDG是两种主要梯度下降法其目的是增加某些限制来加速运算求解。