Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions Deep Learning/10. Neural Network/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@

**一般说到神经网络的层数是这样计算的,输入层不算,从隐藏层开始一直到输出层,一共有几层就代表着这是一个几层的神经网络**,例如上图就是一个三层结构的神经网络。

**解释隐藏层的含义:**在一个神经网络中,当你使用监督学习训练它的时候,训练集包含了输入𝑥也包含了目标输出𝑦,所以术语隐藏层的含义是在训练集中,这些中间结点的准确值我们是不知道到的,也就是说你看不见它们在训练集中应具有的值。
**解释隐藏层的含义:** 在一个神经网络中,当你使用监督学习训练它的时候,训练集包含了输入𝑥也包含了目标输出𝑦,所以术语隐藏层的含义是在训练集中,这些中间结点的准确值我们是不知道到的,也就是说你看不见它们在训练集中应具有的值。

- 多隐藏层的神经网络比 单隐藏层的神经网络工程效果好很多。
- 提升隐层层数或者隐层神经元个数,神经网络“容量”会变大,空间表达力会变强。
Expand Down Expand Up @@ -191,7 +191,7 @@

正向传播(forward-propagation)是指对神经网络沿着从输入层到输出层的顺序,依次计算并存储模型的中间变量(包括输出)。

逻辑回归的计算步骤:所以回想当时我们讨论逻辑回归的时候,我们有这个正向传播步骤,其中我们计算𝑧,然后𝑎,然后损失函数𝐿。 正向传播类似,计算![](https://latex.codecogs.com/gif.latex?z^{[1]}a^{[1]}),再计算![](https://latex.codecogs.com/gif.latex?z^{[2]}a^{[2]}),最后得到**loss function**。
逻辑回归的计算步骤:所以回想当时我们讨论逻辑回归的时候,我们有这个正向传播步骤,其中我们计算𝑧,然后𝑎,然后损失函数𝐿。 正向传播类似,计算![](https://latex.codecogs.com/gif.latex?z^{[1]},a^{[1]}),再计算![](https://latex.codecogs.com/gif.latex?z^{[2]},a^{[2]}),最后得到**loss function**。

![](http://wx3.sinaimg.cn/mw690/00630Defgy1g5nmdcfqwjj30dp039t8n.jpg)

Expand Down Expand Up @@ -275,7 +275,7 @@

在图像分类的情景中,softmax分类器输出可以是一个图像类别的离散值,和线性回归不同的是,**softmax输出单元从一个变成了多个。**

softmax回归和线性回归一样将输入特征与权重做线性叠加。与线性回归的一个主要不同在于,**softmax回归的输出值个数等于标签里的类别数。**下图是用神经网络描绘了softmax回归,也是一个单层神经网络,由于每个输出 ![](https://latex.codecogs.com/gif.latex?o_1,o_2,o_3)的计算都要依赖于所有的输入 ![](https://latex.codecogs.com/gif.latex?x_1,x_2,x_3,x_4),softmax回归的输出层也是一个全连接层。
softmax回归和线性回归一样将输入特征与权重做线性叠加。与线性回归的一个主要不同在于,**softmax回归的输出值个数等于标签里的类别数。** 下图是用神经网络描绘了softmax回归,也是一个单层神经网络,由于每个输出 ![](https://latex.codecogs.com/gif.latex?o_1,o_2,o_3)的计算都要依赖于所有的输入 ![](https://latex.codecogs.com/gif.latex?x_1,x_2,x_3,x_4),softmax回归的输出层也是一个全连接层。

![](http://wx4.sinaimg.cn/mw690/00630Defly1g5lpopm1c3j30h906574z.jpg)

Expand Down
20 changes: 10 additions & 10 deletions Deep Learning/11. CNN/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
- **AlexNet**:训练集中100万张图片,对每个像素点求均值,得到均值图像,当训练时用原图减去均值图像。
- **VGG**:对所有输入在三个颜色通道R/G/B上取均值,只会得到3个值,当训练时减去对应的颜色通道均值。(**此种方法效率高**)

**TIPS:**在训练集和测试集上减去训练集的均值。
**TIPS:** 在训练集和测试集上减去训练集的均值。

2. 归一化

Expand Down Expand Up @@ -178,7 +178,7 @@

### 3.1 图像识别与定位

1. **classification:**C个类别识别
1. **classification:** C个类别识别

- **input**:Image
- **Output**:类别标签
Expand All @@ -204,7 +204,7 @@

更细致的识别可以提前规定好有k个组成部分,做成k个部分的回归,

**例如:**框出两只眼睛和两条腿,4元祖*4=16(个连续值)
**例如:** 框出两只眼睛和两条腿,4元组*4=16(个连续值)

3. Regression部分用欧氏距离损失,使用SGD训练。

Expand Down Expand Up @@ -234,9 +234,9 @@

- 你需要找很多位置, 给很多个不同大小的框
- 你还需要对框内的图像分类
- 当然, 如果你的GPU很强大, , 那加油做吧…
- 当然, 如果你的GPU很强大, , 那加油做吧…

**边缘策略:**想办法先找到可能包含内容的图框(**候选框**),然后进行分类问题的识别。
**边缘策略:** 想办法先找到可能包含内容的图框(**候选框**),然后进行分类问题的识别。

**方法**:根据RGB值做区域融合。**fast-CNN**,共享图窗,从而加速候选框的形成。

Expand All @@ -257,7 +257,7 @@ R-CNN的简要步骤如下:

SPP:Spatial Pyramid Pooling(空间金字塔池化),SPP-Net是出自2015年发表在IEEE上的论文。

众所周知,CNN一般都含有卷积部分和全连接部分,其中,卷积层不需要固定尺寸的图像,而全连接层是需要固定大小的输入。所以当全连接层面对各种尺寸的输入数据时,就需要对输入数据进行crop(crop就是从一个大图扣出网络输入大小的patch,比如227×227),或warp(把一个边界框bounding box(红框)的内容resize成227×227)等一系列操作以统一图片的尺寸大小,比如224*224(ImageNet)、32*32(LenNet)、96*96等。
众所周知,CNN一般都含有卷积部分和全连接部分,其中,卷积层不需要固定尺寸的图像,而全连接层是需要固定大小的输入。所以当全连接层面对各种尺寸的输入数据时,就需要对输入数据进行crop(crop就是从一个大图扣出网络输入大小的patch,比如227×227),或warp(把一个边界框bounding box(红框)的内容resize成227×227)等一系列操作以统一图片的尺寸大小,比如224\*224(ImageNet)、32\*32(LenNet)、96*96等。

![](https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/Image/Question/1525249316_603.png)

Expand Down Expand Up @@ -293,9 +293,9 @@ SPP Net真是个好方法,R-CNN的进阶版Fast R-CNN就是在R-CNN的基础

R-CNN有一些相当大的缺点(把这些缺点都改掉了,就成了Fast R-CNN)。

**大缺点:**由于每一个候选框都要独自经过CNN,这使得花费的时间非常多。
**大缺点:** 由于每一个候选框都要独自经过CNN,这使得花费的时间非常多。

**解决:**共享卷积层,现在不是每一个候选框都当做输入进入CNN了,而是输入一张完整的图片,在第五个卷积层再得到每个候选框的特征。
**解决:** 共享卷积层,现在不是每一个候选框都当做输入进入CNN了,而是输入一张完整的图片,在第五个卷积层再得到每个候选框的特征。

原来的方法:许多候选框(比如两千个)-->CNN-->得到每个候选框的特征-->分类+回归

Expand Down Expand Up @@ -336,9 +336,9 @@ Faster R-CNN的方法目前是主流的目标检测方法,但是速度上并

1. 给个一个输入图像,首先将图像划分成7\*7的网格。
2. 对于每个网格,我们都预测2个边框(包括每个边框是目标的置信度以及每个边框区域在多个类别上的概率)。
3. 根据上一步可以预测出7*7*2个目标窗口,然后根据阈值去除可能性比较低的目标窗口,最后NMS去除冗余窗口即可。
3. 根据上一步可以预测出7\*7\*2个目标窗口,然后根据阈值去除可能性比较低的目标窗口,最后NMS去除冗余窗口即可。

**小结:**YOLO将目标检测任务转换成一个回归问题,大大加快了检测的速度,使得YOLO可以每秒处理45张图像。而且由于每个网络预测目标窗口时使用的是全图信息,使得false positive比例大幅降低(充分的上下文信息)。
**小结:** YOLO将目标检测任务转换成一个回归问题,大大加快了检测的速度,使得YOLO可以每秒处理45张图像。而且由于每个网络预测目标窗口时使用的是全图信息,使得false positive比例大幅降低(充分的上下文信息)。

但是YOLO也存在问题:没有了Region Proposal机制,只使用7*7的网格回归会使得目标不能非常精准的定位,这也导致了YOLO的检测精度并不是很高。

Expand Down
10 changes: 5 additions & 5 deletions Deep Learning/12. RNN/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,17 +92,17 @@

## 2. 其它类型的RNN

- **One to one:**这个可能没有那么重要,这就是一个小型的标准的神经网络,输入𝑥然后得到输出𝑦。
- **One to one:** 这个可能没有那么重要,这就是一个小型的标准的神经网络,输入𝑥然后得到输出𝑦。

- **One to many:**音乐生成,你的目标是使用一个神经网络输出一些音符。对应于一段音乐,输入𝑥
- **One to many:** 音乐生成,你的目标是使用一个神经网络输出一些音符。对应于一段音乐,输入𝑥

可以是一个整数,表示你想要的音乐类型或者是你想要的音乐的第一个音符,并且如果你什么都不想输入,𝑥可以是空的输入,可设为 0 向量。

- **Many to one:**句子分类问题,输入文档,输出文档的类型。
- **Many to one:** 句子分类问题,输入文档,输出文档的类型。

- **Many to many():**命名实体识别。
- **Many to many():** 命名实体识别。

- **Many to many():**机器翻译。
- **Many to many():** 机器翻译。

![image](https://wx1.sinaimg.cn/large/00630Defly1g2xq26dpz1j30go09341y.jpg)

Expand Down
10 changes: 5 additions & 5 deletions Deep Learning/12.1 GRU/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@

## 1. 什么是GRU

在循环神经⽹络中的梯度计算⽅法中,我们发现,当时间步数较⼤或者时间步较小时,**循环神经⽹络的梯度较容易出现衰减或爆炸。虽然裁剪梯度可以应对梯度爆炸,但⽆法解决梯度衰减的问题。**通常由于这个原因,循环神经⽹络在实际中较难捕捉时间序列中时间步距离较⼤的依赖关系。
在循环神经⽹络中的梯度计算⽅法中,我们发现,当时间步数较⼤或者时间步较小时,**循环神经⽹络的梯度较容易出现衰减或爆炸。虽然裁剪梯度可以应对梯度爆炸,但⽆法解决梯度衰减的问题。** 通常由于这个原因,循环神经⽹络在实际中较难捕捉时间序列中时间步距离较⼤的依赖关系。

**门控循环神经⽹络(gated recurrent neural network)的提出,正是为了更好地捕捉时间序列中时间步距离较⼤的依赖关系。**它通过可以学习的⻔来控制信息的流动。其中,门控循环单元(gatedrecurrent unit,GRU)是⼀种常⽤的门控循环神经⽹络。
**门控循环神经⽹络(gated recurrent neural network)的提出,正是为了更好地捕捉时间序列中时间步距离较⼤的依赖关系。** 它通过可以学习的⻔来控制信息的流动。其中,门控循环单元(gatedrecurrent unit,GRU)是⼀种常⽤的门控循环神经⽹络。

## 2. ⻔控循环单元

### 2.1 重置门和更新门

GRU它引⼊了**重置⻔(reset gate)和更新⻔(update gate)**的概念,从而修改了循环神经⽹络中隐藏状态的计算⽅式。
GRU它引⼊了**重置⻔(reset gate)和更新⻔(update gate)** 的概念,从而修改了循环神经⽹络中隐藏状态的计算⽅式。

门控循环单元中的重置⻔和更新⻔的输⼊均为当前时间步输⼊ ![](https://latex.codecogs.com/gif.latex?X_t)与上⼀时间步隐藏状态![](https://latex.codecogs.com/gif.latex?H_{t-1}),输出由激活函数为sigmoid函数的全连接层计算得到。 如下图所示:

Expand All @@ -29,7 +29,7 @@ GRU它引⼊了**重置⻔(reset gate)和更新⻔(update gate)**的概

![](https://latex.codecogs.com/gif.latex?Z_t=\sigma(X_tW_{xz}+H_{t-1}W_{hz}+b_z))

sigmoid函数可以将元素的值变换到0和1之间。因此,重置⻔ ![](https://latex.codecogs.com/gif.latex?R_t)和更新⻔ ![](https://latex.codecogs.com/gif.latex?Z_t)中每个元素的值域都是[0*,* 1]。
sigmoid函数可以将元素的值变换到0和1之间。因此,重置⻔ ![](https://latex.codecogs.com/gif.latex?R_t)和更新⻔ ![](https://latex.codecogs.com/gif.latex?Z_t)中每个元素的值域都是[0,1]。

### 2.2 候选隐藏状态

Expand All @@ -49,7 +49,7 @@ sigmoid函数可以将元素的值变换到0和1之间。因此,重置⻔ ![](

![](https://gitee.com/kkweishe/images/raw/master/ML/2019-8-16_13-58-58.png)

值得注意的是,**更新⻔可以控制隐藏状态应该如何被包含当前时间步信息的候选隐藏状态所更新,**如上图所⽰。假设更新⻔在时间步![](https://gitee.com/kkweishe/images/raw/master/ML/2019-8-16_15-26-24.png)之间⼀直近似1。那么,在时间步![](https://gitee.com/kkweishe/images/raw/master/ML/2019-8-16_15-27-55.png)间的输⼊信息⼏乎没有流⼊时间步 t 的隐藏状态 ![](https://latex.codecogs.com/gif.latex?H_t)实际上,这可以看作是较早时刻的隐藏状态 ![](https://latex.codecogs.com/gif.latex?H_{t^{′}-1})直通过时间保存并传递⾄当前时间步 t。这个设计可以应对循环神经⽹络中的梯度衰减问题,并更好地捕捉时间序列中时间步距离较⼤的依赖关系。
值得注意的是,**更新⻔可以控制隐藏状态应该如何被包含当前时间步信息的候选隐藏状态所更新,** 如上图所⽰。假设更新⻔在时间步![](https://gitee.com/kkweishe/images/raw/master/ML/2019-8-16_15-26-24.png)之间⼀直近似1。那么,在时间步![](https://gitee.com/kkweishe/images/raw/master/ML/2019-8-16_15-27-55.png)间的输⼊信息⼏乎没有流⼊时间步 t 的隐藏状态 ![](https://latex.codecogs.com/gif.latex?H_t)实际上,这可以看作是较早时刻的隐藏状态 ![](https://latex.codecogs.com/gif.latex?H_{t^{′}-1})直通过时间保存并传递⾄当前时间步 t。这个设计可以应对循环神经⽹络中的梯度衰减问题,并更好地捕捉时间序列中时间步距离较⼤的依赖关系。

我们对⻔控循环单元的设计稍作总结:

Expand Down
2 changes: 1 addition & 1 deletion Deep Learning/12.2 LSTM/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。LSTM就是具备了这一特性。

这篇将介绍另⼀种常⽤的⻔控循环神经⽹络:**⻓短期记忆(long short-term memory,LSTM)[1]。**它⽐⻔控循环单元的结构稍微复杂⼀点,也是为了解决在RNN网络中梯度衰减的问题,是GRU的一种扩展。
这篇将介绍另⼀种常⽤的⻔控循环神经⽹络:**⻓短期记忆(long short-term memory,LSTM)[1]。** 它⽐⻔控循环单元的结构稍微复杂⼀点,也是为了解决在RNN网络中梯度衰减的问题,是GRU的一种扩展。

可以先理解GRU的过程,在来理解LSTM会容易许多,链接地址:[三步理解--门控循环单元(GRU)](https://blog.csdn.net/weixin_41510260/article/details/99679481)

Expand Down
2 changes: 1 addition & 1 deletion Deep Learning/14. Reinforcement Learning/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ Rt 可以用 Rt+1 来表示,写成递推式:
**这就是注明的贝尔曼公式。**贝尔曼公式实际非常合理。对于某个状态来讲,最大化未来奖励相当于
最大化即刻奖励与下一状态最大未来奖励之和。

**Q-learning的核心思想是:**我们能够通过贝尔曼公式迭代地近似Q-函数。
**Q-learning的核心思想是:** 我们能够通过贝尔曼公式迭代地近似Q-函数。

### 2.3 Deep Q Learning(DQN)

Expand Down
10 changes: 5 additions & 5 deletions Deep Learning/15. DL Optimizer/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@

因为存在着训练误差和泛化误差:

- **训练误差:**模型在训练数据集上表现出的误差。
- **泛化误差:**模型在任意⼀个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。
- **训练误差:** 模型在训练数据集上表现出的误差。
- **泛化误差:** 模型在任意⼀个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。

训练误差的期望小于或等于泛化误差。也就是说,⼀般情况下,由训练数据集学到的模型参数会使模型在训练数据集上的表现优于或等于在测试数据集上的表现。**由于⽆法从训练误差估计泛化误差,⼀味地降低训练误差并不意味着泛化误差⼀定会降低。**

Expand All @@ -51,8 +51,8 @@

## 3. ⽋拟合和过拟合

- **欠拟合:**模型⽆法得到较低的训练误差。
- **过拟合:**是模型的训练误差远小于它在测试数据集上的误差。
- **欠拟合:** 模型⽆法得到较低的训练误差。
- **过拟合:** 是模型的训练误差远小于它在测试数据集上的误差。

给定训练数据集,

Expand Down Expand Up @@ -295,7 +295,7 @@ Adam算法使⽤了动量变量vt和RMSProp算法中小批量随机梯度按元

## 10. 有哪些改善模型的思路

1. **数据角度 **
1. **数据角度**

增强数据集。无论是有监督还是无监督学习,数据永远是最重要的驱动力。更多的类型数据对良好的模型能带来更好的稳定性和对未知数据的可预见性。对模型来说,“看到过的总比没看到的更具有判别的信心”。

Expand Down
2 changes: 1 addition & 1 deletion Machine Learning/5.2 Markov/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ wikipedia上是这样定义因子图的:将一个具有多变量的全局函

4. 之所以总把HMM和CRF进行比较,主要是因为CRF和HMM都利用了图的知识,但是CRF利用的是马尔科夫随机场(无向图),而HMM的基础是贝叶斯网络(有向图)。而且CRF也有:概率计算问题、学习问题和预测问题。大致计算方法和HMM类似,只不过不需要EM算法进行学习问题。

5. **HMM和CRF对比:**其根本还是在于基本的理念不同,一个是生成模型,一个是判别模型,这也就导致了求解方式的不同。
5. **HMM和CRF对比:** 其根本还是在于基本的理念不同,一个是生成模型,一个是判别模型,这也就导致了求解方式的不同。

## 7. 参考文献

Expand Down
Loading