diff --git a/README.md b/README.md
index c603368..6b7503a 100644
--- a/README.md
+++ b/README.md
@@ -56,7 +56,7 @@ scutjy2015@163.com (唯一官方邮箱);现出现不法分子冒充发起人
进群请加微信 委托人1:HQJ199508212176 委托人2:Xuwumin1203 委托人3:tianyuzy
微信交流群:《深度学习500问》交流群
-
+
2018.10.23 Tan
##############################################################
diff --git a/img/WechatIMG3.jpeg b/WechatIMG3.jpeg
similarity index 100%
rename from img/WechatIMG3.jpeg
rename to WechatIMG3.jpeg
diff --git a/img/ch10/10-1.png b/ch10_强化学习/img/ch10/10-1.png
similarity index 100%
rename from img/ch10/10-1.png
rename to ch10_强化学习/img/ch10/10-1.png
diff --git a/img/ch10/10-2.png b/ch10_强化学习/img/ch10/10-2.png
similarity index 100%
rename from img/ch10/10-2.png
rename to ch10_强化学习/img/ch10/10-2.png
diff --git a/img/ch10/10-3.png b/ch10_强化学习/img/ch10/10-3.png
similarity index 100%
rename from img/ch10/10-3.png
rename to ch10_强化学习/img/ch10/10-3.png
diff --git a/img/ch10/10-4.png b/ch10_强化学习/img/ch10/10-4.png
similarity index 100%
rename from img/ch10/10-4.png
rename to ch10_强化学习/img/ch10/10-4.png
diff --git a/ch10_强化学习/modify_log.txt b/ch10_强化学习/modify_log.txt
new file mode 100644
index 0000000..974e4c6
--- /dev/null
+++ b/ch10_强化学习/modify_log.txt
@@ -0,0 +1,20 @@
+ļ¼־
+<----shw2018-2018-10-25---->
+1. ½markdownļ
+
+<----shw2018-2018-10-28---->
+1. Ĵݺʽ
+2. ͼƬ·
+
+<----shw2018-2018-10-31---->
+1. ھļУ
+img---->ŶӦ½ͼƬ·./img/ch9/ch_*
+readme.md---->½άϢ
+modify_log---->¼־
+ * _xxx.md---->Ӧ½markdownļ
+ * _xxx.pdf---->Ӧ½pdfļĶ
+---->
+2. readme
+3. modify
+4. ½ݣͼƬ·
+
diff --git a/ch10_强化学习/readme.md b/ch10_强化学习/readme.md
new file mode 100644
index 0000000..4ebe256
--- /dev/null
+++ b/ch10_强化学习/readme.md
@@ -0,0 +1,14 @@
+###########################################################
+
+### 深度学习500问-第 * 章 xxx
+
+**负责人(排名不分先后):**
+xxx研究生-xxx(xxx)
+xxx博士生-xxx
+xxx-xxx
+
+
+**贡献者(排名不分先后):**
+内容贡献者可自加信息
+
+###########################################################
\ No newline at end of file
diff --git a/MarkDown/第十章_强化学习.md b/ch10_强化学习/第十章_强化学习.md
similarity index 100%
rename from MarkDown/第十章_强化学习.md
rename to ch10_强化学习/第十章_强化学习.md
diff --git a/ch10_强化学习/第十章_强化学习.pdf b/ch10_强化学习/第十章_强化学习.pdf
new file mode 100644
index 0000000..224da22
Binary files /dev/null and b/ch10_强化学习/第十章_强化学习.pdf differ
diff --git a/img/ch11/readme.md b/ch11_迁移学习/img/ch11/readme.md
similarity index 100%
rename from img/ch11/readme.md
rename to ch11_迁移学习/img/ch11/readme.md
diff --git a/ch11_迁移学习/modify_log.txt b/ch11_迁移学习/modify_log.txt
new file mode 100644
index 0000000..974e4c6
--- /dev/null
+++ b/ch11_迁移学习/modify_log.txt
@@ -0,0 +1,20 @@
+ļ¼־
+<----shw2018-2018-10-25---->
+1. ½markdownļ
+
+<----shw2018-2018-10-28---->
+1. Ĵݺʽ
+2. ͼƬ·
+
+<----shw2018-2018-10-31---->
+1. ھļУ
+img---->ŶӦ½ͼƬ·./img/ch9/ch_*
+readme.md---->½άϢ
+modify_log---->¼־
+ * _xxx.md---->Ӧ½markdownļ
+ * _xxx.pdf---->Ӧ½pdfļĶ
+---->
+2. readme
+3. modify
+4. ½ݣͼƬ·
+
diff --git a/ch11_迁移学习/readme.md b/ch11_迁移学习/readme.md
new file mode 100644
index 0000000..4ebe256
--- /dev/null
+++ b/ch11_迁移学习/readme.md
@@ -0,0 +1,14 @@
+###########################################################
+
+### 深度学习500问-第 * 章 xxx
+
+**负责人(排名不分先后):**
+xxx研究生-xxx(xxx)
+xxx博士生-xxx
+xxx-xxx
+
+
+**贡献者(排名不分先后):**
+内容贡献者可自加信息
+
+###########################################################
\ No newline at end of file
diff --git a/MarkDown/第十一章_迁移学习.md b/ch11_迁移学习/第十一章_迁移学习.md
similarity index 100%
rename from MarkDown/第十一章_迁移学习.md
rename to ch11_迁移学习/第十一章_迁移学习.md
diff --git a/ch11_迁移学习/第十一章_迁移学习.pdf b/ch11_迁移学习/第十一章_迁移学习.pdf
new file mode 100644
index 0000000..6ab962c
Binary files /dev/null and b/ch11_迁移学习/第十一章_迁移学习.pdf differ
diff --git a/img/ch12/readme.md b/ch12_网络搭建及训练/img/ch12/readme.md
similarity index 100%
rename from img/ch12/readme.md
rename to ch12_网络搭建及训练/img/ch12/readme.md
diff --git a/ch12_网络搭建及训练/modify_log.txt b/ch12_网络搭建及训练/modify_log.txt
new file mode 100644
index 0000000..974e4c6
--- /dev/null
+++ b/ch12_网络搭建及训练/modify_log.txt
@@ -0,0 +1,20 @@
+ļ¼־
+<----shw2018-2018-10-25---->
+1. ½markdownļ
+
+<----shw2018-2018-10-28---->
+1. Ĵݺʽ
+2. ͼƬ·
+
+<----shw2018-2018-10-31---->
+1. ھļУ
+img---->ŶӦ½ͼƬ·./img/ch9/ch_*
+readme.md---->½άϢ
+modify_log---->¼־
+ * _xxx.md---->Ӧ½markdownļ
+ * _xxx.pdf---->Ӧ½pdfļĶ
+---->
+2. readme
+3. modify
+4. ½ݣͼƬ·
+
diff --git a/ch12_网络搭建及训练/readme.md b/ch12_网络搭建及训练/readme.md
new file mode 100644
index 0000000..4ebe256
--- /dev/null
+++ b/ch12_网络搭建及训练/readme.md
@@ -0,0 +1,14 @@
+###########################################################
+
+### 深度学习500问-第 * 章 xxx
+
+**负责人(排名不分先后):**
+xxx研究生-xxx(xxx)
+xxx博士生-xxx
+xxx-xxx
+
+
+**贡献者(排名不分先后):**
+内容贡献者可自加信息
+
+###########################################################
\ No newline at end of file
diff --git a/MarkDown/第十二章_网络搭建及训练.md b/ch12_网络搭建及训练/第十二章_网络搭建及训练.md
similarity index 100%
rename from MarkDown/第十二章_网络搭建及训练.md
rename to ch12_网络搭建及训练/第十二章_网络搭建及训练.md
diff --git a/img/ch13/figure_13_15_1.png b/ch13_优化算法/img/ch13/figure_13_15_1.png
similarity index 100%
rename from img/ch13/figure_13_15_1.png
rename to ch13_优化算法/img/ch13/figure_13_15_1.png
diff --git a/img/ch13/figure_13_15_2.png b/ch13_优化算法/img/ch13/figure_13_15_2.png
similarity index 100%
rename from img/ch13/figure_13_15_2.png
rename to ch13_优化算法/img/ch13/figure_13_15_2.png
diff --git a/img/ch13/figure_13_18_1.png b/ch13_优化算法/img/ch13/figure_13_18_1.png
similarity index 100%
rename from img/ch13/figure_13_18_1.png
rename to ch13_优化算法/img/ch13/figure_13_18_1.png
diff --git a/img/ch13/figure_13_19_1.png b/ch13_优化算法/img/ch13/figure_13_19_1.png
similarity index 100%
rename from img/ch13/figure_13_19_1.png
rename to ch13_优化算法/img/ch13/figure_13_19_1.png
diff --git a/img/ch13/figure_13_36_1.png b/ch13_优化算法/img/ch13/figure_13_36_1.png
similarity index 100%
rename from img/ch13/figure_13_36_1.png
rename to ch13_优化算法/img/ch13/figure_13_36_1.png
diff --git a/img/ch13/figure_13_43_1.png b/ch13_优化算法/img/ch13/figure_13_43_1.png
similarity index 100%
rename from img/ch13/figure_13_43_1.png
rename to ch13_优化算法/img/ch13/figure_13_43_1.png
diff --git a/img/ch13/figure_13_43_2.png b/ch13_优化算法/img/ch13/figure_13_43_2.png
similarity index 100%
rename from img/ch13/figure_13_43_2.png
rename to ch13_优化算法/img/ch13/figure_13_43_2.png
diff --git a/img/ch13/figure_13_43_3.png b/ch13_优化算法/img/ch13/figure_13_43_3.png
similarity index 100%
rename from img/ch13/figure_13_43_3.png
rename to ch13_优化算法/img/ch13/figure_13_43_3.png
diff --git a/img/ch13/figure_13_43_4.png b/ch13_优化算法/img/ch13/figure_13_43_4.png
similarity index 100%
rename from img/ch13/figure_13_43_4.png
rename to ch13_优化算法/img/ch13/figure_13_43_4.png
diff --git a/img/ch13/figure_13_43_5.png b/ch13_优化算法/img/ch13/figure_13_43_5.png
similarity index 100%
rename from img/ch13/figure_13_43_5.png
rename to ch13_优化算法/img/ch13/figure_13_43_5.png
diff --git a/img/ch13/figure_13_43_6.png b/ch13_优化算法/img/ch13/figure_13_43_6.png
similarity index 100%
rename from img/ch13/figure_13_43_6.png
rename to ch13_优化算法/img/ch13/figure_13_43_6.png
diff --git a/img/ch13/figure_13_43_7.png b/ch13_优化算法/img/ch13/figure_13_43_7.png
similarity index 100%
rename from img/ch13/figure_13_43_7.png
rename to ch13_优化算法/img/ch13/figure_13_43_7.png
diff --git a/img/ch13/figure_13_43_8.png b/ch13_优化算法/img/ch13/figure_13_43_8.png
similarity index 100%
rename from img/ch13/figure_13_43_8.png
rename to ch13_优化算法/img/ch13/figure_13_43_8.png
diff --git a/img/ch13/figure_13_4_1.png b/ch13_优化算法/img/ch13/figure_13_4_1.png
similarity index 100%
rename from img/ch13/figure_13_4_1.png
rename to ch13_优化算法/img/ch13/figure_13_4_1.png
diff --git a/img/ch13/figure_13_7_1.png b/ch13_优化算法/img/ch13/figure_13_7_1.png
similarity index 100%
rename from img/ch13/figure_13_7_1.png
rename to ch13_优化算法/img/ch13/figure_13_7_1.png
diff --git a/ch13_优化算法/modify_log.txt b/ch13_优化算法/modify_log.txt
new file mode 100644
index 0000000..974e4c6
--- /dev/null
+++ b/ch13_优化算法/modify_log.txt
@@ -0,0 +1,20 @@
+ļ¼־
+<----shw2018-2018-10-25---->
+1. ½markdownļ
+
+<----shw2018-2018-10-28---->
+1. Ĵݺʽ
+2. ͼƬ·
+
+<----shw2018-2018-10-31---->
+1. ھļУ
+img---->ŶӦ½ͼƬ·./img/ch9/ch_*
+readme.md---->½άϢ
+modify_log---->¼־
+ * _xxx.md---->Ӧ½markdownļ
+ * _xxx.pdf---->Ӧ½pdfļĶ
+---->
+2. readme
+3. modify
+4. ½ݣͼƬ·
+
diff --git a/ch13_优化算法/readme.md b/ch13_优化算法/readme.md
new file mode 100644
index 0000000..4ebe256
--- /dev/null
+++ b/ch13_优化算法/readme.md
@@ -0,0 +1,14 @@
+###########################################################
+
+### 深度学习500问-第 * 章 xxx
+
+**负责人(排名不分先后):**
+xxx研究生-xxx(xxx)
+xxx博士生-xxx
+xxx-xxx
+
+
+**贡献者(排名不分先后):**
+内容贡献者可自加信息
+
+###########################################################
\ No newline at end of file
diff --git a/MarkDown/第十三章_优化算法.md b/ch13_优化算法/第十三章_优化算法.md
similarity index 100%
rename from MarkDown/第十三章_优化算法.md
rename to ch13_优化算法/第十三章_优化算法.md
diff --git a/ch13_优化算法/第十三章_优化算法.pdf b/ch13_优化算法/第十三章_优化算法.pdf
new file mode 100644
index 0000000..c12ca2e
Binary files /dev/null and b/ch13_优化算法/第十三章_优化算法.pdf differ
diff --git a/img/ch14/readme.md b/ch14_超参数调整/img/ch14/readme.md
similarity index 100%
rename from img/ch14/readme.md
rename to ch14_超参数调整/img/ch14/readme.md
diff --git a/ch14_超参数调整/modify_log.txt b/ch14_超参数调整/modify_log.txt
new file mode 100644
index 0000000..974e4c6
--- /dev/null
+++ b/ch14_超参数调整/modify_log.txt
@@ -0,0 +1,20 @@
+ļ¼־
+<----shw2018-2018-10-25---->
+1. ½markdownļ
+
+<----shw2018-2018-10-28---->
+1. Ĵݺʽ
+2. ͼƬ·
+
+<----shw2018-2018-10-31---->
+1. ھļУ
+img---->ŶӦ½ͼƬ·./img/ch9/ch_*
+readme.md---->½άϢ
+modify_log---->¼־
+ * _xxx.md---->Ӧ½markdownļ
+ * _xxx.pdf---->Ӧ½pdfļĶ
+---->
+2. readme
+3. modify
+4. ½ݣͼƬ·
+
diff --git a/ch14_超参数调整/readme.md b/ch14_超参数调整/readme.md
new file mode 100644
index 0000000..4ebe256
--- /dev/null
+++ b/ch14_超参数调整/readme.md
@@ -0,0 +1,14 @@
+###########################################################
+
+### 深度学习500问-第 * 章 xxx
+
+**负责人(排名不分先后):**
+xxx研究生-xxx(xxx)
+xxx博士生-xxx
+xxx-xxx
+
+
+**贡献者(排名不分先后):**
+内容贡献者可自加信息
+
+###########################################################
\ No newline at end of file
diff --git a/MarkDown/第十四章_超参数调整.md b/ch14_超参数调整/第十四章_超参数调整.md
similarity index 99%
rename from MarkDown/第十四章_超参数调整.md
rename to ch14_超参数调整/第十四章_超参数调整.md
index 82b52bb..341b280 100644
--- a/MarkDown/第十四章_超参数调整.md
+++ b/ch14_超参数调整/第十四章_超参数调整.md
@@ -1,33 +1,33 @@
-# 第十四章 超参数调整
-
-> Markdown Revision 1;
-> Date: 2018/10/25
-> Editor: 乔成磊-同济大学
-> Contact: qchl0318@163.com
-> Updater: [sjsdfg](https://github.com/sjsdfg)
-
-## 14.1 调试处理
- 关于训练深度最难的事情之一是你要处理的参数的数量,从学习速率到 Momentum(动量梯度下降法)的参数。如果使用 Momentum 或 Adam 优化算法的参数,也许你还得选择层数,也许你还得选择不同层中隐藏单元的数量,也许你还想使用学习率衰减。所以,你使用的不是单一的学习率。接着,当然你可能还需要选择 mini-batch 的大小。
-
- 结果证实一些超参数比其它的更为重要,我认为,最为广泛的学习应用是,学习速率是需要调试的最重要的超参数。
-
- 除了,还有一些参数需要调试,例如 Momentum 参数,0.9 就是个很好的默认值。我还会调试 mini-batch 的大小,以确保最优算法运行有效。我还会经常调试隐藏单元,我用橙色圈住的这些,这三个是我觉得其次比较重要的,相对于而言。重要性排第三位的是其他因素,层数有时会产生很大的影响,学习率衰减也是如此。当应用 Adam 算法时,事实上,我从不调试,和,我总是选定其分别为 0.9,0.999 和,如果你想的话也可以调试它们。
-
- 但希望你粗略了解到哪些超参数较为重要,无疑是最重要的,接下来是我用橙色圈住的那些,然后是我用紫色圈住的那些,但这不是严格且快速的标准,我认为,其它深度学习的研究者可能会很不同意我的观点或有着不同的直觉。
-
-## 14.2 有哪些超参数
- 学习率(learning rate)、batch_size、optimizer、 激活函数、正则化
-
-## 14.3 如何选择调试值?
-## 14.4 为超参数选择合适的范围
-## 14.5 如何搜索超参数?
-
- 最后,关于如何搜索超参数的问题,我见过大概两种重要的思想流派或人们通常采用的两种重要但不同的方式。
-
- 一种是你照看一个模型,通常是有庞大的数据组,但没有许多计算资源或足够的 CPU 和 GPU 的前提下,基本而言,你只可以一次负担起试验一个模型或一小批模型,在这种情况下,即使当它在试验时,你也可以逐渐改良。比如,第 0 天,你将随机参数初始化,然后开始试验,然后你逐渐观察自己的学习曲线,也许是损失函数 J,或者数据设置误差或其它的东西,在第 1 天内逐渐减少,那这一天末的时候,你可能会说,看,它学习得真不错。我试着增加一点学习速率,看看它会怎样,也许结果证明它做得更好,那是你第二天的表现。两天后,你会说,它依旧做得不错,也许我现在可以填充下 Momentum 或减少变量。然后进入第三天,每天,你都会观察它,不断调整你的参数。也许有一天,你会发现你的学习率太大了,所以你可能又回归之前的模型,像这样,但你可以说是在每天花时间照看此模型,即使是它在许多天或许多星期的试验过程中。所以这是一个人们照料一个模型的方法,观察它的表现,耐心地调试学习率,但那通常是因为你没有足够的计算能力,不能在同一时间试验大量模型时才采取的办法。
-
- 另一种方法则是同时试验多种模型,你设置了一些超参数,尽管让它自己运行,或者是一天甚至多天,然后你会获得像这样的学习曲线,这可以是损失函数 J 或实验误差或损失或数据误差的损失,但都是你曲线轨迹的度量。同时你可以开始一个有着不同超参数设定的不同模型,所以,你的第二个模型会生成一个不同的学习曲线,也许是像这样的一条(紫色曲线),我会说这条看起来更好些。与此同时,你可以试验第三种模型,其可能产生一条像这样的学习曲线(红色曲线),还有另一条(绿色曲线),也许这条有所偏离,像这样,等等。或者你可以同时平行试验许多不同的模型,橙色的线就是不同的模型。用这种方式你可以试验许多不同的参数设定,然后只是最后快速选择工作效果最好的那个。在这个例子中,也许这条看起来是最好的(下方绿色曲线)。
-
- 所以这两种方式的选择,是由你拥有的计算资源决定的,如果你拥有足够的计算机去平行试验许多模型,那绝对采用鱼子酱方式,尝试许多不同的超参数,看效果怎么样。但在一些应用领域,比如在线广告设置和计算机视觉应用领域,那里的数据太多了,你需要试验大量的模型,所以同时试验大量的模型是很困难的,它的确是依赖于应用的过程。但我看到那些应用熊猫方式多一些的组织,那里,你会像对婴儿一样照看一个模型,调试参数,试着让它工作运转。尽管,当然,甚至是在熊猫方式中,试验一个模型,观察它工作与否,也许第二或第三个星期后,也许我应该建立一个不同的模型(绿色曲线),像熊猫那样照料它,我猜,这样一生中可以培育几个孩子,即使它们一次只有一个孩子或孩子的数量很少。
-
-
+# 第十四章 超参数调整
+
+> Markdown Revision 1;
+> Date: 2018/10/25
+> Editor: 乔成磊-同济大学
+> Contact: qchl0318@163.com
+> Updater: [sjsdfg](https://github.com/sjsdfg)
+
+## 14.1 调试处理
+ 关于训练深度最难的事情之一是你要处理的参数的数量,从学习速率到 Momentum(动量梯度下降法)的参数。如果使用 Momentum 或 Adam 优化算法的参数,也许你还得选择层数,也许你还得选择不同层中隐藏单元的数量,也许你还想使用学习率衰减。所以,你使用的不是单一的学习率。接着,当然你可能还需要选择 mini-batch 的大小。
+
+ 结果证实一些超参数比其它的更为重要,我认为,最为广泛的学习应用是,学习速率是需要调试的最重要的超参数。
+
+ 除了,还有一些参数需要调试,例如 Momentum 参数,0.9 就是个很好的默认值。我还会调试 mini-batch 的大小,以确保最优算法运行有效。我还会经常调试隐藏单元,我用橙色圈住的这些,这三个是我觉得其次比较重要的,相对于而言。重要性排第三位的是其他因素,层数有时会产生很大的影响,学习率衰减也是如此。当应用 Adam 算法时,事实上,我从不调试,和,我总是选定其分别为 0.9,0.999 和,如果你想的话也可以调试它们。
+
+ 但希望你粗略了解到哪些超参数较为重要,无疑是最重要的,接下来是我用橙色圈住的那些,然后是我用紫色圈住的那些,但这不是严格且快速的标准,我认为,其它深度学习的研究者可能会很不同意我的观点或有着不同的直觉。
+
+## 14.2 有哪些超参数
+ 学习率(learning rate)、batch_size、optimizer、 激活函数、正则化
+
+## 14.3 如何选择调试值?
+## 14.4 为超参数选择合适的范围
+## 14.5 如何搜索超参数?
+
+ 最后,关于如何搜索超参数的问题,我见过大概两种重要的思想流派或人们通常采用的两种重要但不同的方式。
+
+ 一种是你照看一个模型,通常是有庞大的数据组,但没有许多计算资源或足够的 CPU 和 GPU 的前提下,基本而言,你只可以一次负担起试验一个模型或一小批模型,在这种情况下,即使当它在试验时,你也可以逐渐改良。比如,第 0 天,你将随机参数初始化,然后开始试验,然后你逐渐观察自己的学习曲线,也许是损失函数 J,或者数据设置误差或其它的东西,在第 1 天内逐渐减少,那这一天末的时候,你可能会说,看,它学习得真不错。我试着增加一点学习速率,看看它会怎样,也许结果证明它做得更好,那是你第二天的表现。两天后,你会说,它依旧做得不错,也许我现在可以填充下 Momentum 或减少变量。然后进入第三天,每天,你都会观察它,不断调整你的参数。也许有一天,你会发现你的学习率太大了,所以你可能又回归之前的模型,像这样,但你可以说是在每天花时间照看此模型,即使是它在许多天或许多星期的试验过程中。所以这是一个人们照料一个模型的方法,观察它的表现,耐心地调试学习率,但那通常是因为你没有足够的计算能力,不能在同一时间试验大量模型时才采取的办法。
+
+ 另一种方法则是同时试验多种模型,你设置了一些超参数,尽管让它自己运行,或者是一天甚至多天,然后你会获得像这样的学习曲线,这可以是损失函数 J 或实验误差或损失或数据误差的损失,但都是你曲线轨迹的度量。同时你可以开始一个有着不同超参数设定的不同模型,所以,你的第二个模型会生成一个不同的学习曲线,也许是像这样的一条(紫色曲线),我会说这条看起来更好些。与此同时,你可以试验第三种模型,其可能产生一条像这样的学习曲线(红色曲线),还有另一条(绿色曲线),也许这条有所偏离,像这样,等等。或者你可以同时平行试验许多不同的模型,橙色的线就是不同的模型。用这种方式你可以试验许多不同的参数设定,然后只是最后快速选择工作效果最好的那个。在这个例子中,也许这条看起来是最好的(下方绿色曲线)。
+
+ 所以这两种方式的选择,是由你拥有的计算资源决定的,如果你拥有足够的计算机去平行试验许多模型,那绝对采用鱼子酱方式,尝试许多不同的超参数,看效果怎么样。但在一些应用领域,比如在线广告设置和计算机视觉应用领域,那里的数据太多了,你需要试验大量的模型,所以同时试验大量的模型是很困难的,它的确是依赖于应用的过程。但我看到那些应用熊猫方式多一些的组织,那里,你会像对婴儿一样照看一个模型,调试参数,试着让它工作运转。尽管,当然,甚至是在熊猫方式中,试验一个模型,观察它工作与否,也许第二或第三个星期后,也许我应该建立一个不同的模型(绿色曲线),像熊猫那样照料它,我猜,这样一生中可以培育几个孩子,即使它们一次只有一个孩子或孩子的数量很少。
+
+
diff --git a/ch14_超参数调整/第十四章_超参数调整.pdf b/ch14_超参数调整/第十四章_超参数调整.pdf
new file mode 100644
index 0000000..2a03fe4
Binary files /dev/null and b/ch14_超参数调整/第十四章_超参数调整.pdf differ
diff --git a/img/ch15/ch15_1.png b/ch15_GPU和框架选型/img/ch15/ch15_1.png
similarity index 100%
rename from img/ch15/ch15_1.png
rename to ch15_GPU和框架选型/img/ch15/ch15_1.png
diff --git a/img/ch15/ch15_2.png b/ch15_GPU和框架选型/img/ch15/ch15_2.png
similarity index 100%
rename from img/ch15/ch15_2.png
rename to ch15_GPU和框架选型/img/ch15/ch15_2.png
diff --git a/ch15_GPU和框架选型/modify_log.txt b/ch15_GPU和框架选型/modify_log.txt
new file mode 100644
index 0000000..974e4c6
--- /dev/null
+++ b/ch15_GPU和框架选型/modify_log.txt
@@ -0,0 +1,20 @@
+ļ¼־
+<----shw2018-2018-10-25---->
+1. ½markdownļ
+
+<----shw2018-2018-10-28---->
+1. Ĵݺʽ
+2. ͼƬ·
+
+<----shw2018-2018-10-31---->
+1. ھļУ
+img---->ŶӦ½ͼƬ·./img/ch9/ch_*
+readme.md---->½άϢ
+modify_log---->¼־
+ * _xxx.md---->Ӧ½markdownļ
+ * _xxx.pdf---->Ӧ½pdfļĶ
+---->
+2. readme
+3. modify
+4. ½ݣͼƬ·
+
diff --git a/ch15_GPU和框架选型/readme.md b/ch15_GPU和框架选型/readme.md
new file mode 100644
index 0000000..4ebe256
--- /dev/null
+++ b/ch15_GPU和框架选型/readme.md
@@ -0,0 +1,14 @@
+###########################################################
+
+### 深度学习500问-第 * 章 xxx
+
+**负责人(排名不分先后):**
+xxx研究生-xxx(xxx)
+xxx博士生-xxx
+xxx-xxx
+
+
+**贡献者(排名不分先后):**
+内容贡献者可自加信息
+
+###########################################################
\ No newline at end of file
diff --git a/MarkDown/第十五章_GPU和框架选型.md b/ch15_GPU和框架选型/第十五章_GPU和框架选型.md
similarity index 100%
rename from MarkDown/第十五章_GPU和框架选型.md
rename to ch15_GPU和框架选型/第十五章_GPU和框架选型.md
diff --git a/img/ch16/readme.md b/ch16_NLP/img/ch16/readme.md
similarity index 100%
rename from img/ch16/readme.md
rename to ch16_NLP/img/ch16/readme.md
diff --git a/ch16_NLP/modify_log.txt b/ch16_NLP/modify_log.txt
new file mode 100644
index 0000000..974e4c6
--- /dev/null
+++ b/ch16_NLP/modify_log.txt
@@ -0,0 +1,20 @@
+ļ¼־
+<----shw2018-2018-10-25---->
+1. ½markdownļ
+
+<----shw2018-2018-10-28---->
+1. Ĵݺʽ
+2. ͼƬ·
+
+<----shw2018-2018-10-31---->
+1. ھļУ
+img---->ŶӦ½ͼƬ·./img/ch9/ch_*
+readme.md---->½άϢ
+modify_log---->¼־
+ * _xxx.md---->Ӧ½markdownļ
+ * _xxx.pdf---->Ӧ½pdfļĶ
+---->
+2. readme
+3. modify
+4. ½ݣͼƬ·
+
diff --git a/ch16_NLP/readme.md b/ch16_NLP/readme.md
new file mode 100644
index 0000000..4ebe256
--- /dev/null
+++ b/ch16_NLP/readme.md
@@ -0,0 +1,14 @@
+###########################################################
+
+### 深度学习500问-第 * 章 xxx
+
+**负责人(排名不分先后):**
+xxx研究生-xxx(xxx)
+xxx博士生-xxx
+xxx-xxx
+
+
+**贡献者(排名不分先后):**
+内容贡献者可自加信息
+
+###########################################################
\ No newline at end of file
diff --git a/MarkDown/第十六章_NLP.md b/ch16_NLP/第十六章_NLP.md
similarity index 100%
rename from MarkDown/第十六章_NLP.md
rename to ch16_NLP/第十六章_NLP.md
diff --git a/ch16_NLP/第十六章_NLP.pdf b/ch16_NLP/第十六章_NLP.pdf
new file mode 100644
index 0000000..062e56a
Binary files /dev/null and b/ch16_NLP/第十六章_NLP.pdf differ
diff --git a/img/ch1/conditional_probability.jpg b/ch1_数学基础/img/ch1/conditional_probability.jpg
similarity index 100%
rename from img/ch1/conditional_probability.jpg
rename to ch1_数学基础/img/ch1/conditional_probability.jpg
diff --git a/img/ch1/prob_distribution_1.png b/ch1_数学基础/img/ch1/prob_distribution_1.png
similarity index 100%
rename from img/ch1/prob_distribution_1.png
rename to ch1_数学基础/img/ch1/prob_distribution_1.png
diff --git a/img/ch1/prob_distribution_2.png b/ch1_数学基础/img/ch1/prob_distribution_2.png
similarity index 100%
rename from img/ch1/prob_distribution_2.png
rename to ch1_数学基础/img/ch1/prob_distribution_2.png
diff --git a/img/ch1/prob_distribution_3.png b/ch1_数学基础/img/ch1/prob_distribution_3.png
similarity index 100%
rename from img/ch1/prob_distribution_3.png
rename to ch1_数学基础/img/ch1/prob_distribution_3.png
diff --git a/img/ch1/prob_distribution_4.png b/ch1_数学基础/img/ch1/prob_distribution_4.png
similarity index 100%
rename from img/ch1/prob_distribution_4.png
rename to ch1_数学基础/img/ch1/prob_distribution_4.png
diff --git a/img/ch1/prob_distribution_5.png b/ch1_数学基础/img/ch1/prob_distribution_5.png
similarity index 100%
rename from img/ch1/prob_distribution_5.png
rename to ch1_数学基础/img/ch1/prob_distribution_5.png
diff --git a/img/ch1/prob_distribution_6.png b/ch1_数学基础/img/ch1/prob_distribution_6.png
similarity index 100%
rename from img/ch1/prob_distribution_6.png
rename to ch1_数学基础/img/ch1/prob_distribution_6.png
diff --git a/img/ch1/prob_distribution_7.png b/ch1_数学基础/img/ch1/prob_distribution_7.png
similarity index 100%
rename from img/ch1/prob_distribution_7.png
rename to ch1_数学基础/img/ch1/prob_distribution_7.png
diff --git a/ch1_数学基础/modify_log.txt b/ch1_数学基础/modify_log.txt
new file mode 100644
index 0000000..974e4c6
--- /dev/null
+++ b/ch1_数学基础/modify_log.txt
@@ -0,0 +1,20 @@
+ļ¼־
+<----shw2018-2018-10-25---->
+1. ½markdownļ
+
+<----shw2018-2018-10-28---->
+1. Ĵݺʽ
+2. ͼƬ·
+
+<----shw2018-2018-10-31---->
+1. ھļУ
+img---->ŶӦ½ͼƬ·./img/ch9/ch_*
+readme.md---->½άϢ
+modify_log---->¼־
+ * _xxx.md---->Ӧ½markdownļ
+ * _xxx.pdf---->Ӧ½pdfļĶ
+---->
+2. readme
+3. modify
+4. ½ݣͼƬ·
+
diff --git a/ch1_数学基础/readme.md b/ch1_数学基础/readme.md
new file mode 100644
index 0000000..4ebe256
--- /dev/null
+++ b/ch1_数学基础/readme.md
@@ -0,0 +1,14 @@
+###########################################################
+
+### 深度学习500问-第 * 章 xxx
+
+**负责人(排名不分先后):**
+xxx研究生-xxx(xxx)
+xxx博士生-xxx
+xxx-xxx
+
+
+**贡献者(排名不分先后):**
+内容贡献者可自加信息
+
+###########################################################
\ No newline at end of file
diff --git a/MarkDown/第一章_数学基础.md b/ch1_数学基础/第一章_数学基础.md
similarity index 98%
rename from MarkDown/第一章_数学基础.md
rename to ch1_数学基础/第一章_数学基础.md
index 903c340..4d85c78 100644
--- a/MarkDown/第一章_数学基础.md
+++ b/ch1_数学基础/第一章_数学基础.md
@@ -1,244 +1,244 @@
-# 第一章 数学基础
-
-> Markdown Revision 1; --update 2018/10/30 13:00
-> Date: 2018/10/25
-> Editor: 乔成磊-同济大学
-> Contact: qchl0318@163.com
-
-## 1.1 标量、向量、矩阵、张量之间的联系
-**标量(scalar)**
-一个标量表示一个单独的数,它不同于线性代数中研究的其他大部分对象(通常是多个数的数组)。我们用斜体表示标量。标量通常被赋予小写的变量名称。
-
-**向量(vector)**
-矩阵是具有相同特征和纬度的对象的集合,表现为一张二维数据表。其意义是一个对象表示为矩阵中的一行,一个特征表示为矩阵中的一列,每个特征都有数值型的取值。通常会赋予矩阵粗体的大写变量名称,比如**A**。
-
-**矩阵(matrix)**
-一个向量表示组有序排列的数。通过次序中的索引,我们可以确定每个单独的数。通常我们赋予向量粗体的小写变量名称,比如xx。向量中的元素可以通过带脚标的斜体表示。向量x的第一个元素是x1,第二个元素是x2,以此类推。我们也会注明存储在向量中的元素的类型(实数、虚数等)。
-
-**张量(tensor)**
-在某些情况下,我们会讨论坐标超过两维的数组。一般地,一个数组中的元素分布在若干维坐标的规则网格中,我们将其称之为张量。使用**$A$**来表示张量“A”。张量**$A$**中坐标为$(i,j,k)$的元素记作$A_{(i,j,k)}$。
-
-**关系**
-标量是0阶张量,向量是一阶张量。举例:
-标量就是知道棍子的长度,但是你不会知道棍子指向哪儿。
-向量就是不但知道棍子的长度,还知道棍子指向前面还是后面。
-张量就是不但知道棍子的长度,也知道棍子指向前面还是后面,还能知道这棍子又向上/下和左/右偏转了多少。
-
-## 1.2 张量与矩阵的区别?
-1. 从代数角度讲, 矩阵它是向量的推广。向量可以看成一维的“表格”(即分量按照顺序排成一排), 矩阵是二维的“表格”(分量按照纵横位置排列), 那么$n$阶张量就是所谓的$n$维的“表格”。 张量的严格定义是利用线性映射来描述的。
-2. 从几何角度讲, 矩阵是一个真正的几何量,也就是说,它是一个不随参照系的坐标变换而变化的东西。向量也具有这种特性。
-3. 张量可以用3×3矩阵形式来表达。
-4. 表示标量的数和表示矢量的三维数组也可分别看作1×1,1×3的矩阵。
-
-## 1.3 矩阵和向量相乘结果
-一个$m$行$n$列的矩阵和$n$行向量相乘,最后得到就是一个$m$行的向量。运算法则就是矩阵中的每一行数据看成一个行向量与该向量作点乘。
-
-## 1.4 向量和矩阵的范数归纳
-**向量的范数**
-定义一个向量为:$\vec{a}=[-5, 6, 8, -10]$。
-向量的1范数:向量的各个元素的绝对值之和,上述向量$\vec{a}$的1范数结果就是:29。
-向量的2范数:向量的每个元素的平方和再开平方根,上述$\vec{a}$的2范数结果就是:15。
-向量的负无穷范数:向量的所有元素的绝对值中最小的:上述向量$\vec{a}$的负无穷范数结果就是:5。
-向量的正无穷范数:向量的所有元素的绝对值中最大的:上述向量$\vec{a}$的负无穷范数结果就是:10。
-向量的L-P范数:$L_p=|\vec{x}|_p=\sqrt[p]{\sum_{i=1}^{n}x_i^p},\vec{x}=( x_1,x_2,...,x_n )$
-
-**矩阵的范数**
-定义一个矩阵$A=[-1, 2, -3; 4, -6, 6]$。
-矩阵的范数定义为
-$$
-\|A\|_p :=\sup_{x\neq 0}\frac{\|Ax\|_p}{\|x\|_p}.
-$$
-
-当向量取不同范数时, 相应得到了不同的矩阵范数。
-
-**矩阵的1范数**:矩阵的每一列上的元素绝对值先求和,再从中取个最大的,(列和最大),上述矩阵$A$的1范数先得到$[5,8,9]$,再取最大的最终结果就是:9。
-**矩阵的2范数**:矩阵$A^TA$的最大特征值开平方根,上述矩阵$A$的2范数得到的最终结果是:10.0623。
-**矩阵的无穷范数**:矩阵的每一行上的元素绝对值先求和,再从中取个最大的,(行和最大),上述矩阵$A$的1范数先得到$[6;16]$,再取最大的最终结果就是:16。
-**矩阵的核范数**:矩阵的奇异值(将矩阵svd分解)之和,这个范数可以用来低秩表示(因为最小化核范数,相当于最小化矩阵的秩——低秩),上述矩阵A最终结果就是:10.9287。
-**矩阵的L0范数**:矩阵的非0元素的个数,通常用它来表示稀疏,L0范数越小0元素越多,也就越稀疏,上述矩阵$A$最终结果就是:6。
-**矩阵的L1范数**:矩阵中的每个元素绝对值之和,它是L0范数的最优凸近似,因此它也可以表示稀疏,上述矩阵$A$最终结果就是:22。
-**矩阵的F范数**:矩阵的各个元素平方之和再开平方根,它通常也叫做矩阵的L2范数,它的有点在它是一个凸函数,可以求导求解,易于计算,上述矩阵A最终结果就是:10.0995。
-**矩阵的L21范数**:矩阵先以每一列为单位,求每一列的F范数(也可认为是向量的2范数),然后再将得到的结果求L1范数(也可认为是向量的1范数),很容易看出它是介于L1和L2之间的一种范数,上述矩阵$A$最终结果就是:17.1559。
-
-## 1.5 如何判断一个矩阵为正定?
-1. 顺序主子式全大于0;
-2. 存在可逆矩阵$C$使$C^TC$等于该矩阵;
-3. 正惯性指数等于$n$;
-4. 合同于单位矩阵$E$(即:规范形为$E$)
-5. 标准形中主对角元素全为正;
-6. 特征值全为正;
-7. 是某基的度量矩阵。
-
-## 1.6 导数偏导计算
-
-## 1.7 导数和偏导数有什么区别?
-导数和偏导没有本质区别,都是当自变量的变化量趋于0时,函数值的变化量与自变量变化量比值的极限(如果极限存在的话)。
-一元函数,一个$y$对应一个$x$,导数只有一个。
-二元函数,一个$z$对应一个$x$和一个$y$,有两个导数:一个是$z$对$x$的导数,一个是$z$对$y$的导数,称之为偏导。
-求偏导时要注意,对一个变量求导,则视另一个变量为常数,只对改变量求导,从而将偏导的求解转化成了一元函数的求导了。
-(http://blog.sina.com.cn/s/blog_5b014d510100axmt.html)
-
-## 1.8 特征值分解与特征向量
-特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么。
-如果说一个向量$\vec{v}$是方阵$A$的特征向量,将一定可以表示成下面的形式:
-$$
-A\nu = \lambda \nu
-$$
-$\lambda$为特征向量$\vec{v}$对应的特征值。特征值分解是将一个矩阵分解为如下形式:
-$$
-A=Q\sum Q^{-1}
-$$
-其中,$Q$是这个矩阵$A$的特征向量组成的矩阵,$\sum$是一个对角矩阵,每一个对角线元素就是一个特征值,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)。也就是说矩阵$A$的信息可以由其特征值和特征向量表示。
-对于矩阵为高维的情况下,那么这个矩阵就是高维空间下的一个线性变换。可以想象,这个变换也同样有很多的变换方向,我们通过特征值分解得到的前N个特征向量,那么就对应了这个矩阵最主要的N个变化方向。我们利用这前N个变化方向,就可以近似这个矩阵(变换)。
-(http://blog.csdn.net/jinshengtao/article/details/18448355)
-
-## 1.9 奇异值与特征值有什么关系?
-那么奇异值和特征值是怎么对应起来的呢?我们将一个矩阵$A$的转置乘以$A$,并对$AA^T$求特征值,则有下面的形式:
-$$
-(A^TA)V = \lambda V
-$$
-这里$V$就是上面的右奇异向量,另外还有:
-$$
-\sigma_i = \sqrt{\lambda_i}, u_i=\frac{1}{\sigma_i}A\mu_i
-$$
-这里的$\sigma$就是奇异值,$u$就是上面说的左奇异向量。【证明那个哥们也没给】
-奇异值$\sigma$跟特征值类似,在矩阵$\sum$中也是从大到小排列,而且$\sigma$的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前$r$($r$远小于$m、n$)个的奇异值来近似描述矩阵,即部分奇异值分解:
-$$
-A_{m\times n}\thickapprox U_{m \times r}\sum_{r\times r}V_{r \times n}^T
-$$
-右边的三个矩阵相乘的结果将会是一个接近于$A$的矩阵,在这儿,$r$越接近于$n$,则相乘的结果越接近于$A$。
-
-## 1.10 机器学习为什么要使用概率?
-事件的概率是衡量该时间发生的可能性的量度。虽然在一次随机试验中某个事件的发生是带有偶然性的,但那些可在相同条件下大量重复的随机试验却往往呈现出明显的数量规律。
-机器学习除了处理不确定量,也需处理随机量。不确定性和随机性可能来自多个方面,使用概率论来量化不确定性。
-概率论在机器学习中扮演着一个核心角色,因为机器学习算法的设计通常依赖于对数据的概率假设。
-
->例如在机器学习(Andrew Ng)的课中,会有一个朴素贝叶斯假设就是条件独立的一个例子。该学习算法对内容做出假设,用来分辨电子邮件是否为垃圾邮件。假设无论邮件是否为垃圾邮件,单词x出现在邮件中的概率条件独立于单词y。很明显这个假设不是不失一般性的,因为某些单词几乎总是同时出现。然而,最终结果是,这个简单的假设对结果的影响并不大,且无论如何都可以让我们快速判别垃圾邮件。
-
-## 1.11 变量与随机变量有什么区别?
-**随机变量**(random variable)表示随机现象(在一定条件下,并不总是出现相同结果的现象称为随机现象)中各种结果的实值函数(一切可能的样本点)。例如某一时间内公共汽车站等车乘客人数,电话交换台在一定时间内收到的呼叫次数等,都是随机变量的实例。
-随机变量与模糊变量的不确定性的本质差别在于,后者的测定结果仍具有不确定性,即模糊性。
-**变量与随机变量的区别:**
-当变量的取值的概率不是1时,变量就变成了随机变量;当随机变量取值的概率为1时,随机变量就变成了变量.
-比如:
-当变量$x$值为100的概率为1的话,那么$x=100$就是确定了的,不会再有变化,除非有进一步运算.
-当变量$x$的值为100的概率不为1,比如为50的概率是0.5,为100的概率是0.5,那么这个变量就是会随不同条件而变化的,是随机变量,取到50或者100的概率都是0.5,即50%。
-
-## 1.12 常见概率分布?
-(https://wenku.baidu.com/view/6418b0206d85ec3a87c24028915f804d2b168707)
-
-
-
-
-
-
-
-
-## 1.13 举例理解条件概率
-条件概率公式如下:
-$$
-P(A/B) = P(A\cap B) / P(B)
-$$
-说明:在同一个样本空间$\Omega$中的事件或者子集$A$与$B$,如果随机从$\Omega$中选出的一个元素属于$B$,那么下一个随机选择的元素属于$A$ 的概率就定义为在$B$的前提下$A$的条件概率。
-
-
-根据文氏图,可以很清楚地看到在事件B发生的情况下,事件A发生的概率就是$P(A\bigcap B)$除以$P(B)$。
-举例:一对夫妻有两个小孩,已知其中一个是女孩,则另一个是女孩子的概率是多少?(面试、笔试都碰到过)
-**穷举法**:已知其中一个是女孩,那么样本空间为男女,女女,女男,则另外一个仍然是女生的概率就是1/3;
-**条件概率法**:$P(女|女)=P(女女)/P(女)$,夫妻有两个小孩,那么它的样本空间为女女,男女,女男,男男,则$P(女女)$为1/4,$P(女)= 1-P(男男)=3/4$,所以最后$1/3$。
-这里大家可能会误解,男女和女男是同一种情况,但实际上类似姐弟和兄妹是不同情况。
-
-## 1.14 联合概率与边缘概率联系区别?
-**区别:**
-联合概率:联合概率指类似于$P(X=a,Y=b)$这样,包含多个条件,且所有条件同时成立的概率。联合概率是指在多元的概率分布中多个随机变量分别满足各自条件的概率。
-边缘概率:边缘概率是某个事件发生的概率,而与其它事件无关。边缘概率指类似于$P(X=a)$,$P(Y=b)$这样,仅与单个随机变量有关的概率
-**联系:**
-联合分布可求边缘分布,但若只知道边缘分布,无法求得联合分布。
-
-## 1.15条件概率的链式法则
-由条件概率的定义,可直接得出下面的乘法公式:
-乘法公式 设$A, B$是两个事件,并且$P(A) > 0$, 则有
-$$
-P(AB) = P(B|A)P(A)
-$$
-推广
-$$
-P(ABC)=P(C|AB)P(B)P(B|A)P(A)
-$$
-一般地,用归纳法可证:若$P(A_1A_2...A_n)>0$,则有
-$$
-P(A_1A_2...A_n)=P(A_n|A_1A_2...A_{n-1}P(A_{n-1}|A_1A_2...A_{n-2})...P(A_2|A_1)P(A_1)
-$$
-任何多维随机变量联合概率分布,都可以分解成只有一个变量的条件概率相乘形式。
-
-## 1.16 独立性和条件独立性
-**独立性**
-两个随机变量$x$和$y$,概率分布表示成两个因子乘积形式,一个因子只包含$x$,另一个因子只包含$y$,两个随机变量相互独立(independent)。
-条件有时为不独立的事件之间带来独立,有时也会把本来独立的事件,因为此条件的存在,而失去独立性。
-举例:$P(XY)=P(X)P(Y)$, 事件$X$和事件$Y$独立。此时给定$Z$,
-$$
-P(X,Y|Z) \not = P(X|Z)P(Y|Z)
-$$
-事件独立时,联合概率等于概率的乘积。这是一个非常好的数学性质,然而不幸的是,无条件的独立是十分稀少的,因为大部分情况下,事件之间都是互相影响的。
-**条件独立性**
-给定$Z$的情况下,$X$和$Y$条件独立,当且仅当
-$$
-X\bot Y|Z \iff P(X,Y|Z) = P(X|Z)P(Y|Z)
-$$
-$X$和$Y$的关系依赖于$Z$,而不是直接产生。
-**举例**定义如下事件:
-$X$:明天下雨;
-$Y$:今天的地面是湿的;
-$Z$:今天是否下雨;
-$Z$事件的成立,对$X$和$Y$均有影响,然而,在$Z$事件成立的前提下,今天的地面情况对明天是否下雨没有影响。
-
-## 1.17期望、方差、协方差、相关系数总结
-(http://www.360doc.com/content/13/1124/03/9482_331690142.shtml)
-**期望**
-在概率论和统计学中,数学期望(或均值,亦简称期望)是试验中每次可能结果的概率乘以其结果的总和。它反映随机变量平均取值的大小。
-线性运算: $E(ax+by+c) = aE(x)+bE(y)+c$
-推广形式: $E(\sum_{k=1}^{n}{a_ix_i+c}) = \sum_{k=1}^{n}{a_iE(x_i)x_i+c}$
-函数期望:设$f(x)$为$x$的函数,则$f(x)$的期望为
- - 离散函数: $E(f(x))=\sum_{k=1}^{n}{f(x_k)P(x_k)}$
- - 连续函数: $E(f(x))=\int_{-\infty}^{+\infty}{f(x)p(x)dx}$
-
-注意:函数的期望不等于期望的函数,即$E(f(x))=f(E(x))$
-一般情况下,乘积的期望不等于期望的乘积。
-如果$X$和$Y$相互独立,则$E(xy)=E(x)E(y)$。
-**方差**
-概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。
-方差是一种特殊的期望。定义为:
-$$
-Var(x) = E((x-E(x))^2)
-$$
-方差性质:
-1)$Var(x) = E(x^2) -E(x)^2$
-2) 常数的方差为0;
-3)方差不满足线性性质;
-4)如果$X$和$Y$相互独立, $Var(ax+by)=Var(x)+Var(y)$
-**协方差**
-协方差是衡量两个变量线性相关性强度及变量尺度。
-两个随机变量的协方差定义为:
-$$
-Cov(x,y)=E((x-E(x))(y-E(y)))
-$$
-方差是一种特殊的协方差。当$X=Y$时,$Cov(x,y)=Var(x)=Var(y)$。
-协方差性质:
-1) 独立变量的协方差为0。
-2) 协方差计算公式:
-$$
-Cov(\sum_{i=1}^{m}{a_ix_i}, \sum_{j=1}^{m}{b_jy_j}) = \sum_{i=1}^{m} \sum_{j=1}^{m}{a_ib_jCov(x_iy_i)}
-$$
-3) 特殊情况:
-$$
-Cov(a+bx, c+dy) = bdCov(x, y)
-$$
-**相关系数**
-相关系数是研究变量之间线性相关程度的量。
-两个随机变量的相关系数定义为:
-$$
-Corr(x,y) = \frac{Cov(x,y)}{\sqrt{Var(x)Var(y)}}
-$$
-性质:
-1) 有界性。相关系数的取值范围是 ,可以看成无量纲的协方差。
+# 第一章 数学基础
+
+> Markdown Revision 1; --update 2018/10/30 13:00
+> Date: 2018/10/25
+> Editor: 乔成磊-同济大学
+> Contact: qchl0318@163.com
+
+## 1.1 标量、向量、矩阵、张量之间的联系
+**标量(scalar)**
+一个标量表示一个单独的数,它不同于线性代数中研究的其他大部分对象(通常是多个数的数组)。我们用斜体表示标量。标量通常被赋予小写的变量名称。
+
+**向量(vector)**
+矩阵是具有相同特征和纬度的对象的集合,表现为一张二维数据表。其意义是一个对象表示为矩阵中的一行,一个特征表示为矩阵中的一列,每个特征都有数值型的取值。通常会赋予矩阵粗体的大写变量名称,比如**A**。
+
+**矩阵(matrix)**
+一个向量表示组有序排列的数。通过次序中的索引,我们可以确定每个单独的数。通常我们赋予向量粗体的小写变量名称,比如xx。向量中的元素可以通过带脚标的斜体表示。向量x的第一个元素是x1,第二个元素是x2,以此类推。我们也会注明存储在向量中的元素的类型(实数、虚数等)。
+
+**张量(tensor)**
+在某些情况下,我们会讨论坐标超过两维的数组。一般地,一个数组中的元素分布在若干维坐标的规则网格中,我们将其称之为张量。使用**$A$**来表示张量“A”。张量**$A$**中坐标为$(i,j,k)$的元素记作$A_{(i,j,k)}$。
+
+**关系**
+标量是0阶张量,向量是一阶张量。举例:
+标量就是知道棍子的长度,但是你不会知道棍子指向哪儿。
+向量就是不但知道棍子的长度,还知道棍子指向前面还是后面。
+张量就是不但知道棍子的长度,也知道棍子指向前面还是后面,还能知道这棍子又向上/下和左/右偏转了多少。
+
+## 1.2 张量与矩阵的区别?
+1. 从代数角度讲, 矩阵它是向量的推广。向量可以看成一维的“表格”(即分量按照顺序排成一排), 矩阵是二维的“表格”(分量按照纵横位置排列), 那么$n$阶张量就是所谓的$n$维的“表格”。 张量的严格定义是利用线性映射来描述的。
+2. 从几何角度讲, 矩阵是一个真正的几何量,也就是说,它是一个不随参照系的坐标变换而变化的东西。向量也具有这种特性。
+3. 张量可以用3×3矩阵形式来表达。
+4. 表示标量的数和表示矢量的三维数组也可分别看作1×1,1×3的矩阵。
+
+## 1.3 矩阵和向量相乘结果
+一个$m$行$n$列的矩阵和$n$行向量相乘,最后得到就是一个$m$行的向量。运算法则就是矩阵中的每一行数据看成一个行向量与该向量作点乘。
+
+## 1.4 向量和矩阵的范数归纳
+**向量的范数**
+定义一个向量为:$\vec{a}=[-5, 6, 8, -10]$。
+向量的1范数:向量的各个元素的绝对值之和,上述向量$\vec{a}$的1范数结果就是:29。
+向量的2范数:向量的每个元素的平方和再开平方根,上述$\vec{a}$的2范数结果就是:15。
+向量的负无穷范数:向量的所有元素的绝对值中最小的:上述向量$\vec{a}$的负无穷范数结果就是:5。
+向量的正无穷范数:向量的所有元素的绝对值中最大的:上述向量$\vec{a}$的负无穷范数结果就是:10。
+向量的L-P范数:$L_p=|\vec{x}|_p=\sqrt[p]{\sum_{i=1}^{n}x_i^p},\vec{x}=( x_1,x_2,...,x_n )$
+
+**矩阵的范数**
+定义一个矩阵$A=[-1, 2, -3; 4, -6, 6]$。
+矩阵的范数定义为
+$$
+\|A\|_p :=\sup_{x\neq 0}\frac{\|Ax\|_p}{\|x\|_p}.
+$$
+
+当向量取不同范数时, 相应得到了不同的矩阵范数。
+
+**矩阵的1范数**:矩阵的每一列上的元素绝对值先求和,再从中取个最大的,(列和最大),上述矩阵$A$的1范数先得到$[5,8,9]$,再取最大的最终结果就是:9。
+**矩阵的2范数**:矩阵$A^TA$的最大特征值开平方根,上述矩阵$A$的2范数得到的最终结果是:10.0623。
+**矩阵的无穷范数**:矩阵的每一行上的元素绝对值先求和,再从中取个最大的,(行和最大),上述矩阵$A$的1范数先得到$[6;16]$,再取最大的最终结果就是:16。
+**矩阵的核范数**:矩阵的奇异值(将矩阵svd分解)之和,这个范数可以用来低秩表示(因为最小化核范数,相当于最小化矩阵的秩——低秩),上述矩阵A最终结果就是:10.9287。
+**矩阵的L0范数**:矩阵的非0元素的个数,通常用它来表示稀疏,L0范数越小0元素越多,也就越稀疏,上述矩阵$A$最终结果就是:6。
+**矩阵的L1范数**:矩阵中的每个元素绝对值之和,它是L0范数的最优凸近似,因此它也可以表示稀疏,上述矩阵$A$最终结果就是:22。
+**矩阵的F范数**:矩阵的各个元素平方之和再开平方根,它通常也叫做矩阵的L2范数,它的有点在它是一个凸函数,可以求导求解,易于计算,上述矩阵A最终结果就是:10.0995。
+**矩阵的L21范数**:矩阵先以每一列为单位,求每一列的F范数(也可认为是向量的2范数),然后再将得到的结果求L1范数(也可认为是向量的1范数),很容易看出它是介于L1和L2之间的一种范数,上述矩阵$A$最终结果就是:17.1559。
+
+## 1.5 如何判断一个矩阵为正定?
+1. 顺序主子式全大于0;
+2. 存在可逆矩阵$C$使$C^TC$等于该矩阵;
+3. 正惯性指数等于$n$;
+4. 合同于单位矩阵$E$(即:规范形为$E$)
+5. 标准形中主对角元素全为正;
+6. 特征值全为正;
+7. 是某基的度量矩阵。
+
+## 1.6 导数偏导计算
+
+## 1.7 导数和偏导数有什么区别?
+导数和偏导没有本质区别,都是当自变量的变化量趋于0时,函数值的变化量与自变量变化量比值的极限(如果极限存在的话)。
+一元函数,一个$y$对应一个$x$,导数只有一个。
+二元函数,一个$z$对应一个$x$和一个$y$,有两个导数:一个是$z$对$x$的导数,一个是$z$对$y$的导数,称之为偏导。
+求偏导时要注意,对一个变量求导,则视另一个变量为常数,只对改变量求导,从而将偏导的求解转化成了一元函数的求导了。
+(http://blog.sina.com.cn/s/blog_5b014d510100axmt.html)
+
+## 1.8 特征值分解与特征向量
+特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么。
+如果说一个向量$\vec{v}$是方阵$A$的特征向量,将一定可以表示成下面的形式:
+$$
+A\nu = \lambda \nu
+$$
+$\lambda$为特征向量$\vec{v}$对应的特征值。特征值分解是将一个矩阵分解为如下形式:
+$$
+A=Q\sum Q^{-1}
+$$
+其中,$Q$是这个矩阵$A$的特征向量组成的矩阵,$\sum$是一个对角矩阵,每一个对角线元素就是一个特征值,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)。也就是说矩阵$A$的信息可以由其特征值和特征向量表示。
+对于矩阵为高维的情况下,那么这个矩阵就是高维空间下的一个线性变换。可以想象,这个变换也同样有很多的变换方向,我们通过特征值分解得到的前N个特征向量,那么就对应了这个矩阵最主要的N个变化方向。我们利用这前N个变化方向,就可以近似这个矩阵(变换)。
+(http://blog.csdn.net/jinshengtao/article/details/18448355)
+
+## 1.9 奇异值与特征值有什么关系?
+那么奇异值和特征值是怎么对应起来的呢?我们将一个矩阵$A$的转置乘以$A$,并对$AA^T$求特征值,则有下面的形式:
+$$
+(A^TA)V = \lambda V
+$$
+这里$V$就是上面的右奇异向量,另外还有:
+$$
+\sigma_i = \sqrt{\lambda_i}, u_i=\frac{1}{\sigma_i}A\mu_i
+$$
+这里的$\sigma$就是奇异值,$u$就是上面说的左奇异向量。【证明那个哥们也没给】
+奇异值$\sigma$跟特征值类似,在矩阵$\sum$中也是从大到小排列,而且$\sigma$的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前$r$($r$远小于$m、n$)个的奇异值来近似描述矩阵,即部分奇异值分解:
+$$
+A_{m\times n}\thickapprox U_{m \times r}\sum_{r\times r}V_{r \times n}^T
+$$
+右边的三个矩阵相乘的结果将会是一个接近于$A$的矩阵,在这儿,$r$越接近于$n$,则相乘的结果越接近于$A$。
+
+## 1.10 机器学习为什么要使用概率?
+事件的概率是衡量该时间发生的可能性的量度。虽然在一次随机试验中某个事件的发生是带有偶然性的,但那些可在相同条件下大量重复的随机试验却往往呈现出明显的数量规律。
+机器学习除了处理不确定量,也需处理随机量。不确定性和随机性可能来自多个方面,使用概率论来量化不确定性。
+概率论在机器学习中扮演着一个核心角色,因为机器学习算法的设计通常依赖于对数据的概率假设。
+
+>例如在机器学习(Andrew Ng)的课中,会有一个朴素贝叶斯假设就是条件独立的一个例子。该学习算法对内容做出假设,用来分辨电子邮件是否为垃圾邮件。假设无论邮件是否为垃圾邮件,单词x出现在邮件中的概率条件独立于单词y。很明显这个假设不是不失一般性的,因为某些单词几乎总是同时出现。然而,最终结果是,这个简单的假设对结果的影响并不大,且无论如何都可以让我们快速判别垃圾邮件。
+
+## 1.11 变量与随机变量有什么区别?
+**随机变量**(random variable)表示随机现象(在一定条件下,并不总是出现相同结果的现象称为随机现象)中各种结果的实值函数(一切可能的样本点)。例如某一时间内公共汽车站等车乘客人数,电话交换台在一定时间内收到的呼叫次数等,都是随机变量的实例。
+随机变量与模糊变量的不确定性的本质差别在于,后者的测定结果仍具有不确定性,即模糊性。
+**变量与随机变量的区别:**
+当变量的取值的概率不是1时,变量就变成了随机变量;当随机变量取值的概率为1时,随机变量就变成了变量.
+比如:
+当变量$x$值为100的概率为1的话,那么$x=100$就是确定了的,不会再有变化,除非有进一步运算.
+当变量$x$的值为100的概率不为1,比如为50的概率是0.5,为100的概率是0.5,那么这个变量就是会随不同条件而变化的,是随机变量,取到50或者100的概率都是0.5,即50%。
+
+## 1.12 常见概率分布?
+(https://wenku.baidu.com/view/6418b0206d85ec3a87c24028915f804d2b168707)
+
+
+
+
+
+
+
+
+## 1.13 举例理解条件概率
+条件概率公式如下:
+$$
+P(A/B) = P(A\cap B) / P(B)
+$$
+说明:在同一个样本空间$\Omega$中的事件或者子集$A$与$B$,如果随机从$\Omega$中选出的一个元素属于$B$,那么下一个随机选择的元素属于$A$ 的概率就定义为在$B$的前提下$A$的条件概率。
+
+
+根据文氏图,可以很清楚地看到在事件B发生的情况下,事件A发生的概率就是$P(A\bigcap B)$除以$P(B)$。
+举例:一对夫妻有两个小孩,已知其中一个是女孩,则另一个是女孩子的概率是多少?(面试、笔试都碰到过)
+**穷举法**:已知其中一个是女孩,那么样本空间为男女,女女,女男,则另外一个仍然是女生的概率就是1/3;
+**条件概率法**:$P(女|女)=P(女女)/P(女)$,夫妻有两个小孩,那么它的样本空间为女女,男女,女男,男男,则$P(女女)$为1/4,$P(女)= 1-P(男男)=3/4$,所以最后$1/3$。
+这里大家可能会误解,男女和女男是同一种情况,但实际上类似姐弟和兄妹是不同情况。
+
+## 1.14 联合概率与边缘概率联系区别?
+**区别:**
+联合概率:联合概率指类似于$P(X=a,Y=b)$这样,包含多个条件,且所有条件同时成立的概率。联合概率是指在多元的概率分布中多个随机变量分别满足各自条件的概率。
+边缘概率:边缘概率是某个事件发生的概率,而与其它事件无关。边缘概率指类似于$P(X=a)$,$P(Y=b)$这样,仅与单个随机变量有关的概率
+**联系:**
+联合分布可求边缘分布,但若只知道边缘分布,无法求得联合分布。
+
+## 1.15条件概率的链式法则
+由条件概率的定义,可直接得出下面的乘法公式:
+乘法公式 设$A, B$是两个事件,并且$P(A) > 0$, 则有
+$$
+P(AB) = P(B|A)P(A)
+$$
+推广
+$$
+P(ABC)=P(C|AB)P(B)P(B|A)P(A)
+$$
+一般地,用归纳法可证:若$P(A_1A_2...A_n)>0$,则有
+$$
+P(A_1A_2...A_n)=P(A_n|A_1A_2...A_{n-1}P(A_{n-1}|A_1A_2...A_{n-2})...P(A_2|A_1)P(A_1)
+$$
+任何多维随机变量联合概率分布,都可以分解成只有一个变量的条件概率相乘形式。
+
+## 1.16 独立性和条件独立性
+**独立性**
+两个随机变量$x$和$y$,概率分布表示成两个因子乘积形式,一个因子只包含$x$,另一个因子只包含$y$,两个随机变量相互独立(independent)。
+条件有时为不独立的事件之间带来独立,有时也会把本来独立的事件,因为此条件的存在,而失去独立性。
+举例:$P(XY)=P(X)P(Y)$, 事件$X$和事件$Y$独立。此时给定$Z$,
+$$
+P(X,Y|Z) \not = P(X|Z)P(Y|Z)
+$$
+事件独立时,联合概率等于概率的乘积。这是一个非常好的数学性质,然而不幸的是,无条件的独立是十分稀少的,因为大部分情况下,事件之间都是互相影响的。
+**条件独立性**
+给定$Z$的情况下,$X$和$Y$条件独立,当且仅当
+$$
+X\bot Y|Z \iff P(X,Y|Z) = P(X|Z)P(Y|Z)
+$$
+$X$和$Y$的关系依赖于$Z$,而不是直接产生。
+**举例**定义如下事件:
+$X$:明天下雨;
+$Y$:今天的地面是湿的;
+$Z$:今天是否下雨;
+$Z$事件的成立,对$X$和$Y$均有影响,然而,在$Z$事件成立的前提下,今天的地面情况对明天是否下雨没有影响。
+
+## 1.17期望、方差、协方差、相关系数总结
+(http://www.360doc.com/content/13/1124/03/9482_331690142.shtml)
+**期望**
+在概率论和统计学中,数学期望(或均值,亦简称期望)是试验中每次可能结果的概率乘以其结果的总和。它反映随机变量平均取值的大小。
+线性运算: $E(ax+by+c) = aE(x)+bE(y)+c$
+推广形式: $E(\sum_{k=1}^{n}{a_ix_i+c}) = \sum_{k=1}^{n}{a_iE(x_i)x_i+c}$
+函数期望:设$f(x)$为$x$的函数,则$f(x)$的期望为
+ - 离散函数: $E(f(x))=\sum_{k=1}^{n}{f(x_k)P(x_k)}$
+ - 连续函数: $E(f(x))=\int_{-\infty}^{+\infty}{f(x)p(x)dx}$
+
+注意:函数的期望不等于期望的函数,即$E(f(x))=f(E(x))$
+一般情况下,乘积的期望不等于期望的乘积。
+如果$X$和$Y$相互独立,则$E(xy)=E(x)E(y)$。
+**方差**
+概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。
+方差是一种特殊的期望。定义为:
+$$
+Var(x) = E((x-E(x))^2)
+$$
+方差性质:
+1)$Var(x) = E(x^2) -E(x)^2$
+2) 常数的方差为0;
+3)方差不满足线性性质;
+4)如果$X$和$Y$相互独立, $Var(ax+by)=Var(x)+Var(y)$
+**协方差**
+协方差是衡量两个变量线性相关性强度及变量尺度。
+两个随机变量的协方差定义为:
+$$
+Cov(x,y)=E((x-E(x))(y-E(y)))
+$$
+方差是一种特殊的协方差。当$X=Y$时,$Cov(x,y)=Var(x)=Var(y)$。
+协方差性质:
+1) 独立变量的协方差为0。
+2) 协方差计算公式:
+$$
+Cov(\sum_{i=1}^{m}{a_ix_i}, \sum_{j=1}^{m}{b_jy_j}) = \sum_{i=1}^{m} \sum_{j=1}^{m}{a_ib_jCov(x_iy_i)}
+$$
+3) 特殊情况:
+$$
+Cov(a+bx, c+dy) = bdCov(x, y)
+$$
+**相关系数**
+相关系数是研究变量之间线性相关程度的量。
+两个随机变量的相关系数定义为:
+$$
+Corr(x,y) = \frac{Cov(x,y)}{\sqrt{Var(x)Var(y)}}
+$$
+性质:
+1) 有界性。相关系数的取值范围是 ,可以看成无量纲的协方差。
2) 值越接近1,说明两个变量正相关性(线性)越强。越接近-1,说明负相关性越强,当为0时,表示两个变量没有相关性。
\ No newline at end of file
diff --git a/ch1_数学基础/第一章_数学基础.pdf b/ch1_数学基础/第一章_数学基础.pdf
new file mode 100644
index 0000000..09f86dd
Binary files /dev/null and b/ch1_数学基础/第一章_数学基础.pdf differ
diff --git a/img/ch2/2-1.png b/ch2_机器学习基础/img/ch2/2-1.png
similarity index 100%
rename from img/ch2/2-1.png
rename to ch2_机器学习基础/img/ch2/2-1.png
diff --git a/img/ch2/2-10.png b/ch2_机器学习基础/img/ch2/2-10.png
similarity index 100%
rename from img/ch2/2-10.png
rename to ch2_机器学习基础/img/ch2/2-10.png
diff --git a/img/ch2/2-11.png b/ch2_机器学习基础/img/ch2/2-11.png
similarity index 100%
rename from img/ch2/2-11.png
rename to ch2_机器学习基础/img/ch2/2-11.png
diff --git a/img/ch2/2-12.png b/ch2_机器学习基础/img/ch2/2-12.png
similarity index 100%
rename from img/ch2/2-12.png
rename to ch2_机器学习基础/img/ch2/2-12.png
diff --git a/img/ch2/2-13.png b/ch2_机器学习基础/img/ch2/2-13.png
similarity index 100%
rename from img/ch2/2-13.png
rename to ch2_机器学习基础/img/ch2/2-13.png
diff --git a/img/ch2/2-14.png b/ch2_机器学习基础/img/ch2/2-14.png
similarity index 100%
rename from img/ch2/2-14.png
rename to ch2_机器学习基础/img/ch2/2-14.png
diff --git a/img/ch2/2-15.png b/ch2_机器学习基础/img/ch2/2-15.png
similarity index 100%
rename from img/ch2/2-15.png
rename to ch2_机器学习基础/img/ch2/2-15.png
diff --git a/img/ch2/2-16.png b/ch2_机器学习基础/img/ch2/2-16.png
similarity index 100%
rename from img/ch2/2-16.png
rename to ch2_机器学习基础/img/ch2/2-16.png
diff --git a/img/ch2/2-17.png b/ch2_机器学习基础/img/ch2/2-17.png
similarity index 100%
rename from img/ch2/2-17.png
rename to ch2_机器学习基础/img/ch2/2-17.png
diff --git a/img/ch2/2-18.jpg b/ch2_机器学习基础/img/ch2/2-18.jpg
similarity index 100%
rename from img/ch2/2-18.jpg
rename to ch2_机器学习基础/img/ch2/2-18.jpg
diff --git a/img/ch2/2-19.jpg b/ch2_机器学习基础/img/ch2/2-19.jpg
similarity index 100%
rename from img/ch2/2-19.jpg
rename to ch2_机器学习基础/img/ch2/2-19.jpg
diff --git a/img/ch2/2-2.png b/ch2_机器学习基础/img/ch2/2-2.png
similarity index 100%
rename from img/ch2/2-2.png
rename to ch2_机器学习基础/img/ch2/2-2.png
diff --git a/img/ch2/2-20.gif b/ch2_机器学习基础/img/ch2/2-20.gif
similarity index 100%
rename from img/ch2/2-20.gif
rename to ch2_机器学习基础/img/ch2/2-20.gif
diff --git a/img/ch2/2-21.gif b/ch2_机器学习基础/img/ch2/2-21.gif
similarity index 100%
rename from img/ch2/2-21.gif
rename to ch2_机器学习基础/img/ch2/2-21.gif
diff --git a/img/ch2/2-22.gif b/ch2_机器学习基础/img/ch2/2-22.gif
similarity index 100%
rename from img/ch2/2-22.gif
rename to ch2_机器学习基础/img/ch2/2-22.gif
diff --git a/img/ch2/2-3.png b/ch2_机器学习基础/img/ch2/2-3.png
similarity index 100%
rename from img/ch2/2-3.png
rename to ch2_机器学习基础/img/ch2/2-3.png
diff --git a/img/ch2/2-4.png b/ch2_机器学习基础/img/ch2/2-4.png
similarity index 100%
rename from img/ch2/2-4.png
rename to ch2_机器学习基础/img/ch2/2-4.png
diff --git a/img/ch2/2-5.png b/ch2_机器学习基础/img/ch2/2-5.png
similarity index 100%
rename from img/ch2/2-5.png
rename to ch2_机器学习基础/img/ch2/2-5.png
diff --git a/img/ch2/2-6.png b/ch2_机器学习基础/img/ch2/2-6.png
similarity index 100%
rename from img/ch2/2-6.png
rename to ch2_机器学习基础/img/ch2/2-6.png
diff --git a/img/ch2/2-7.png b/ch2_机器学习基础/img/ch2/2-7.png
similarity index 100%
rename from img/ch2/2-7.png
rename to ch2_机器学习基础/img/ch2/2-7.png
diff --git a/img/ch2/2-8.png b/ch2_机器学习基础/img/ch2/2-8.png
similarity index 100%
rename from img/ch2/2-8.png
rename to ch2_机器学习基础/img/ch2/2-8.png
diff --git a/img/ch2/2-9.png b/ch2_机器学习基础/img/ch2/2-9.png
similarity index 100%
rename from img/ch2/2-9.png
rename to ch2_机器学习基础/img/ch2/2-9.png
diff --git a/img/ch2/2.1/1.jpg b/ch2_机器学习基础/img/ch2/2.1/1.jpg
similarity index 100%
rename from img/ch2/2.1/1.jpg
rename to ch2_机器学习基础/img/ch2/2.1/1.jpg
diff --git a/img/ch2/2.1/10.jpg b/ch2_机器学习基础/img/ch2/2.1/10.jpg
similarity index 100%
rename from img/ch2/2.1/10.jpg
rename to ch2_机器学习基础/img/ch2/2.1/10.jpg
diff --git a/img/ch2/2.1/11.jpg b/ch2_机器学习基础/img/ch2/2.1/11.jpg
similarity index 100%
rename from img/ch2/2.1/11.jpg
rename to ch2_机器学习基础/img/ch2/2.1/11.jpg
diff --git a/img/ch2/2.1/12.jpg b/ch2_机器学习基础/img/ch2/2.1/12.jpg
similarity index 100%
rename from img/ch2/2.1/12.jpg
rename to ch2_机器学习基础/img/ch2/2.1/12.jpg
diff --git a/img/ch2/2.1/2.jpg b/ch2_机器学习基础/img/ch2/2.1/2.jpg
similarity index 100%
rename from img/ch2/2.1/2.jpg
rename to ch2_机器学习基础/img/ch2/2.1/2.jpg
diff --git a/img/ch2/2.1/3.png b/ch2_机器学习基础/img/ch2/2.1/3.png
similarity index 100%
rename from img/ch2/2.1/3.png
rename to ch2_机器学习基础/img/ch2/2.1/3.png
diff --git a/img/ch2/2.1/4.png b/ch2_机器学习基础/img/ch2/2.1/4.png
similarity index 100%
rename from img/ch2/2.1/4.png
rename to ch2_机器学习基础/img/ch2/2.1/4.png
diff --git a/img/ch2/2.1/5.jpg b/ch2_机器学习基础/img/ch2/2.1/5.jpg
similarity index 100%
rename from img/ch2/2.1/5.jpg
rename to ch2_机器学习基础/img/ch2/2.1/5.jpg
diff --git a/img/ch2/2.1/6.jpg b/ch2_机器学习基础/img/ch2/2.1/6.jpg
similarity index 100%
rename from img/ch2/2.1/6.jpg
rename to ch2_机器学习基础/img/ch2/2.1/6.jpg
diff --git a/img/ch2/2.1/7.png b/ch2_机器学习基础/img/ch2/2.1/7.png
similarity index 100%
rename from img/ch2/2.1/7.png
rename to ch2_机器学习基础/img/ch2/2.1/7.png
diff --git a/img/ch2/2.1/8.jpg b/ch2_机器学习基础/img/ch2/2.1/8.jpg
similarity index 100%
rename from img/ch2/2.1/8.jpg
rename to ch2_机器学习基础/img/ch2/2.1/8.jpg
diff --git a/img/ch2/2.1/9.png b/ch2_机器学习基础/img/ch2/2.1/9.png
similarity index 100%
rename from img/ch2/2.1/9.png
rename to ch2_机器学习基础/img/ch2/2.1/9.png
diff --git a/img/ch2/2.16/1.jpg b/ch2_机器学习基础/img/ch2/2.16/1.jpg
similarity index 100%
rename from img/ch2/2.16/1.jpg
rename to ch2_机器学习基础/img/ch2/2.16/1.jpg
diff --git a/img/ch2/2.16/2.png b/ch2_机器学习基础/img/ch2/2.16/2.png
similarity index 100%
rename from img/ch2/2.16/2.png
rename to ch2_机器学习基础/img/ch2/2.16/2.png
diff --git a/img/ch2/2.18/1.png b/ch2_机器学习基础/img/ch2/2.18/1.png
similarity index 100%
rename from img/ch2/2.18/1.png
rename to ch2_机器学习基础/img/ch2/2.18/1.png
diff --git a/img/ch2/2.25/1.png b/ch2_机器学习基础/img/ch2/2.25/1.png
similarity index 100%
rename from img/ch2/2.25/1.png
rename to ch2_机器学习基础/img/ch2/2.25/1.png
diff --git a/img/ch2/2.27/1.png b/ch2_机器学习基础/img/ch2/2.27/1.png
similarity index 100%
rename from img/ch2/2.27/1.png
rename to ch2_机器学习基础/img/ch2/2.27/1.png
diff --git a/img/ch2/2.27/2.png b/ch2_机器学习基础/img/ch2/2.27/2.png
similarity index 100%
rename from img/ch2/2.27/2.png
rename to ch2_机器学习基础/img/ch2/2.27/2.png
diff --git a/img/ch2/2.29/1.png b/ch2_机器学习基础/img/ch2/2.29/1.png
similarity index 100%
rename from img/ch2/2.29/1.png
rename to ch2_机器学习基础/img/ch2/2.29/1.png
diff --git a/img/ch2/2.34/1.png b/ch2_机器学习基础/img/ch2/2.34/1.png
similarity index 100%
rename from img/ch2/2.34/1.png
rename to ch2_机器学习基础/img/ch2/2.34/1.png
diff --git a/img/ch2/2.40.10/1.png b/ch2_机器学习基础/img/ch2/2.40.10/1.png
similarity index 100%
rename from img/ch2/2.40.10/1.png
rename to ch2_机器学习基础/img/ch2/2.40.10/1.png
diff --git a/img/ch2/2.40.11/1.jpg b/ch2_机器学习基础/img/ch2/2.40.11/1.jpg
similarity index 100%
rename from img/ch2/2.40.11/1.jpg
rename to ch2_机器学习基础/img/ch2/2.40.11/1.jpg
diff --git a/img/ch2/2.40.15/1.png b/ch2_机器学习基础/img/ch2/2.40.15/1.png
similarity index 100%
rename from img/ch2/2.40.15/1.png
rename to ch2_机器学习基础/img/ch2/2.40.15/1.png
diff --git a/img/ch2/2.40.3/1.png b/ch2_机器学习基础/img/ch2/2.40.3/1.png
similarity index 100%
rename from img/ch2/2.40.3/1.png
rename to ch2_机器学习基础/img/ch2/2.40.3/1.png
diff --git a/img/ch2/2.40.3/2.png b/ch2_机器学习基础/img/ch2/2.40.3/2.png
similarity index 100%
rename from img/ch2/2.40.3/2.png
rename to ch2_机器学习基础/img/ch2/2.40.3/2.png
diff --git a/img/ch2/2.40.3/3.png b/ch2_机器学习基础/img/ch2/2.40.3/3.png
similarity index 100%
rename from img/ch2/2.40.3/3.png
rename to ch2_机器学习基础/img/ch2/2.40.3/3.png
diff --git a/img/ch2/2.6/1.png b/ch2_机器学习基础/img/ch2/2.6/1.png
similarity index 100%
rename from img/ch2/2.6/1.png
rename to ch2_机器学习基础/img/ch2/2.6/1.png
diff --git a/img/ch2/2.9/1.png b/ch2_机器学习基础/img/ch2/2.9/1.png
similarity index 100%
rename from img/ch2/2.9/1.png
rename to ch2_机器学习基础/img/ch2/2.9/1.png
diff --git a/img/ch2/2.9/2.jpg b/ch2_机器学习基础/img/ch2/2.9/2.jpg
similarity index 100%
rename from img/ch2/2.9/2.jpg
rename to ch2_机器学习基础/img/ch2/2.9/2.jpg
diff --git a/ch2_机器学习基础/modify_log.txt b/ch2_机器学习基础/modify_log.txt
new file mode 100644
index 0000000..974e4c6
--- /dev/null
+++ b/ch2_机器学习基础/modify_log.txt
@@ -0,0 +1,20 @@
+ļ¼־
+<----shw2018-2018-10-25---->
+1. ½markdownļ
+
+<----shw2018-2018-10-28---->
+1. Ĵݺʽ
+2. ͼƬ·
+
+<----shw2018-2018-10-31---->
+1. ھļУ
+img---->ŶӦ½ͼƬ·./img/ch9/ch_*
+readme.md---->½άϢ
+modify_log---->¼־
+ * _xxx.md---->Ӧ½markdownļ
+ * _xxx.pdf---->Ӧ½pdfļĶ
+---->
+2. readme
+3. modify
+4. ½ݣͼƬ·
+
diff --git a/ch2_机器学习基础/readme.md b/ch2_机器学习基础/readme.md
new file mode 100644
index 0000000..4ebe256
--- /dev/null
+++ b/ch2_机器学习基础/readme.md
@@ -0,0 +1,14 @@
+###########################################################
+
+### 深度学习500问-第 * 章 xxx
+
+**负责人(排名不分先后):**
+xxx研究生-xxx(xxx)
+xxx博士生-xxx
+xxx-xxx
+
+
+**贡献者(排名不分先后):**
+内容贡献者可自加信息
+
+###########################################################
\ No newline at end of file
diff --git a/MarkDown/第二章_机器学习基础.md b/ch2_机器学习基础/第二章_机器学习基础.md
similarity index 100%
rename from MarkDown/第二章_机器学习基础.md
rename to ch2_机器学习基础/第二章_机器学习基础.md
diff --git a/ch2_机器学习基础/第二章_机器学习基础.pdf b/ch2_机器学习基础/第二章_机器学习基础.pdf
new file mode 100644
index 0000000..d351c06
Binary files /dev/null and b/ch2_机器学习基础/第二章_机器学习基础.pdf differ
diff --git a/img/ch3/3-1.png b/ch3_深度学习基础/img/ch3/3-1.png
similarity index 100%
rename from img/ch3/3-1.png
rename to ch3_深度学习基础/img/ch3/3-1.png
diff --git a/img/ch3/3-10.jpg b/ch3_深度学习基础/img/ch3/3-10.jpg
similarity index 100%
rename from img/ch3/3-10.jpg
rename to ch3_深度学习基础/img/ch3/3-10.jpg
diff --git a/img/ch3/3-11.jpg b/ch3_深度学习基础/img/ch3/3-11.jpg
similarity index 100%
rename from img/ch3/3-11.jpg
rename to ch3_深度学习基础/img/ch3/3-11.jpg
diff --git a/img/ch3/3-12.png b/ch3_深度学习基础/img/ch3/3-12.png
similarity index 100%
rename from img/ch3/3-12.png
rename to ch3_深度学习基础/img/ch3/3-12.png
diff --git a/img/ch3/3-13.png b/ch3_深度学习基础/img/ch3/3-13.png
similarity index 100%
rename from img/ch3/3-13.png
rename to ch3_深度学习基础/img/ch3/3-13.png
diff --git a/img/ch3/3-14.png b/ch3_深度学习基础/img/ch3/3-14.png
similarity index 100%
rename from img/ch3/3-14.png
rename to ch3_深度学习基础/img/ch3/3-14.png
diff --git a/img/ch3/3-15.png b/ch3_深度学习基础/img/ch3/3-15.png
similarity index 100%
rename from img/ch3/3-15.png
rename to ch3_深度学习基础/img/ch3/3-15.png
diff --git a/img/ch3/3-16.png b/ch3_深度学习基础/img/ch3/3-16.png
similarity index 100%
rename from img/ch3/3-16.png
rename to ch3_深度学习基础/img/ch3/3-16.png
diff --git a/img/ch3/3-17.gif b/ch3_深度学习基础/img/ch3/3-17.gif
similarity index 100%
rename from img/ch3/3-17.gif
rename to ch3_深度学习基础/img/ch3/3-17.gif
diff --git a/img/ch3/3-18.png b/ch3_深度学习基础/img/ch3/3-18.png
similarity index 100%
rename from img/ch3/3-18.png
rename to ch3_深度学习基础/img/ch3/3-18.png
diff --git a/img/ch3/3-19.png b/ch3_深度学习基础/img/ch3/3-19.png
similarity index 100%
rename from img/ch3/3-19.png
rename to ch3_深度学习基础/img/ch3/3-19.png
diff --git a/img/ch3/3-2.png b/ch3_深度学习基础/img/ch3/3-2.png
similarity index 100%
rename from img/ch3/3-2.png
rename to ch3_深度学习基础/img/ch3/3-2.png
diff --git a/img/ch3/3-20.gif b/ch3_深度学习基础/img/ch3/3-20.gif
similarity index 100%
rename from img/ch3/3-20.gif
rename to ch3_深度学习基础/img/ch3/3-20.gif
diff --git a/img/ch3/3-21.png b/ch3_深度学习基础/img/ch3/3-21.png
similarity index 100%
rename from img/ch3/3-21.png
rename to ch3_深度学习基础/img/ch3/3-21.png
diff --git a/img/ch3/3-22.png b/ch3_深度学习基础/img/ch3/3-22.png
similarity index 100%
rename from img/ch3/3-22.png
rename to ch3_深度学习基础/img/ch3/3-22.png
diff --git a/img/ch3/3-23.png b/ch3_深度学习基础/img/ch3/3-23.png
similarity index 100%
rename from img/ch3/3-23.png
rename to ch3_深度学习基础/img/ch3/3-23.png
diff --git a/img/ch3/3-24.png b/ch3_深度学习基础/img/ch3/3-24.png
similarity index 100%
rename from img/ch3/3-24.png
rename to ch3_深度学习基础/img/ch3/3-24.png
diff --git a/img/ch3/3-25.png b/ch3_深度学习基础/img/ch3/3-25.png
similarity index 100%
rename from img/ch3/3-25.png
rename to ch3_深度学习基础/img/ch3/3-25.png
diff --git a/img/ch3/3-26.png b/ch3_深度学习基础/img/ch3/3-26.png
similarity index 100%
rename from img/ch3/3-26.png
rename to ch3_深度学习基础/img/ch3/3-26.png
diff --git a/img/ch3/3-27.png b/ch3_深度学习基础/img/ch3/3-27.png
similarity index 100%
rename from img/ch3/3-27.png
rename to ch3_深度学习基础/img/ch3/3-27.png
diff --git a/img/ch3/3-28.png b/ch3_深度学习基础/img/ch3/3-28.png
similarity index 100%
rename from img/ch3/3-28.png
rename to ch3_深度学习基础/img/ch3/3-28.png
diff --git a/img/ch3/3-29.png b/ch3_深度学习基础/img/ch3/3-29.png
similarity index 100%
rename from img/ch3/3-29.png
rename to ch3_深度学习基础/img/ch3/3-29.png
diff --git a/img/ch3/3-3.png b/ch3_深度学习基础/img/ch3/3-3.png
similarity index 100%
rename from img/ch3/3-3.png
rename to ch3_深度学习基础/img/ch3/3-3.png
diff --git a/img/ch3/3-30.png b/ch3_深度学习基础/img/ch3/3-30.png
similarity index 100%
rename from img/ch3/3-30.png
rename to ch3_深度学习基础/img/ch3/3-30.png
diff --git a/img/ch3/3-31.png b/ch3_深度学习基础/img/ch3/3-31.png
similarity index 100%
rename from img/ch3/3-31.png
rename to ch3_深度学习基础/img/ch3/3-31.png
diff --git a/img/ch3/3-32.png b/ch3_深度学习基础/img/ch3/3-32.png
similarity index 100%
rename from img/ch3/3-32.png
rename to ch3_深度学习基础/img/ch3/3-32.png
diff --git a/img/ch3/3-33.png b/ch3_深度学习基础/img/ch3/3-33.png
similarity index 100%
rename from img/ch3/3-33.png
rename to ch3_深度学习基础/img/ch3/3-33.png
diff --git a/img/ch3/3-34.png b/ch3_深度学习基础/img/ch3/3-34.png
similarity index 100%
rename from img/ch3/3-34.png
rename to ch3_深度学习基础/img/ch3/3-34.png
diff --git a/img/ch3/3-35.jpg b/ch3_深度学习基础/img/ch3/3-35.jpg
similarity index 100%
rename from img/ch3/3-35.jpg
rename to ch3_深度学习基础/img/ch3/3-35.jpg
diff --git a/img/ch3/3-36.png b/ch3_深度学习基础/img/ch3/3-36.png
similarity index 100%
rename from img/ch3/3-36.png
rename to ch3_深度学习基础/img/ch3/3-36.png
diff --git a/img/ch3/3-37.png b/ch3_深度学习基础/img/ch3/3-37.png
similarity index 100%
rename from img/ch3/3-37.png
rename to ch3_深度学习基础/img/ch3/3-37.png
diff --git a/img/ch3/3-38.png b/ch3_深度学习基础/img/ch3/3-38.png
similarity index 100%
rename from img/ch3/3-38.png
rename to ch3_深度学习基础/img/ch3/3-38.png
diff --git a/img/ch3/3-39.jpg b/ch3_深度学习基础/img/ch3/3-39.jpg
similarity index 100%
rename from img/ch3/3-39.jpg
rename to ch3_深度学习基础/img/ch3/3-39.jpg
diff --git a/img/ch3/3-4.png b/ch3_深度学习基础/img/ch3/3-4.png
similarity index 100%
rename from img/ch3/3-4.png
rename to ch3_深度学习基础/img/ch3/3-4.png
diff --git a/img/ch3/3-5.png b/ch3_深度学习基础/img/ch3/3-5.png
similarity index 100%
rename from img/ch3/3-5.png
rename to ch3_深度学习基础/img/ch3/3-5.png
diff --git a/img/ch3/3-6.png b/ch3_深度学习基础/img/ch3/3-6.png
similarity index 100%
rename from img/ch3/3-6.png
rename to ch3_深度学习基础/img/ch3/3-6.png
diff --git a/img/ch3/3-7.jpg b/ch3_深度学习基础/img/ch3/3-7.jpg
similarity index 100%
rename from img/ch3/3-7.jpg
rename to ch3_深度学习基础/img/ch3/3-7.jpg
diff --git a/img/ch3/3-8.png b/ch3_深度学习基础/img/ch3/3-8.png
similarity index 100%
rename from img/ch3/3-8.png
rename to ch3_深度学习基础/img/ch3/3-8.png
diff --git a/img/ch3/3-9.jpg b/ch3_深度学习基础/img/ch3/3-9.jpg
similarity index 100%
rename from img/ch3/3-9.jpg
rename to ch3_深度学习基础/img/ch3/3-9.jpg
diff --git a/ch3_深度学习基础/modify_log.txt b/ch3_深度学习基础/modify_log.txt
new file mode 100644
index 0000000..974e4c6
--- /dev/null
+++ b/ch3_深度学习基础/modify_log.txt
@@ -0,0 +1,20 @@
+ļ¼־
+<----shw2018-2018-10-25---->
+1. ½markdownļ
+
+<----shw2018-2018-10-28---->
+1. Ĵݺʽ
+2. ͼƬ·
+
+<----shw2018-2018-10-31---->
+1. ھļУ
+img---->ŶӦ½ͼƬ·./img/ch9/ch_*
+readme.md---->½άϢ
+modify_log---->¼־
+ * _xxx.md---->Ӧ½markdownļ
+ * _xxx.pdf---->Ӧ½pdfļĶ
+---->
+2. readme
+3. modify
+4. ½ݣͼƬ·
+
diff --git a/ch3_深度学习基础/readme.md b/ch3_深度学习基础/readme.md
new file mode 100644
index 0000000..4ebe256
--- /dev/null
+++ b/ch3_深度学习基础/readme.md
@@ -0,0 +1,14 @@
+###########################################################
+
+### 深度学习500问-第 * 章 xxx
+
+**负责人(排名不分先后):**
+xxx研究生-xxx(xxx)
+xxx博士生-xxx
+xxx-xxx
+
+
+**贡献者(排名不分先后):**
+内容贡献者可自加信息
+
+###########################################################
\ No newline at end of file
diff --git a/MarkDown/第三章_深度学习基础.md b/ch3_深度学习基础/第三章_深度学习基础.md
similarity index 100%
rename from MarkDown/第三章_深度学习基础.md
rename to ch3_深度学习基础/第三章_深度学习基础.md
diff --git a/ch3_深度学习基础/第三章_深度学习基础.pdf b/ch3_深度学习基础/第三章_深度学习基础.pdf
new file mode 100644
index 0000000..f9df71d
Binary files /dev/null and b/ch3_深度学习基础/第三章_深度学习基础.pdf differ
diff --git a/ch4_经典网络/img/ch3/3-1.png b/ch4_经典网络/img/ch3/3-1.png
new file mode 100644
index 0000000..5b065bc
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-1.png differ
diff --git a/ch4_经典网络/img/ch3/3-10.jpg b/ch4_经典网络/img/ch3/3-10.jpg
new file mode 100644
index 0000000..526dfa3
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-10.jpg differ
diff --git a/ch4_经典网络/img/ch3/3-11.jpg b/ch4_经典网络/img/ch3/3-11.jpg
new file mode 100644
index 0000000..d671beb
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-11.jpg differ
diff --git a/ch4_经典网络/img/ch3/3-12.png b/ch4_经典网络/img/ch3/3-12.png
new file mode 100644
index 0000000..af6b11a
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-12.png differ
diff --git a/ch4_经典网络/img/ch3/3-13.png b/ch4_经典网络/img/ch3/3-13.png
new file mode 100644
index 0000000..6d8799c
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-13.png differ
diff --git a/ch4_经典网络/img/ch3/3-14.png b/ch4_经典网络/img/ch3/3-14.png
new file mode 100644
index 0000000..124af84
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-14.png differ
diff --git a/ch4_经典网络/img/ch3/3-15.png b/ch4_经典网络/img/ch3/3-15.png
new file mode 100644
index 0000000..a32940e
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-15.png differ
diff --git a/ch4_经典网络/img/ch3/3-16.png b/ch4_经典网络/img/ch3/3-16.png
new file mode 100644
index 0000000..856802f
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-16.png differ
diff --git a/ch4_经典网络/img/ch3/3-17.gif b/ch4_经典网络/img/ch3/3-17.gif
new file mode 100644
index 0000000..ba665c6
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-17.gif differ
diff --git a/ch4_经典网络/img/ch3/3-18.png b/ch4_经典网络/img/ch3/3-18.png
new file mode 100644
index 0000000..c17ecad
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-18.png differ
diff --git a/ch4_经典网络/img/ch3/3-19.png b/ch4_经典网络/img/ch3/3-19.png
new file mode 100644
index 0000000..cd20e85
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-19.png differ
diff --git a/ch4_经典网络/img/ch3/3-2.png b/ch4_经典网络/img/ch3/3-2.png
new file mode 100644
index 0000000..3dbddcb
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-2.png differ
diff --git a/ch4_经典网络/img/ch3/3-20.gif b/ch4_经典网络/img/ch3/3-20.gif
new file mode 100644
index 0000000..308e93d
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-20.gif differ
diff --git a/ch4_经典网络/img/ch3/3-21.png b/ch4_经典网络/img/ch3/3-21.png
new file mode 100644
index 0000000..c4403e7
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-21.png differ
diff --git a/ch4_经典网络/img/ch3/3-22.png b/ch4_经典网络/img/ch3/3-22.png
new file mode 100644
index 0000000..05be668
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-22.png differ
diff --git a/ch4_经典网络/img/ch3/3-23.png b/ch4_经典网络/img/ch3/3-23.png
new file mode 100644
index 0000000..2e4c9b2
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-23.png differ
diff --git a/ch4_经典网络/img/ch3/3-24.png b/ch4_经典网络/img/ch3/3-24.png
new file mode 100644
index 0000000..fbec6c0
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-24.png differ
diff --git a/ch4_经典网络/img/ch3/3-25.png b/ch4_经典网络/img/ch3/3-25.png
new file mode 100644
index 0000000..cd2f64c
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-25.png differ
diff --git a/ch4_经典网络/img/ch3/3-26.png b/ch4_经典网络/img/ch3/3-26.png
new file mode 100644
index 0000000..9d67734
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-26.png differ
diff --git a/ch4_经典网络/img/ch3/3-27.png b/ch4_经典网络/img/ch3/3-27.png
new file mode 100644
index 0000000..9678e96
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-27.png differ
diff --git a/ch4_经典网络/img/ch3/3-28.png b/ch4_经典网络/img/ch3/3-28.png
new file mode 100644
index 0000000..ea2a6f9
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-28.png differ
diff --git a/ch4_经典网络/img/ch3/3-29.png b/ch4_经典网络/img/ch3/3-29.png
new file mode 100644
index 0000000..1d589b6
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-29.png differ
diff --git a/ch4_经典网络/img/ch3/3-3.png b/ch4_经典网络/img/ch3/3-3.png
new file mode 100644
index 0000000..c7178b5
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-3.png differ
diff --git a/ch4_经典网络/img/ch3/3-30.png b/ch4_经典网络/img/ch3/3-30.png
new file mode 100644
index 0000000..0296411
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-30.png differ
diff --git a/ch4_经典网络/img/ch3/3-31.png b/ch4_经典网络/img/ch3/3-31.png
new file mode 100644
index 0000000..4c757ad
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-31.png differ
diff --git a/ch4_经典网络/img/ch3/3-32.png b/ch4_经典网络/img/ch3/3-32.png
new file mode 100644
index 0000000..ea2a6f9
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-32.png differ
diff --git a/ch4_经典网络/img/ch3/3-33.png b/ch4_经典网络/img/ch3/3-33.png
new file mode 100644
index 0000000..9798bf8
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-33.png differ
diff --git a/ch4_经典网络/img/ch3/3-34.png b/ch4_经典网络/img/ch3/3-34.png
new file mode 100644
index 0000000..71edbcc
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-34.png differ
diff --git a/ch4_经典网络/img/ch3/3-35.jpg b/ch4_经典网络/img/ch3/3-35.jpg
new file mode 100644
index 0000000..5bb87c9
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-35.jpg differ
diff --git a/ch4_经典网络/img/ch3/3-36.png b/ch4_经典网络/img/ch3/3-36.png
new file mode 100644
index 0000000..5b90a4e
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-36.png differ
diff --git a/ch4_经典网络/img/ch3/3-37.png b/ch4_经典网络/img/ch3/3-37.png
new file mode 100644
index 0000000..087ae7b
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-37.png differ
diff --git a/ch4_经典网络/img/ch3/3-38.png b/ch4_经典网络/img/ch3/3-38.png
new file mode 100644
index 0000000..731c159
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-38.png differ
diff --git a/ch4_经典网络/img/ch3/3-39.jpg b/ch4_经典网络/img/ch3/3-39.jpg
new file mode 100644
index 0000000..50fe309
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-39.jpg differ
diff --git a/ch4_经典网络/img/ch3/3-4.png b/ch4_经典网络/img/ch3/3-4.png
new file mode 100644
index 0000000..a6f322c
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-4.png differ
diff --git a/ch4_经典网络/img/ch3/3-5.png b/ch4_经典网络/img/ch3/3-5.png
new file mode 100644
index 0000000..d094c2c
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-5.png differ
diff --git a/ch4_经典网络/img/ch3/3-6.png b/ch4_经典网络/img/ch3/3-6.png
new file mode 100644
index 0000000..10ac6d4
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-6.png differ
diff --git a/ch4_经典网络/img/ch3/3-7.jpg b/ch4_经典网络/img/ch3/3-7.jpg
new file mode 100644
index 0000000..3cdfc2d
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-7.jpg differ
diff --git a/ch4_经典网络/img/ch3/3-8.png b/ch4_经典网络/img/ch3/3-8.png
new file mode 100644
index 0000000..dd13a29
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-8.png differ
diff --git a/ch4_经典网络/img/ch3/3-9.jpg b/ch4_经典网络/img/ch3/3-9.jpg
new file mode 100644
index 0000000..49d4e00
Binary files /dev/null and b/ch4_经典网络/img/ch3/3-9.jpg differ
diff --git a/ch4_经典网络/modify_log.txt b/ch4_经典网络/modify_log.txt
new file mode 100644
index 0000000..974e4c6
--- /dev/null
+++ b/ch4_经典网络/modify_log.txt
@@ -0,0 +1,20 @@
+ļ¼־
+<----shw2018-2018-10-25---->
+1. ½markdownļ
+
+<----shw2018-2018-10-28---->
+1. Ĵݺʽ
+2. ͼƬ·
+
+<----shw2018-2018-10-31---->
+1. ھļУ
+img---->ŶӦ½ͼƬ·./img/ch9/ch_*
+readme.md---->½άϢ
+modify_log---->¼־
+ * _xxx.md---->Ӧ½markdownļ
+ * _xxx.pdf---->Ӧ½pdfļĶ
+---->
+2. readme
+3. modify
+4. ½ݣͼƬ·
+
diff --git a/ch4_经典网络/readme.md b/ch4_经典网络/readme.md
new file mode 100644
index 0000000..4ebe256
--- /dev/null
+++ b/ch4_经典网络/readme.md
@@ -0,0 +1,14 @@
+###########################################################
+
+### 深度学习500问-第 * 章 xxx
+
+**负责人(排名不分先后):**
+xxx研究生-xxx(xxx)
+xxx博士生-xxx
+xxx-xxx
+
+
+**贡献者(排名不分先后):**
+内容贡献者可自加信息
+
+###########################################################
\ No newline at end of file
diff --git a/ch4_经典网络/深度学习500问-Tan-04第四章 经典网络.pdf b/ch4_经典网络/深度学习500问-Tan-04第四章 经典网络.pdf
new file mode 100644
index 0000000..d95a832
Binary files /dev/null and b/ch4_经典网络/深度学习500问-Tan-04第四章 经典网络.pdf differ
diff --git a/MarkDown/第四章_经典网络.md b/ch4_经典网络/第四章_经典网络.md
similarity index 98%
rename from MarkDown/第四章_经典网络.md
rename to ch4_经典网络/第四章_经典网络.md
index 5af077d..bafb5da 100644
--- a/MarkDown/第四章_经典网络.md
+++ b/ch4_经典网络/第四章_经典网络.md
@@ -1,712 +1,712 @@
-# 第四章 经典网络
-## 4.1 LetNet5
-一种典型的用来识别数字的卷积网络是LeNet-5。
-## 4.1.1 模型结构
-
-
-
-## 4.1.2 模型结构
-LeNet-5共有7层,不包含输入,每层都包含可训练参数;每个层有多个Feature Map,每个FeatureMap通过一种卷积滤波器提取输入的一种特征,然后每个FeatureMap有多个神经元。
-
-1. C1层是一个卷积层
-输入图片:32 \* 32
-卷积核大小:5 \* 5
-卷积核种类:6
-输出featuremap大小:28 \* 28 (32-5+1)
-神经元数量:28 \* 28 \* 6
-可训练参数:(5 \* 5+1) \* 6(每个滤波器5 \* 5=25个unit参数和一个bias参数,一共6个滤波器)
-连接数:(5 \* 5+1) \* 6 \* 28 \* 28
-
-2. S2层是一个下采样层
-输入:28 \* 28
-采样区域:2 \* 2
-采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid
-采样种类:6
-输出featureMap大小:14 \* 14(28/2)
-神经元数量:14 \* 14 \* 6
-可训练参数:2 \* 6(和的权+偏置)
-连接数:(2 \* 2+1) \* 6 \* 14 \* 14
-S2中每个特征图的大小是C1中特征图大小的1/4
-
-3. C3层也是一个卷积层
-输入:S2中所有6个或者几个特征map组合
-卷积核大小:5 \* 5
-卷积核种类:16
-输出featureMap大小:10 \* 10
-C3中的每个特征map是连接到S2中的所有6个或者几个特征map的,表示本层的特征map是上一层提取到的特征map的不同组合
-存在的一个方式是:C3的前6个特征图以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。然后的3个以不相邻的4个特征图子集为输入。最后一个将S2中所有特征图为输入。 则:可训练参数:6 \* (3 \* 25+1)+6 \* (4 \* 25+1)+3 \* (4 \* 25+1)+(25 \* 6+1)=1516
-连接数:10 \* 10 \* 1516=151600
-
-4. S4层是一个下采样层
-输入:10 \* 10
-采样区域:2 \* 2
-采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid
-采样种类:16
-输出featureMap大小:5 \* 5(10/2)
-神经元数量:5 \* 5 \* 16=400
-可训练参数:2 \* 16=32(和的权+偏置)
-连接数:16 \* (2 \* 2+1) \* 5 \* 5=2000
-S4中每个特征图的大小是C3中特征图大小的1/4
-
-5. C5层是一个卷积层
-输入:S4层的全部16个单元特征map(与s4全相连)
-卷积核大小:5 \* 5
-卷积核种类:120
-输出featureMap大小:1 \* 1(5-5+1)
-可训练参数/连接:120 \* (16 \* 5 \* 5+1)=48120
-
-6. F6层全连接层
-输入:c5 120维向量
-计算方式:计算输入向量和权重向量之间的点积,再加上一个偏置,结果通过sigmoid函数
-可训练参数:84 \* (120+1)=10164
-## 4.1.3 模型特性
-- 卷积网络使用一个3层的序列:卷积、池化、非线性——这可能是自这篇论文以来面向图像的深度学习的关键特性!
-- 使用卷积提取空间特征
-- 使用映射的空间均值进行降采样
-- tanh或sigmoids非线性
-- 多层神经网络(MLP)作为最终的分类器
-- 层间的稀疏连接矩阵以避免巨大的计算开销
-
-# 4.2 AlexNet
-## 4.2.1 模型结构
-
-
-
-## 4.2.2 模型解读
-
-1. conv1阶段DFD(data flow diagram):
-
-
-
-
-第一层输入数据为原始的227 \* 227 \* 3的图像,这个图像被11 \* 11 \* 3的卷积核进行卷积运算,卷积核对原始图像的每次卷积都生成一个新的像素。卷积核沿原始图像的x轴方向和y轴方向两个方向移动,移动的步长是4个像素。因此,卷积核在移动的过程中会生成(227-11)/4+1=55个像素(227个像素减去11,正好是54,即生成54个像素,再加上被减去的11也对应生成一个像素),行和列的55 \* 55个像素形成对原始图像卷积之后的像素层。共有96个卷积核,会生成55 \* 55 \* 96个卷积后的像素层。96个卷积核分成2组,每组48个卷积核。对应生成2组55 \* 55 \* 48的卷积后的像素层数据。这些像素层经过relu1单元的处理,生成激活像素层,尺寸仍为2组55 \* 55 \* 48的像素层数据。 这些像素层经过pool运算(池化运算)的处理,池化运算的尺度为3 \* 3,运算的步长为2,则池化后图像的尺寸为(55-3)/2+1=27。 即池化后像素的规模为27 \* 27 \* 96;然后经过归一化处理,归一化运算的尺度为5 \* 5;第一卷积层运算结束后形成的像素层的规模为27 \* 27 \* 96。分别对应96个卷积核所运算形成。这96层像素层分为2组,每组48个像素层,每组在一个独立的GPU上进行运算。 反向传播时,每个卷积核对应一个偏差值。即第一层的96个卷积核对应上层输入的96个偏差值。
-
-2. conv2阶段DFD(data flow diagram):
-
-
-
-
-第二层输入数据为第一层输出的27 \* 27 \* 96的像素层,为便于后续处理,每幅像素层的左右两边和上下两边都要填充2个像素;27 \* 27 \* 96的像素数据分成27 \* 27 \* 48的两组像素数据,两组数据分别再两个不同的GPU中进行运算。每组像素数据被5 \* 5 \* 48的卷积核进行卷积运算,卷积核对每组数据的每次卷积都生成一个新的像素。卷积核沿原始图像的x轴方向和y轴方向两个方向移动,移动的步长是1个像素。因此,卷积核在移动的过程中会生成(27-5+2 \* 2)/1+1=27个像素。(27个像素减去5,正好是22,在加上上下、左右各填充的2个像素,即生成26个像素,再加上被减去的5也对应生成一个像素),行和列的27 \* 27个像素形成对原始图像卷积之后的像素层。共有256个5 \* 5 \* 48卷积核;这256个卷积核分成两组,每组针对一个GPU中的27 \* 27 \* 48的像素进行卷积运算。会生成两组27 \* 27 \* 128个卷积后的像素层。这些像素层经过relu2单元的处理,生成激活像素层,尺寸仍为两组27 \* 27 \* 128的像素层。
-这些像素层经过pool运算(池化运算)的处理,池化运算的尺度为3 \* 3,运算的步长为2,则池化后图像的尺寸为(57-3)/2+1=13。 即池化后像素的规模为2组13 \* 13 \* 128的像素层;然后经过归一化处理,归一化运算的尺度为5 \* 5;第二卷积层运算结束后形成的像素层的规模为2组13 \* 13 \* 128的像素层。分别对应2组128个卷积核所运算形成。每组在一个GPU上进行运算。即共256个卷积核,共2个GPU进行运算。
-反向传播时,每个卷积核对应一个偏差值。即第一层的96个卷积核对应上层输入的256个偏差值。
-
-3. conv3阶段DFD(data flow diagram):
-
-
-
-
-第三层输入数据为第二层输出的2组13 \* 13 \* 128的像素层;为便于后续处理,每幅像素层的左右两边和上下两边都要填充1个像素;2组像素层数据都被送至2个不同的GPU中进行运算。每个GPU中都有192个卷积核,每个卷积核的尺寸是3 \* 3 \* 256。因此,每个GPU中的卷积核都能对2组13 \* 13 \* 128的像素层的所有数据进行卷积运算。卷积核对每组数据的每次卷积都生成一个新的像素。卷积核沿像素层数据的x轴方向和y轴方向两个方向移动,移动的步长是1个像素。因此,运算后的卷积核的尺寸为(13-3+1 \* 2)/1+1=13(13个像素减去3,正好是10,在加上上下、左右各填充的1个像素,即生成12个像素,再加上被减去的3也对应生成一个像素),每个GPU中共13 \* 13 \* 192个卷积核。2个GPU中共13 \* 13 \* 384个卷积后的像素层。这些像素层经过relu3单元的处理,生成激活像素层,尺寸仍为2组13 \* 13 \* 192像素层,共13 \* 13 \* 384个像素层。
-
-4. conv4阶段DFD(data flow diagram):
-
-
-
-
-第四层输入数据为第三层输出的2组13 \* 13 \* 192的像素层;为便于后续处理,每幅像素层的左右两边和上下两边都要填充1个像素;2组像素层数据都被送至2个不同的GPU中进行运算。每个GPU中都有192个卷积核,每个卷积核的尺寸是3 \* 3 \* 192。因此,每个GPU中的卷积核能对1组13 \* 13 \* 192的像素层的数据进行卷积运算。卷积核对每组数据的每次卷积都生成一个新的像素。卷积核沿像素层数据的x轴方向和y轴方向两个方向移动,移动的步长是1个像素。因此,运算后的卷积核的尺寸为(13-3+1 \* 2)/1+1=13(13个像素减去3,正好是10,在加上上下、左右各填充的1个像素,即生成12个像素,再加上被减去的3也对应生成一个像素),每个GPU中共13 \* 13 \* 192个卷积核。2个GPU中共13 \* 13 \* 384个卷积后的像素层。这些像素层经过relu4单元的处理,生成激活像素层,尺寸仍为2组13 \* 13 \* 192像素层,共13 \* 13 \* 384个像素层。
-
- 5. conv5阶段DFD(data flow diagram):
-
- 
-
-
-第五层输入数据为第四层输出的2组13 \* 13 \* 192的像素层;为便于后续处理,每幅像素层的左右两边和上下两边都要填充1个像素;2组像素层数据都被送至2个不同的GPU中进行运算。每个GPU中都有128个卷积核,每个卷积核的尺寸是3 \* 3 \* 192。因此,每个GPU中的卷积核能对1组13 \* 13 \* 192的像素层的数据进行卷积运算。卷积核对每组数据的每次卷积都生成一个新的像素。卷积核沿像素层数据的x轴方向和y轴方向两个方向移动,移动的步长是1个像素。因此,运算后的卷积核的尺寸为(13-3+1 \* 2)/1+1=13(13个像素减去3,正好是10,在加上上下、左右各填充的1个像素,即生成12个像素,再加上被减去的3也对应生成一个像素),每个GPU中共13 \* 13 \* 128个卷积核。2个GPU中共13 \* 13 \* 256个卷积后的像素层。这些像素层经过relu5单元的处理,生成激活像素层,尺寸仍为2组13 \* 13 \* 128像素层,共13 \* 13 \* 256个像素层。
-
-2组13 \* 13 \* 128像素层分别在2个不同GPU中进行池化(pool)运算处理。池化运算的尺度为3 \* 3,运算的步长为2,则池化后图像的尺寸为(13-3)/2+1=6。 即池化后像素的规模为两组6 \* 6 \* 128的像素层数据,共6 \* 6 \* 256规模的像素层数据。
-
-
-6. fc6阶段DFD(data flow diagram):
-
-
-
-
-第六层输入数据的尺寸是6 \* 6 \* 256,采用6 \* 6 \* 256尺寸的滤波器对第六层的输入数据进行卷积运算;每个6 \* 6 \* 256尺寸的滤波器对第六层的输入数据进行卷积运算生成一个运算结果,通过一个神经元输出这个运算结果;共有4096个6 \* 6 \* 256尺寸的滤波器对输入数据进行卷积运算,通过4096个神经元输出运算结果;这4096个运算结果通过relu激活函数生成4096个值;并通过drop运算后输出4096个本层的输出结果值。 由于第六层的运算过程中,采用的滤波器的尺寸(6 \* 6 \* 256)与待处理的feature map的尺寸(6 \* 6 \* 256)相同,即滤波器中的每个系数只与feature map中的一个像素值相乘;而其它卷积层中,每个滤波器的系数都会与多个feature map中像素值相乘;因此,将第六层称为全连接层。 第五层输出的6 \* 6 \* 256规模的像素层数据与第六层的4096个神经元进行全连接,然后经由relu6进行处理后生成4096个数据,再经过dropout6处理后输出4096个数据。
-
-7. fc7阶段DFD(data flow diagram):
-
-
-
-
-第六层输出的4096个数据与第七层的4096个神经元进行全连接,然后经由relu7进行处理后生成4096个数据,再经过dropout7处理后输出4096个数据。
-
-8. fc8阶段DFD(data flow diagram):
-
-
-
-
-第七层输出的4096个数据与第八层的1000个神经元进行全连接,经过训练后输出被训练的数值。
-
-## 4.2.3模型特性
-- 使用ReLU作为非线性
-- 使用dropout技术选择性地忽略训练中的单个神经元,避免模型的过拟合
-- 重叠最大池化(overlapping max pooling),避免平均池化(average pooling)的平均效应
-- 使用NVIDIA GTX 580 GPU减少训练时间
-- 当时,GPU比CPU提供了更多的核心,可以将训练速度提升10倍,从而允许使用更大的数据集和更大的图像。
-
-
-# 4.3 可视化ZFNet-解卷积
-## 4.3.1 基本的思想及其过程
-
-
-可视化技术揭露了激发模型中每层单独的特征图,也允许观察在训练阶段特征的演变过程且诊断出模型的潜在问题。
-
-
-可视化技术用到了多层解卷积网络,即由特征激活返回到输入像素空间。
-
- 同时进行了分类器输出的敏感性分析,即通过阻止部分输入图像来揭示那部分对于分类是重要的。
-
- 这个可视化技术提供了一个非参数的不变性来展示来自训练集的哪一块激活哪个特征图,不仅需要裁剪输入图片,而且自上而下的投影来揭露来自每块的结构激活一个特征图。
-
- 可视化技术依赖于解卷积操作,即卷积操作的逆过程,将特征映射到像素上。由于解卷积是一种非监督学习,因此只能作为已经训练过的卷积网的探究,不能用作任何学习用途。
-
-## 4.3.2 卷积与解卷积
-
-
-下图为卷积过程
-
-
-
-
-
-
-
-解卷积过程
-
-
-
-
-
-
-
-**非池化**:池化操作是非可逆的,但是我们可以用一组转换变量switch在每个池化区域中通过记录最大值的位置来获得一个近似逆。在解卷积网中,非池化操作使用这些转换来放置上述最大值的位置,保存激活的位置,其余位置都置0。
-
-
-**纠正**:卷积网中使用非线性的ReLU来修改特征图来确保特征图总是正值。为了获得在每层的有效(也应该是正值)的特征重建,也在解卷积网中利用了ReLU。
-
-
-**滤波**:解卷积网中利用卷积网中的相同的滤波器的转置应用到纠正过的特征图中,而不是上层的输出。也就是对滤波器进行水平方向和垂直方向的翻转。从高层向下投影使用转换变量switch,这个转化变量switch产生自向上的卷积网的最大池化操作。由于重建由一个单独的激活获得,因此也就只对应于原始输入图像的一小块。
-
-
-
-
-上图左半部分是一个解卷积层,右半部分为一个卷积层。解卷积层将会重建一个来自下一层的卷积特征近似版本。图中使用switc来记录在卷积网中进行最大池化操作时每个池化区域的局部最大值的位置,经过非池化操作之后,原来的非最大值的位置都置为0。
-
-## 4.3.3 卷积可视化
-
-预处理:网络对输入图片进行预处理,裁剪图片中间的256x256区域,并减去整个图像每个像素的均值,然后用10个不同的对256x256图像进行224x224的裁剪(中间区域加上四个角落,以及他们的水平翻转图像),对以128个图片分的块进行随机梯度下降法来更新参数。起始学习率为 ,动量为0.9,当验证集误差停滞时,手动调整学习率。在全连接网络中使用概率为0.5的dropout,并且所有权值都初始化为 ,偏置设为0。 在训练时第一层的可视化揭露了一些占主导的因素,为了了解这些,我们采用重新归一化每个卷积层的滤波器,这些滤波器的均方根值超过了一个固定半径的 。这是非常关键的,尤其是在模型中的第一层,因为输出图片大约在[-128,128]的范围内。
-
-
-特征可视化:每个特征单独投影到像素空间揭露了不同的结构能刺激不同的一个给定的特征图,因此展示了它对于变形的输入内在的不变性。下图即在一个已经训练好的网络中可视化后的图。
-
-
-
-
-由上图可以看到第二层应对角落和其他边缘或者颜色的结合;第三层有更加复杂的不变性,捕捉到了相似的纹理;第四层显示了特定类间显著的差异性;第五层显示了有显著构成变化的整个物体。
-
-
-训练时的特征演变过程:外表突然的变化导致图像中的一个变换即产生了最强烈的激活。模型的底层在少数几个epoches就能收敛聚集,然而上层在一个相当多的epoches(40-50)之后才能有所变化,这显示了让模型完全训练到完全收敛的必要性。可以由下图看到颜色对比度都逐步增强。
-
-
-
-
-**特征不变性:** 一般来说,小的变化对于模型的第一层都有非常大的影响,但对于最高层的影响却几乎没有。对于图像的平移、尺度、旋转的变化来说,网络的输出对于平移和尺度变化都是稳定的,但却不具有旋转不变性,除非目标图像时旋转对称的。下图为分别对平移,尺度,旋转做的分析图。
-
-
-
-
-上图按行顺序分别为对5类图像进行不同程度的垂直方向上的平移、尺度变换、旋转对输出结果影响的分析图。按列顺序分别为原始变换图像,第一层中原始图片和变换后的图片的欧氏距离,第7层中原始图片和变换后的图片的欧氏距离,变换后图片被正确分类的概率图。
-
-
-可视化不仅能够看到一个训练完的模型的内部操作,而且还能帮助选择好的网络结构。
-
-## 4.3.4 ZFNe和AlexNet比较
-
-
-ZFNet的网络结构实际上与AlexNet没有什么很大的变化,差异表现在AlexNet用了两块GPU的稀疏连接结构,而ZFNet只用了一块GPU的稠密连接结构;同时,由于可视化可以用来选择好的网络结构,通过可视化发现AlexNet第一层中有大量的高频和低频信息的混合,却几乎没有覆盖到中间的频率信息;且第二层中由于第一层卷积用的步长为4太大了,导致了有非常多的混叠情况;因此改变了AlexNet的第一层即将滤波器的大小11x11变成7x7,并且将步长4变成了2,下图为AlexNet网络结构与ZFNet的比较。
-
-
-
-
-
-
-# 4.4 VGG
-## 4.4.1 模型结构
-
-
-
-## 4.4.2 模型特点
-
-
-1. 整个网络都使用了同样大小的卷积核尺寸(3 \* 3)和最大池化尺寸(2 \* 2)
-
-2. 1 \* 1卷积的意义主要在于线性变换,而输入通道数和输出通道数不变,没有发生降维。
-
-
-1. 两个3 \* 3的卷积层串联相当于1个5 \* 5的卷积层,即一个像素会跟周围5 \* 5的像素产生关联,可以说感受野大小为5 \* 5。而3个3 \* 3的卷积层串联的效果则相当于1个7 \* 7的卷积层。除此之外,3个串联的3 \* 3的卷积层,拥有比1个7 \* 7的卷积层更少的参数量,只有后者的(3 \* 3 \* 3)/(7 \* 7)=55%。最重要的是,3个3 \* 3的卷积层拥有比1个7 \* 7的卷积层更多的非线性变换(前者可以使用三次ReLU激活函数,而后者只有一次),使得CNN对特征的学习能力更强。
-
-2. VGGNet在训练时有一个小技巧,先训练级别A的简单网络,再复用A网络的权重来初始化后面的几个复杂模型,这样训练收敛的速度更快。在预测时,VGG采用Multi-Scale的方法,将图像scale到一个尺寸Q,并将图片输入卷积网络计算。然后在最后一个卷积层使用滑窗的方式进行分类预测,将不同窗口的分类结果平均,再将不同尺寸Q的结果平均得到最后结果,这样可提高图片数据的利用率并提升预测准确率。在训练中,VGGNet还使用了Multi-Scale的方法做数据增强,将原始图像缩放到不同尺寸S,然后再随机裁切224´224的图片,这样能增加很多数据量,对于防止模型过拟合有很不错的效果。
-
-# 4.5 Network in Network
-## 4.5.1 模型结构
-
-
-
-## 4.5.2 模型创新点
-
-
-论文的创新点:
-
-1. 提出了抽象能力更高的Mlpconv层
-
-2. 提出了Global Average Pooling(全局平均池化)层
-
-- Mlpconv层
-
- 传统的卷积神经网络一般来说是由线性卷积层、池化层、全连接层堆叠起来的网络,卷积层通过线性滤波器进行线性卷积运算,然后在接个非线性激活函数最终生成特征图。而这种卷积滤波器是一种GLM:(Generalized linear model)广义线性模型。然而GLM的抽象能力是比较低水平的。
-
-
- 抽象:指得到对同一概念的不同变体保持不变的特征。
-
-
-一般用CNN进行特征提取时,其实就隐含地假设了特征是线性可分的,可实际问题往往是难以线性可分的。一般来说我们所要提取的特征一般是高度非线性的。在传统的CNN中,也许我们可以用超完备的滤波器,来提取各种潜在的特征。比如我们要提取某个特征,于是我就用了一大堆的滤波器,把所有可能的提取出来,这样就可以把我想要提取的特征也覆盖到,然而这样存在一个缺点,那就是网络太恐怖了,参数太多了。
-
-
-我们知道CNN高层特征其实是低层特征通过某种运算的组合。所以论文就根据这个想法,提出在每个局部感受野中进行更加复杂的运算,提出了对卷积层的改进算法:MLP卷积层。(这里也不知道是否有道理,因为在后面的深层网络没有提出此种说法,还是按照传统的cnn方法使用多个滤波器去学习同一特征的不同变体)。MLP中的激活函数采用的是整流线性单元(即ReLU:max(wx+b,0)。
-MLP的优点:
-
-1. 非常有效的通用函数近似器
-2. 可用BP算法训练,可以完美地融合进CNN
-3. 其本身也是一种深度模型,可以特征再利用
-
-
-
-- 全局平均池化层
-
-
- 另一方面,传统的CNN最后一层都是全连接层,参数个数非常之多,容易引起过拟合(如Alexnet),一个CNN模型,大部分的参数都被全连接层给占用了,所以论文提出采用了全局均值池化替代全连接层。与传统的全连接层不同,我们对每个特征图一整张图片进行全局均值池化,这样每张特征图都可以得到一个输出。这样采用均值池化,连参数都省了,可以大大减小网络参数,避免过拟合,另一方面它有一个特点,每张特征图相当于一个输出特征,然后这个特征就表示了我们输出类的特征。
-
- 全局平均池化的优势:
- 1. 通过加强特征图与类别的一致性,让卷积结构更简单
- 2. 不需要进行参数优化,所以这一层可以避免过拟合
- 3. 它对空间信息进行了求和,因而对输入的空间变换更具有稳定性
-
-
-在采用了微神经网络后,让局部模型有更强的抽象能力,从而让全局平均池化能具有特征图与类别之间的一致性,同时相比传统CNN采用的全连接层,不易过拟合(因为全局平均池化本身就是一种结构性的规则项)(PS:经典CNN容易过拟合,并严重依赖用dropout进行规则化)。
-
-# 4.6 GoogleNet
-## 4.6.1 模型结构
-
-
-
-
-
-## 4.6.2 Inception 结构
-
-
-
-对上图做以下说明:
-
-1. 采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合;
-2. 之所以卷积核大小采用1. 3和5,主要是为了方便对齐。设定卷积步长stride=1之后,只要分别设定pad=0、1. 2,那么卷积之后便可以得到相同维度的特征,然后这些特征就可以直接拼接在一起了;
-3. 文章说很多地方都表明pooling挺有效,所以Inception里面也嵌入了。
-4. 网络越到后面,特征越抽象,而且每个特征所涉及的感受野也更大了,因此随着层数的增加,3x3和5x5卷积的比例也要增加。
-
-但是,使用5x5的卷积核仍然会带来巨大的计算量。 为此,文章借鉴NIN2,采用1x1卷积核来进行降维。
-
-
-例如:上一层的输出为100x100x128,经过具有256个输出的5x5卷积层之后(stride=1,pad=2),输出数据为100x100x256。其中,卷积层的参数为128x5x5x256。假如上一层输出先经过具有32个输出的1x1卷积层,再经过具有256个输出的5x5卷积层,那么最终的输出数据仍为为100x100x256,但卷积参数量已经减少为128x1x1x32 + 32x5x5x256,大约减少了4倍。
-
-具体改进后的Inception Module如下图:
-
-
-
-## 4.6.3 模型层次关系
-
-
-原始数据,输入为224 \* 224 \* 3
-
-
-第一层卷积层 conv1 ,pad是3,64个特征,7 \* 7 步长为2,输出特征为 112 \* 112 \* 64,然后进行relu,经过pool1(红色的max pool) 进行pooling 3 \* 3的核,步长为2, [(112 - 3+1)/2]+1 = 56 特征为56 \* 56 \* 64 , 然后进行norm
-
-
-第二层卷积层 conv2, pad是1,3 \* 3,192个特征,输出为56 \* 56 \* 192,然后进行relu,进行norm,经过pool2进行pooling,3 \* 3的核,步长为2 输出为28 \* 28 \* 192 然后进行split 分成四个支线
-
-
-第三层开始时 inception module ,这个的思想受到使用不同尺度的Gabor过滤器来处理多尺度问题,inception module采用不同尺度的卷积核来处理问题。3a 包含 四个支线:
-
-
-1: 64个1 \* 1的卷积核(之后进行RULE计算) 变成28 \* 28 \* 64
-
-
-2: 96个1 \* 1的卷积核 作为3 \* 3卷积核之前的reduce,变成28 \* 28 \* 96,进行relu计算后,再进行128个3 \* 3的卷积,pad为1, 28 \* 28 \* 128
-
-
-3:16个1 \* 1的卷积核 作为5 \* 5卷积核之前的reduce,变成28 \* 28 \* 16, 进行relu计算后,再进行32个5 \* 5的卷积,pad为2,变成28 \* 28 \* 32
-
-
-4:pool层,3 \* 3的核,pad为1,输出还是28 \* 28 \* 192,然后进行32个1 \* 1的卷积,变成28 \* 28 \* 32。
-
-
-将四个结果进行连接,输出为28 \* 28 \* 256
-
-
-
-然后将3a的结果又分成四条支线,开始建立3b的inception module
-
-3b
-
-1:128个1 \* 1的卷积核(之后进行RULE计算) 变成28 \* 28 \* 128
-
-2:128个1 \* 1的卷积核 作为3 \* 3卷积核之前的reduce,变成28 \* 28 \* 128, 再进行192个3 \* 3的卷积,pad为1, 28 \* 28 \* 192,进行relu计算
-
-3:32个1 \* 1的卷积核 作为5 \* 5卷积核之前的reduce,变成28 \* 28 \* 32, 进行relu计算后,再进行96个5 \* 5的卷积,pad为2,变成28 \* 28 \* 96
-
-4:pool层,3 \* 3的核,pad为1,输出还是28 \* 28 \* 256,然后进行64个1 \* 1的卷积,变成28 \* 28 \* 64。
-
-将四个结果进行连接,输出为28 \* 28 \* 480
-
-同理依次推算,数据变化如下表:
-
-
-
-
-# 4.7 Inception 系列
-## 4.7.1 Inception v1
-
-
-相比于GoogLeNet之前的众多卷积神经网络而言,inception v1采用在同一层中提取不同的特征(使用不同尺寸的卷积核),并提出了卷积核的并行合并(也称为Bottleneck layer),如下图
-
-
-
-这样的结构主要有以下改进:
-1. 一层block就包含1x1卷积,3x3卷积,5x5卷积,3x3池化(使用这样的尺寸不是必需的,可以根据需要进行调整)。这样,网络中每一层都能学习到“稀疏”(3x3. 5x5)或“不稀疏”(1x1)的特征,既增加了网络的宽度,也增加了网络对尺度的适应性;
-2. 通过deep concat在每个block后合成特征,获得非线性属性。
-
-虽然这样提高了性能,但是网络的计算量实在是太大了,因此GoogLeNet借鉴了Network-in-Network的思想,使用1x1的卷积核实现降维操作,以此来减小网络的参数量(这里就不对两种结构的参数量进行定量比较了),如图所示。
-
-
-
-
-最后实现的inception v1网络是上图结构的顺序连接,其中不同inception模块之间使用2x2的最大池化进行下采样,如表所示。
-
-
-
-如表所示,实现的网络仍有一层全连接层,该层的设置是为了迁移学习的实现(下同)。
-在之前的网络中,最后都有全连接层,经实验证明,全连接层并不是很必要的,因为可能会带来以下三点不便:
- - 网络的输入需要固定
- - 参数量多
- - 易发生过拟合
-实验证明,将其替换为平均池化层(或者1x1卷积层)不仅不影响精度,还可以减少。
-
-## 4.7.2 Inception v2
-
-在V1的基础之上主要做了以下改进:
-1. 使用BN层,将每一层的输出都规范化到一个N(0,1)的正态分布,这将有助于训练,因为下一层不必学习输入数据中的偏移,并且可以专注与如何更好地组合特征(也因为在v2里有较好的效果,BN层几乎是成了深度网络的必备);
-
-
-(在Batch-normalized论文中只增加了BN层,而之后的Inception V3的论文提及到的inception v2还做了下面的优化)
-
-2. 使用2个3x3的卷积代替梯度(特征图,下同)为35x35中的5x5的卷积,这样既可以获得相同的视野(经过2个3x3卷积得到的特征图大小等于1个5x5卷积得到的特征图),还具有更少的参数,还间接增加了网络的深度,如下图。(基于原则3)
-
-
-
-
-
-3. 3x3的卷积核表现的不错,那更小的卷积核是不是会更好呢?比如2x2。对此,v2在17x17的梯度中使用1 \* n和n \* 1这种非对称的卷积来代替n \* n的对称卷积,既降低网络的参数,又增加了网络的深度(实验证明,该结构放于网络中部,取n=7,准确率更高),如下。(基于原则3)
-
-
-
-
-
-
-
-4. 在梯度为8x8时使用可以增加滤波器输出的模块(如下图),以此来产生高维的稀疏特征。(基于原则2)
-
-
-
-5. 输入从224x224变为229x229。
-
-最后实现的Inception v2的结构如下表。
-
-
-
-
-
-
-经过网络的改进,inception v2得到更低的识别误差率,与其他网络识别误差率对比如表所示。
-
-
-
-
-如表,inception v2相比inception v1在imagenet的数据集上,识别误差率由29%降为23.4%。
-
-## 4.7.3 Inception v3
-
-
-inception模块之间特征图的缩小,主要有下面两种方式:
-
-
-
-
-右图是先进行inception操作,再进行池化来下采样,但是这样参数量明显多于左图(比较方式同前文的降维后inception模块),因此v2采用的是左图的方式,即在不同的inception之间(35/17/8的梯度)采用池化来进行下采样。
-
-
-但是,左图这种操作会造成表达瓶颈问题,也就是说特征图的大小不应该出现急剧的衰减(只经过一层就骤降)。如果出现急剧缩减,将会丢失大量的信息,对模型的训练造成困难。(上文提到的原则1)
-
-
-因此,在2015年12月提出的Inception V3结构借鉴inception的结构设计了采用一种并行的降维结构,如下图:
-
-
-
- 具体来说,就是在35/17/8之间分别采用下面这两种方式来实现特征图尺寸的缩小,如下图:
-
-
-
-figure 5' 35/17之间的特征图尺寸减小
-
-
-
-figure 6' 17/8之间的特征图尺寸缩小
-
-这样就得到Inception v3的网络结构,如表所示。
-
-
-
-## 4.7.4 Inception V4
-
-
-其实,做到现在,inception模块感觉已经做的差不多了,再做下去准确率应该也不会有大的改变。但是谷歌这帮人还是不放弃,非要把一个东西做到极致,改变不了inception模块,就改变其他的。
-
-
-因此,作者Christian Szegedy设计了inception v4的网络,将原来卷积、池化的顺次连接(网络的前几层)替换为stem模块,来获得更深的网络结构。stem模块结构如下
-
-
-stem模块
-
-
-
-
-inception v4 中的inception模块(分别为inception A inception B inception C
-
-
-
-
-inception v4中的reduction模块(分别为reduction A reduction B)
-
-
-最终得到的inception v4结构如下图。
-
-## 4.7.5 Inception-ResNet-v2
-
-
-ResNet(该网络介绍见卷积神经网络结构简述(三)残差系列网络)的结构既可以加速训练,还可以提升性能(防止梯度弥散);Inception模块可以在同一层上获得稀疏或非稀疏的特征。有没有可能将两者进行优势互补呢?
-
-
-Christian Szegedy等人将两个模块的优势进行了结合,设计出了Inception-ResNet网络。
-
-
-(inception-resnet有v1和v2两个版本,v2表现更好且更复杂,这里只介绍了v2)
-
-
-inception-resnet的成功,主要是它的inception-resnet模块。
-
-
-inception-resnet v2中的Inception-resnet模块如下图
-
-
-
-
-Inception-resnet模块(分别为inception-resnet-A inception-resnet-B inception-resnet-C)
-
-
-Inception-resnet模块之间特征图尺寸的减小如下图。(类似于inception v4)
-
-
-
-
-inception-resnet-v2中的reduction模块(分别为reduction A reduction B)
-
-
-最终得到的Inception-ResNet-v2网络结构如图(stem模块同inception v4)。
-
-# 4.8 ResNet及其变体
-
-http://www.sohu.com/a/157818653_390227
-
-
-自从AlexNet在LSVRC2012分类比赛中取得胜利之后,深度残差网络(deep Residual Network)可以说成为过去几年中,在计算机视觉、深度学习社区领域中最具突破性的成果了。ResNet可以实现高达数百,甚至数千个层的训练,且仍能获得超赞的性能。
-
-
-得益于其强大的表征能力,许多计算机视觉应用在图像分类以外领域的性能得到了提升,如对象检测和人脸识别。
-
-
-自从2015年ResNet进入人们的视线,并引发人们思考之后,许多研究界人员已经开始研究其成功的秘诀,并在架构中纳入了许多新的改进。本文分为两部分,第一部分我将为那些不熟悉ResNet的人提供一些相关的背景知识,第二部分我将回顾一些我最近读过的关于ResNet架构的不同变体及其论文的相关阐述。
-## 4.8.1 重新审视ResNet
-
-根据泛逼近性原理(universal approximation theorem),我们知道,如果给定足够的容量,一个具有单层的前馈网络足以表示任何函数。然而,该层可能是巨大的,且网络可能容易过度拟合数据。因此,研究界有一个共同的趋势,即我们的网络架构需要更深。
-
-
-自从AlexNet投入使用以来,最先进的卷积神经网络(CNN)架构越来越深。虽然AlexNet只有5层卷积层,但VGG网络和GoogleNet(代号也为Inception_v1)分别有19层和22层。
-
-
-但是,如果只是通过简单地将层叠加在一起,增加网络深度并不会起到什么作用。由于有着臭名昭著的梯度消失问题,深层网络是难以进行训练的,因为梯度反向传播到前层,重复乘法可能使梯度无穷小,而造成的结果就是,随着网络的深层,其性能趋于饱和,或者甚至开始迅速退化。
-
-
-
-
-增加网络深度导致性能下降
-
-
-其实早在ResNet之前,已经有过好几种方法来处理梯度消失问题,例如,在中间层增加辅助损失作为额外的监督,但遗憾的是,似乎没有一个方法可以真正解决这个问题。
-
-
-ResNet的核心思想是引入所谓的“身份近路连接(identity shortcut connection)”,可以跳过一层或多层,如下图所示:
-
-
-
-## 4.8.2 残差块
-
-《用于图像识别的深度残差学习》(arXiv:1512.03385,2015)的作者认为,堆积层不应该降低网络性能,因为我们可以简单地在当前网络上堆积身份映射(层不做任何事情),并且所得到的架构将执行相同的操作。这表明,较深的模型所产生的训练误差不应该比较浅的模型高。他们假设让堆积层适应残差映射比使它们直接适应所需的底层映射要容易得多。上图的残差块可以明确地使它做到这一点。
-
-
-
-## 4.8.3 ResNet架构
-
-
-事实上,ResNet并不是第一个利用近路连接、Highway Networks引入门控近路连接的。这些参数化门控制允许多少信息流过近路(shortcut)。类似的想法可以在长短期记忆网络(LSTM)单元中找到,其中存在参数化的忘记门,其控制多少信息将流向下一个时间步。因此,ResNet可以被认为是Highway Networks的一种特殊情况。
-
-
-然而,实验表明,Highway Networks的性能并不如ResNet,因为Highway Networks的解决方案空间包含ResNet,因此它应该至少表现得像ResNet一样好。这就表明,保持这些“梯度公路”干净简洁比获取更大的解决方案空间更为重要。
-
-
-照着这种直觉,《用于图像识别的深度残差学习》的作者改进了残差块,并提出了一个残差块的预激活变体,其中梯度可以畅通无阻地通过快速连接到任何其他的前层。事实上,在《用于图像识别的深度残差学习》中表明,使用原始的残差块,训练1202层ResNet所展示的性能比其训练110层对等物要差得多。
-
-
-
-## 4.8.4 残差块的变体
-
-
-《深度残差网络中的身份映射》的作者通过实验证明,他们现在可以训练一种1001层的深度ResNet,以超越其较浅层的对手。 由于其令人信服的结果,ResNet迅速成为各种计算机视觉任务中最流行的架构之一。
-
-
-ResNet的最新变体和阐述
-
-
-随着ResNet在研究界越来越受欢迎,其架构获得大量研究。在本节中,我将首先介绍几种基于ResNet的新架构,然后介绍一篇论文,阐述一下将ResNet作为许多小型网络的集合的缘由。
-
-## 4.8.5 ResNeXt
-
-
-S. Xie,R. Girshick,P. Dollar,Z. Tu和 K. He在《深度神经网络的聚集残差变换》中提出了一个代号为ResNeXt的ResNet变体,它具有以下构建块:
-
-
-
-
-左:《用于图像识别的深度残差学习》中所提及的构建块,右图: ResNeXt构建块 基数=32
-
-
-这可能看起来很熟悉,因为它非常类似于《IEEE计算机视觉与模式识别会议论文集》中《Going deeper with convolutions》的Inception模块,它们都遵循“拆分-转换-合并”范式,除了在这个变体中,不同路径的输出通过将它们相加在一起而被合并,而在《Going deeper with convolutions》中它们是深度连接的。另一个区别是,在《Going deeper with convolutions》中,每个路径彼此互不相同(1x1,3x3和5x5卷积),而在此架构中,所有路径共享相同的拓扑。
-
-
-作者介绍了一个称为 “基数(cardinality)”的超参数——独立路径的数量,以提供调整模型容量的新方式。实验表明,可以通过增加基数,而不是深度或宽度,来更加有效地获得准确度。作者指出,与Inception相比,这种新颖的架构更容易适应新的数据集/任务,因为它具有一个简单的范式,且只有一个超参数被调整,而Inception却具有许多超参数(如每个路径中卷积层内核大小)待调整。
-
-
-这个新颖的构建块有如下三种等效形式:
-
-
-
-实际上,“分割-变换-合并”通常是通过点分组卷积层来完成的,它将其输入分成特征映射组,并分别执行正常卷积,其输出被深度级联,然后馈送到1x1卷积层。
-
-## 4.8.6 Densely Connected CNN
-
-
-Huang 等在《密集卷积网络》中提出了一种称为DenseNet的新型架构,进一步利用近路连接的效果—将所有层直接互连在一起。在这种新颖的架构中,每层的输入由所有较早层的特征映射组成,其输出传递给每个后续层。特征映射与深度级联聚合。
-
-
-
-
-《深度神经网络的聚集残差变换》的作者除了应对梯度消失问题外,还认为这种架构还鼓励特征重用,从而使得网络具有高度的参数效率。一个简单的解释是,在《用于图像识别的深度残差学习》和《深度残差网络中的身份映射》中,身份映射的输出被添加到下一个块,如果两层的特征映射具有非常不同的分布,这可能会阻碍信息流。因此,级联特征映射可以保留所有特征映射并增加输出的方差,从而鼓励特征重用。
-
-
-
-
-遵循这个范式,我们知道第l层将具有k \* (l-1)+ k_0个输入特征映射,其中k_0是输入图像中的通道数。作者使用一个称为增长率(k)的超参数,防止网络生长过宽,他们还使用1x1卷积瓶颈层,以减少昂贵的3x3卷积之前的特征映射的数量。整体结构如下表所示:
-
-
-
-## 4.8.7 ResNet作为小型网络的组合
-
-
-《具有随机深度的深度网络》提出了一种反直觉的方式,训练一个非常深层的网络,通过在训练期间随机丢弃它的层,并在测试时间内使用完整的网络。Veit等人有一个更反直觉的发现:我们实际上可以删除一些已训练的ResNet的一些层,但仍然具有可比性能。这使得ResNet架构更加有趣,该论文亦降低了VGG网络的层,并大大降低了其性能。
-该论文首先提供了ResNet的一个简单的视图,使事情更清晰。在我们展开网络架构之后,这是很显而易见的,具有i个残差块的ResNet架构具有2 \* \* i个不同的路径(因为每个残差块提供两个独立的路径)。
-
-
-
-
-鉴于上述发现,我们很容易发现为什么在ResNet架构中删除几层,对于其性能影响不大——架构具有许多独立的有效路径,在我们删除了几层之后,它们大部分保持不变。相反,VGG网络只有一条有效的路径,所以删除一层是唯一的途径。
-
-
-作者还进行了实验,表明ResNet中的路径集合具有集合行为。他们是通过在测试时间删除不同数量的层,然后查看网络的性能是否与已删除层的数量平滑相关,这样的方式做到的。结果表明,网络确实表现得像集合,如下图所示:
-
-
-
-## 4.8.8 ResNet中路径的特点
-
-
-最后,作者研究了ResNet中路径的特点:
-
-
-很明显,所有可能的路径长度的分布都遵循二项式分布,如(a)所示。大多数路径经过19到35个残差块。
-
-
-
-
-调查路径长度与经过其的梯度大小之间的关系,同时获得长度为k的路径的梯度幅度,作者首先将一批数据馈送给网络,随机抽取k个残差块。当反向传播梯度时,它们仅传播到采样残余块的权重层。(b)表明随着路径变长,梯度的大小迅速下降。
-
-
-我们现在可以将每个路径长度的频率与其预期的梯度大小相乘,以了解每个长度的路径对于训练有多少帮助,如(c)所示。令人惊讶的是,大多数贡献来自长度为9至18的路径,但它们仅占总路径的一小部分,如(a)所示。这是一个非常有趣的发现,因为它表明ResNet并没有解决长路径上的梯度消失问题,而是通过缩短其有效路径,ResNet实际上能够实现训练非常深度的网络。
-
-
-http://www.sohu.com/a/157818653_390227
-
-
-# 4.9 为什么现在的CNN模型都是在GoogleNet、VGGNet或者AlexNet上调整的?
-
-
-https://www.zhihu.com/question/43370067?sort=created
-
-
-作者:知乎用户
-
-链接:https://www.zhihu.com/question/43370067/answer/128904008
-来源:知乎
-著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
-
-
-1. 那是因为你看到的大部分是公开的论文,公开的论文需要一个标准的baseline及在baseline上改进的比较,因此大家会基于一个公认的baseline开始做实验大家才比较信服。常见的比如各种检测分割的问题都会基于VGG或者Resnet101这样的基础网络。而这类型paper很多,就会有种业内只有这几个模型的错觉
-
-
-2. 发表论文的同学多数是在校的phd同学,首先大家有强大的科研压力和ddl的压力,时间和精力只允许大家在有限的范围探索。因此基于vision问题的特性进行各种模型和算法方案的改进肯定是更有novelty(也是更符合发paper的思路),所以有限的精力就放在了另外的方面而继续沿用目前VGG/GoogleNet/AlexNet/Resnet这样的baseline
-
-
-3. 进行基本模型的改进需要大量的实验和尝试,很有可能投入产出比比较小。能做到Kaiming ResNet这样的工作真是需要大量的实验积累加强大的灵感,真是偶像。我们大部分人自己的实验过程,很多之前预想的可能会work的idea经过尝试可能提升有限(失望脸,没法毕业怎么办)。基于我们今年参与ImageNet的经历来讲,对于深度学习,很大部分可以提升性能的点在于一些对于细节的精确把握。因此你可以看到许多排名靠前的队伍最后讲的关键技术点似乎都是tricks。而这样精确细节的把握是需要大量的时间和计算资源的,往往在学校不可行。因此有大量计算资源的比如香港中文大学,我司商汤科技,公安三所,海康等成绩靠前。PS,我们之后会公布我们今年参加ImageNet Scene Parsing比赛拿到第一的技术方案(paper+code+model),实际构成是一些insights(可以写paper的技术点)加大量的tricks(好像不太容易写paper)。敬请期待。
-
-
-4. 如果所有人的目标都是ImageNet/VOC/Kitti/Cityscapes这种标准数据库拼性能的话,大家会慢慢收敛到比较大的网络,比如你提到的这些。但是实际上也有很多讨论不同模型结构和计算性能的文章,拿Kaiming偶像的其他文章举例(https://arxiv.org/abs/1412.1710,https://arxiv.org/abs/1411.4229),都是分析的很深入浅出的好的文章。但是由于不符合发paper一定要state-of-the-art且可比较的性能的基本法,因此之后follow在这样的网络结构上继续做的人就很有限。
-
-
-5. **在实际的应用场景中,其实是有大量的非标准模型的配置。** 比如我司在做的人脸关键点tracking可以在低端的android手机上达到5ms的运行速度(很差的手机和CPU速度差约50倍,CPU和GPU速度差约10-20倍?。。),基于的也是深度学习的网络;比如我们自己团队做的人像分割,也可以在PC CPU上达到接近800fps的速度。这些所有的深度学习的网络结构研究,基于的目标是能够在限制的环境中达到最优的性能,同时会兼顾各种平台不同的优化方案调整网络结构。其中的黑科技非常多,主要是对基础网络的结构改进,肯定不会是VGG/AlexNet/GoogleNet/ResNet152这种庞然大物。这些技术也是大家在玩FaceU,各种直播平台的贴纸和之后其他的酷炫产品时,已经不知不觉已经享用到的深度学习的成果。不过由于是正在赚钱的产品(也是因为大家非常忙懒的写paper)暂时没有对学术界公开这些技术背后的网络结构。不过欢迎大家来实习亲自参与和实现这些改变未来的技术~
-
-作者:孔涛
-链接:https://www.zhihu.com/question/43370067/answer/129040676
-来源:知乎
-著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
-
-
-1. **这些网络都是一些知名的研究机构设计出来的,为领域提供了一个baseline** 。做深度学习的相关研究,一个很重要的点在于将自己的方法和其他人的方法进行对比。对比的时候就要讲究公平性的问题。在ResNet出来之前,多数研究者在基于VGG做相关领域的研究,这样在相同的网络深度下,就检验自身提出的东西的有效性了。还有整个科研界对于VGG、AlexNet、ResNet这些网络有一个基本的认识,你提出的方法在这种baseline下能到什么样的效果大家心里有数,比如在目标检测这个任务中,基于VGG的网络在COCO上边最多能做到27%-28%的mAP,而ResNet就可以做到30以上,这样就便于对比和评价了。再比如一开始用于语义分割的FCN是基于VGG的,ResNet出来之后很容易的变成基于ResNet的,这也侧面说明了方法的有效性。
-
-
-2. 这个领域只有一小部分人是在研究分类的网络结构,**其他的应用的研究者** ,包括视觉、自然语言等**更专注于本领域的内部知识** ,在一个base网络的基础之上进行修改,以验证自己方法的有效性。而这些网络正好提供了这样的baseline,所以何乐而不为呢。自己设计的网络结构有可能也会达到很好的效果,但这就偏离了自己本身的研究点。当然如果一个人足够厉害,比如这篇文章(YOLO: Real-Time Object Detection),作者完全是自己设计、训练的网络结构,这也是完全没有问题的。**研究来讲,最终的准确率只是追求的一个方面** 。更重要的,是提供解决问题的一个新途径、思路或者方法。如果大家都去拼准确率、拼机器、搞更深的模型,这个领域就不会发展到现在这个地步了。另外,很多高校,根本就没有这种条件来做这样的事情。
-
-
-3. **科研与工业应用的区别。** 科研界基本上都在这些现有的模型的基础之上做一些改进,而实际的应用中会遇到各种各样的问题(数据标注、计算资源、效率等)。据我所知,一些机构在实际场景中,都在训练适合于自己应用的模型,这些模型可以达到相当好的性能。而这些涉及到商业的东西并没有放出来供大家使用。
-
+# 第四章 经典网络
+## 4.1 LetNet5
+一种典型的用来识别数字的卷积网络是LeNet-5。
+## 4.1.1 模型结构
+
+
+
+## 4.1.2 模型结构
+LeNet-5共有7层,不包含输入,每层都包含可训练参数;每个层有多个Feature Map,每个FeatureMap通过一种卷积滤波器提取输入的一种特征,然后每个FeatureMap有多个神经元。
+
+1. C1层是一个卷积层
+输入图片:32 \* 32
+卷积核大小:5 \* 5
+卷积核种类:6
+输出featuremap大小:28 \* 28 (32-5+1)
+神经元数量:28 \* 28 \* 6
+可训练参数:(5 \* 5+1) \* 6(每个滤波器5 \* 5=25个unit参数和一个bias参数,一共6个滤波器)
+连接数:(5 \* 5+1) \* 6 \* 28 \* 28
+
+2. S2层是一个下采样层
+输入:28 \* 28
+采样区域:2 \* 2
+采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid
+采样种类:6
+输出featureMap大小:14 \* 14(28/2)
+神经元数量:14 \* 14 \* 6
+可训练参数:2 \* 6(和的权+偏置)
+连接数:(2 \* 2+1) \* 6 \* 14 \* 14
+S2中每个特征图的大小是C1中特征图大小的1/4
+
+3. C3层也是一个卷积层
+输入:S2中所有6个或者几个特征map组合
+卷积核大小:5 \* 5
+卷积核种类:16
+输出featureMap大小:10 \* 10
+C3中的每个特征map是连接到S2中的所有6个或者几个特征map的,表示本层的特征map是上一层提取到的特征map的不同组合
+存在的一个方式是:C3的前6个特征图以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。然后的3个以不相邻的4个特征图子集为输入。最后一个将S2中所有特征图为输入。 则:可训练参数:6 \* (3 \* 25+1)+6 \* (4 \* 25+1)+3 \* (4 \* 25+1)+(25 \* 6+1)=1516
+连接数:10 \* 10 \* 1516=151600
+
+4. S4层是一个下采样层
+输入:10 \* 10
+采样区域:2 \* 2
+采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid
+采样种类:16
+输出featureMap大小:5 \* 5(10/2)
+神经元数量:5 \* 5 \* 16=400
+可训练参数:2 \* 16=32(和的权+偏置)
+连接数:16 \* (2 \* 2+1) \* 5 \* 5=2000
+S4中每个特征图的大小是C3中特征图大小的1/4
+
+5. C5层是一个卷积层
+输入:S4层的全部16个单元特征map(与s4全相连)
+卷积核大小:5 \* 5
+卷积核种类:120
+输出featureMap大小:1 \* 1(5-5+1)
+可训练参数/连接:120 \* (16 \* 5 \* 5+1)=48120
+
+6. F6层全连接层
+输入:c5 120维向量
+计算方式:计算输入向量和权重向量之间的点积,再加上一个偏置,结果通过sigmoid函数
+可训练参数:84 \* (120+1)=10164
+## 4.1.3 模型特性
+- 卷积网络使用一个3层的序列:卷积、池化、非线性——这可能是自这篇论文以来面向图像的深度学习的关键特性!
+- 使用卷积提取空间特征
+- 使用映射的空间均值进行降采样
+- tanh或sigmoids非线性
+- 多层神经网络(MLP)作为最终的分类器
+- 层间的稀疏连接矩阵以避免巨大的计算开销
+
+# 4.2 AlexNet
+## 4.2.1 模型结构
+
+
+
+## 4.2.2 模型解读
+
+1. conv1阶段DFD(data flow diagram):
+
+
+
+
+第一层输入数据为原始的227 \* 227 \* 3的图像,这个图像被11 \* 11 \* 3的卷积核进行卷积运算,卷积核对原始图像的每次卷积都生成一个新的像素。卷积核沿原始图像的x轴方向和y轴方向两个方向移动,移动的步长是4个像素。因此,卷积核在移动的过程中会生成(227-11)/4+1=55个像素(227个像素减去11,正好是54,即生成54个像素,再加上被减去的11也对应生成一个像素),行和列的55 \* 55个像素形成对原始图像卷积之后的像素层。共有96个卷积核,会生成55 \* 55 \* 96个卷积后的像素层。96个卷积核分成2组,每组48个卷积核。对应生成2组55 \* 55 \* 48的卷积后的像素层数据。这些像素层经过relu1单元的处理,生成激活像素层,尺寸仍为2组55 \* 55 \* 48的像素层数据。 这些像素层经过pool运算(池化运算)的处理,池化运算的尺度为3 \* 3,运算的步长为2,则池化后图像的尺寸为(55-3)/2+1=27。 即池化后像素的规模为27 \* 27 \* 96;然后经过归一化处理,归一化运算的尺度为5 \* 5;第一卷积层运算结束后形成的像素层的规模为27 \* 27 \* 96。分别对应96个卷积核所运算形成。这96层像素层分为2组,每组48个像素层,每组在一个独立的GPU上进行运算。 反向传播时,每个卷积核对应一个偏差值。即第一层的96个卷积核对应上层输入的96个偏差值。
+
+2. conv2阶段DFD(data flow diagram):
+
+
+
+
+第二层输入数据为第一层输出的27 \* 27 \* 96的像素层,为便于后续处理,每幅像素层的左右两边和上下两边都要填充2个像素;27 \* 27 \* 96的像素数据分成27 \* 27 \* 48的两组像素数据,两组数据分别再两个不同的GPU中进行运算。每组像素数据被5 \* 5 \* 48的卷积核进行卷积运算,卷积核对每组数据的每次卷积都生成一个新的像素。卷积核沿原始图像的x轴方向和y轴方向两个方向移动,移动的步长是1个像素。因此,卷积核在移动的过程中会生成(27-5+2 \* 2)/1+1=27个像素。(27个像素减去5,正好是22,在加上上下、左右各填充的2个像素,即生成26个像素,再加上被减去的5也对应生成一个像素),行和列的27 \* 27个像素形成对原始图像卷积之后的像素层。共有256个5 \* 5 \* 48卷积核;这256个卷积核分成两组,每组针对一个GPU中的27 \* 27 \* 48的像素进行卷积运算。会生成两组27 \* 27 \* 128个卷积后的像素层。这些像素层经过relu2单元的处理,生成激活像素层,尺寸仍为两组27 \* 27 \* 128的像素层。
+这些像素层经过pool运算(池化运算)的处理,池化运算的尺度为3 \* 3,运算的步长为2,则池化后图像的尺寸为(57-3)/2+1=13。 即池化后像素的规模为2组13 \* 13 \* 128的像素层;然后经过归一化处理,归一化运算的尺度为5 \* 5;第二卷积层运算结束后形成的像素层的规模为2组13 \* 13 \* 128的像素层。分别对应2组128个卷积核所运算形成。每组在一个GPU上进行运算。即共256个卷积核,共2个GPU进行运算。
+反向传播时,每个卷积核对应一个偏差值。即第一层的96个卷积核对应上层输入的256个偏差值。
+
+3. conv3阶段DFD(data flow diagram):
+
+
+
+
+第三层输入数据为第二层输出的2组13 \* 13 \* 128的像素层;为便于后续处理,每幅像素层的左右两边和上下两边都要填充1个像素;2组像素层数据都被送至2个不同的GPU中进行运算。每个GPU中都有192个卷积核,每个卷积核的尺寸是3 \* 3 \* 256。因此,每个GPU中的卷积核都能对2组13 \* 13 \* 128的像素层的所有数据进行卷积运算。卷积核对每组数据的每次卷积都生成一个新的像素。卷积核沿像素层数据的x轴方向和y轴方向两个方向移动,移动的步长是1个像素。因此,运算后的卷积核的尺寸为(13-3+1 \* 2)/1+1=13(13个像素减去3,正好是10,在加上上下、左右各填充的1个像素,即生成12个像素,再加上被减去的3也对应生成一个像素),每个GPU中共13 \* 13 \* 192个卷积核。2个GPU中共13 \* 13 \* 384个卷积后的像素层。这些像素层经过relu3单元的处理,生成激活像素层,尺寸仍为2组13 \* 13 \* 192像素层,共13 \* 13 \* 384个像素层。
+
+4. conv4阶段DFD(data flow diagram):
+
+
+
+
+第四层输入数据为第三层输出的2组13 \* 13 \* 192的像素层;为便于后续处理,每幅像素层的左右两边和上下两边都要填充1个像素;2组像素层数据都被送至2个不同的GPU中进行运算。每个GPU中都有192个卷积核,每个卷积核的尺寸是3 \* 3 \* 192。因此,每个GPU中的卷积核能对1组13 \* 13 \* 192的像素层的数据进行卷积运算。卷积核对每组数据的每次卷积都生成一个新的像素。卷积核沿像素层数据的x轴方向和y轴方向两个方向移动,移动的步长是1个像素。因此,运算后的卷积核的尺寸为(13-3+1 \* 2)/1+1=13(13个像素减去3,正好是10,在加上上下、左右各填充的1个像素,即生成12个像素,再加上被减去的3也对应生成一个像素),每个GPU中共13 \* 13 \* 192个卷积核。2个GPU中共13 \* 13 \* 384个卷积后的像素层。这些像素层经过relu4单元的处理,生成激活像素层,尺寸仍为2组13 \* 13 \* 192像素层,共13 \* 13 \* 384个像素层。
+
+ 5. conv5阶段DFD(data flow diagram):
+
+ 
+
+
+第五层输入数据为第四层输出的2组13 \* 13 \* 192的像素层;为便于后续处理,每幅像素层的左右两边和上下两边都要填充1个像素;2组像素层数据都被送至2个不同的GPU中进行运算。每个GPU中都有128个卷积核,每个卷积核的尺寸是3 \* 3 \* 192。因此,每个GPU中的卷积核能对1组13 \* 13 \* 192的像素层的数据进行卷积运算。卷积核对每组数据的每次卷积都生成一个新的像素。卷积核沿像素层数据的x轴方向和y轴方向两个方向移动,移动的步长是1个像素。因此,运算后的卷积核的尺寸为(13-3+1 \* 2)/1+1=13(13个像素减去3,正好是10,在加上上下、左右各填充的1个像素,即生成12个像素,再加上被减去的3也对应生成一个像素),每个GPU中共13 \* 13 \* 128个卷积核。2个GPU中共13 \* 13 \* 256个卷积后的像素层。这些像素层经过relu5单元的处理,生成激活像素层,尺寸仍为2组13 \* 13 \* 128像素层,共13 \* 13 \* 256个像素层。
+
+2组13 \* 13 \* 128像素层分别在2个不同GPU中进行池化(pool)运算处理。池化运算的尺度为3 \* 3,运算的步长为2,则池化后图像的尺寸为(13-3)/2+1=6。 即池化后像素的规模为两组6 \* 6 \* 128的像素层数据,共6 \* 6 \* 256规模的像素层数据。
+
+
+6. fc6阶段DFD(data flow diagram):
+
+
+
+
+第六层输入数据的尺寸是6 \* 6 \* 256,采用6 \* 6 \* 256尺寸的滤波器对第六层的输入数据进行卷积运算;每个6 \* 6 \* 256尺寸的滤波器对第六层的输入数据进行卷积运算生成一个运算结果,通过一个神经元输出这个运算结果;共有4096个6 \* 6 \* 256尺寸的滤波器对输入数据进行卷积运算,通过4096个神经元输出运算结果;这4096个运算结果通过relu激活函数生成4096个值;并通过drop运算后输出4096个本层的输出结果值。 由于第六层的运算过程中,采用的滤波器的尺寸(6 \* 6 \* 256)与待处理的feature map的尺寸(6 \* 6 \* 256)相同,即滤波器中的每个系数只与feature map中的一个像素值相乘;而其它卷积层中,每个滤波器的系数都会与多个feature map中像素值相乘;因此,将第六层称为全连接层。 第五层输出的6 \* 6 \* 256规模的像素层数据与第六层的4096个神经元进行全连接,然后经由relu6进行处理后生成4096个数据,再经过dropout6处理后输出4096个数据。
+
+7. fc7阶段DFD(data flow diagram):
+
+
+
+
+第六层输出的4096个数据与第七层的4096个神经元进行全连接,然后经由relu7进行处理后生成4096个数据,再经过dropout7处理后输出4096个数据。
+
+8. fc8阶段DFD(data flow diagram):
+
+
+
+
+第七层输出的4096个数据与第八层的1000个神经元进行全连接,经过训练后输出被训练的数值。
+
+## 4.2.3模型特性
+- 使用ReLU作为非线性
+- 使用dropout技术选择性地忽略训练中的单个神经元,避免模型的过拟合
+- 重叠最大池化(overlapping max pooling),避免平均池化(average pooling)的平均效应
+- 使用NVIDIA GTX 580 GPU减少训练时间
+- 当时,GPU比CPU提供了更多的核心,可以将训练速度提升10倍,从而允许使用更大的数据集和更大的图像。
+
+
+# 4.3 可视化ZFNet-解卷积
+## 4.3.1 基本的思想及其过程
+
+
+可视化技术揭露了激发模型中每层单独的特征图,也允许观察在训练阶段特征的演变过程且诊断出模型的潜在问题。
+
+
+可视化技术用到了多层解卷积网络,即由特征激活返回到输入像素空间。
+
+ 同时进行了分类器输出的敏感性分析,即通过阻止部分输入图像来揭示那部分对于分类是重要的。
+
+ 这个可视化技术提供了一个非参数的不变性来展示来自训练集的哪一块激活哪个特征图,不仅需要裁剪输入图片,而且自上而下的投影来揭露来自每块的结构激活一个特征图。
+
+ 可视化技术依赖于解卷积操作,即卷积操作的逆过程,将特征映射到像素上。由于解卷积是一种非监督学习,因此只能作为已经训练过的卷积网的探究,不能用作任何学习用途。
+
+## 4.3.2 卷积与解卷积
+
+
+下图为卷积过程
+
+
+
+
+
+
+
+解卷积过程
+
+
+
+
+
+
+
+**非池化**:池化操作是非可逆的,但是我们可以用一组转换变量switch在每个池化区域中通过记录最大值的位置来获得一个近似逆。在解卷积网中,非池化操作使用这些转换来放置上述最大值的位置,保存激活的位置,其余位置都置0。
+
+
+**纠正**:卷积网中使用非线性的ReLU来修改特征图来确保特征图总是正值。为了获得在每层的有效(也应该是正值)的特征重建,也在解卷积网中利用了ReLU。
+
+
+**滤波**:解卷积网中利用卷积网中的相同的滤波器的转置应用到纠正过的特征图中,而不是上层的输出。也就是对滤波器进行水平方向和垂直方向的翻转。从高层向下投影使用转换变量switch,这个转化变量switch产生自向上的卷积网的最大池化操作。由于重建由一个单独的激活获得,因此也就只对应于原始输入图像的一小块。
+
+
+
+
+上图左半部分是一个解卷积层,右半部分为一个卷积层。解卷积层将会重建一个来自下一层的卷积特征近似版本。图中使用switc来记录在卷积网中进行最大池化操作时每个池化区域的局部最大值的位置,经过非池化操作之后,原来的非最大值的位置都置为0。
+
+## 4.3.3 卷积可视化
+
+预处理:网络对输入图片进行预处理,裁剪图片中间的256x256区域,并减去整个图像每个像素的均值,然后用10个不同的对256x256图像进行224x224的裁剪(中间区域加上四个角落,以及他们的水平翻转图像),对以128个图片分的块进行随机梯度下降法来更新参数。起始学习率为 ,动量为0.9,当验证集误差停滞时,手动调整学习率。在全连接网络中使用概率为0.5的dropout,并且所有权值都初始化为 ,偏置设为0。 在训练时第一层的可视化揭露了一些占主导的因素,为了了解这些,我们采用重新归一化每个卷积层的滤波器,这些滤波器的均方根值超过了一个固定半径的 。这是非常关键的,尤其是在模型中的第一层,因为输出图片大约在[-128,128]的范围内。
+
+
+特征可视化:每个特征单独投影到像素空间揭露了不同的结构能刺激不同的一个给定的特征图,因此展示了它对于变形的输入内在的不变性。下图即在一个已经训练好的网络中可视化后的图。
+
+
+
+
+由上图可以看到第二层应对角落和其他边缘或者颜色的结合;第三层有更加复杂的不变性,捕捉到了相似的纹理;第四层显示了特定类间显著的差异性;第五层显示了有显著构成变化的整个物体。
+
+
+训练时的特征演变过程:外表突然的变化导致图像中的一个变换即产生了最强烈的激活。模型的底层在少数几个epoches就能收敛聚集,然而上层在一个相当多的epoches(40-50)之后才能有所变化,这显示了让模型完全训练到完全收敛的必要性。可以由下图看到颜色对比度都逐步增强。
+
+
+
+
+**特征不变性:** 一般来说,小的变化对于模型的第一层都有非常大的影响,但对于最高层的影响却几乎没有。对于图像的平移、尺度、旋转的变化来说,网络的输出对于平移和尺度变化都是稳定的,但却不具有旋转不变性,除非目标图像时旋转对称的。下图为分别对平移,尺度,旋转做的分析图。
+
+
+
+
+上图按行顺序分别为对5类图像进行不同程度的垂直方向上的平移、尺度变换、旋转对输出结果影响的分析图。按列顺序分别为原始变换图像,第一层中原始图片和变换后的图片的欧氏距离,第7层中原始图片和变换后的图片的欧氏距离,变换后图片被正确分类的概率图。
+
+
+可视化不仅能够看到一个训练完的模型的内部操作,而且还能帮助选择好的网络结构。
+
+## 4.3.4 ZFNe和AlexNet比较
+
+
+ZFNet的网络结构实际上与AlexNet没有什么很大的变化,差异表现在AlexNet用了两块GPU的稀疏连接结构,而ZFNet只用了一块GPU的稠密连接结构;同时,由于可视化可以用来选择好的网络结构,通过可视化发现AlexNet第一层中有大量的高频和低频信息的混合,却几乎没有覆盖到中间的频率信息;且第二层中由于第一层卷积用的步长为4太大了,导致了有非常多的混叠情况;因此改变了AlexNet的第一层即将滤波器的大小11x11变成7x7,并且将步长4变成了2,下图为AlexNet网络结构与ZFNet的比较。
+
+
+
+
+
+
+# 4.4 VGG
+## 4.4.1 模型结构
+
+
+
+## 4.4.2 模型特点
+
+
+1. 整个网络都使用了同样大小的卷积核尺寸(3 \* 3)和最大池化尺寸(2 \* 2)
+
+2. 1 \* 1卷积的意义主要在于线性变换,而输入通道数和输出通道数不变,没有发生降维。
+
+
+1. 两个3 \* 3的卷积层串联相当于1个5 \* 5的卷积层,即一个像素会跟周围5 \* 5的像素产生关联,可以说感受野大小为5 \* 5。而3个3 \* 3的卷积层串联的效果则相当于1个7 \* 7的卷积层。除此之外,3个串联的3 \* 3的卷积层,拥有比1个7 \* 7的卷积层更少的参数量,只有后者的(3 \* 3 \* 3)/(7 \* 7)=55%。最重要的是,3个3 \* 3的卷积层拥有比1个7 \* 7的卷积层更多的非线性变换(前者可以使用三次ReLU激活函数,而后者只有一次),使得CNN对特征的学习能力更强。
+
+2. VGGNet在训练时有一个小技巧,先训练级别A的简单网络,再复用A网络的权重来初始化后面的几个复杂模型,这样训练收敛的速度更快。在预测时,VGG采用Multi-Scale的方法,将图像scale到一个尺寸Q,并将图片输入卷积网络计算。然后在最后一个卷积层使用滑窗的方式进行分类预测,将不同窗口的分类结果平均,再将不同尺寸Q的结果平均得到最后结果,这样可提高图片数据的利用率并提升预测准确率。在训练中,VGGNet还使用了Multi-Scale的方法做数据增强,将原始图像缩放到不同尺寸S,然后再随机裁切224´224的图片,这样能增加很多数据量,对于防止模型过拟合有很不错的效果。
+
+# 4.5 Network in Network
+## 4.5.1 模型结构
+
+
+
+## 4.5.2 模型创新点
+
+
+论文的创新点:
+
+1. 提出了抽象能力更高的Mlpconv层
+
+2. 提出了Global Average Pooling(全局平均池化)层
+
+- Mlpconv层
+
+ 传统的卷积神经网络一般来说是由线性卷积层、池化层、全连接层堆叠起来的网络,卷积层通过线性滤波器进行线性卷积运算,然后在接个非线性激活函数最终生成特征图。而这种卷积滤波器是一种GLM:(Generalized linear model)广义线性模型。然而GLM的抽象能力是比较低水平的。
+
+
+ 抽象:指得到对同一概念的不同变体保持不变的特征。
+
+
+一般用CNN进行特征提取时,其实就隐含地假设了特征是线性可分的,可实际问题往往是难以线性可分的。一般来说我们所要提取的特征一般是高度非线性的。在传统的CNN中,也许我们可以用超完备的滤波器,来提取各种潜在的特征。比如我们要提取某个特征,于是我就用了一大堆的滤波器,把所有可能的提取出来,这样就可以把我想要提取的特征也覆盖到,然而这样存在一个缺点,那就是网络太恐怖了,参数太多了。
+
+
+我们知道CNN高层特征其实是低层特征通过某种运算的组合。所以论文就根据这个想法,提出在每个局部感受野中进行更加复杂的运算,提出了对卷积层的改进算法:MLP卷积层。(这里也不知道是否有道理,因为在后面的深层网络没有提出此种说法,还是按照传统的cnn方法使用多个滤波器去学习同一特征的不同变体)。MLP中的激活函数采用的是整流线性单元(即ReLU:max(wx+b,0)。
+MLP的优点:
+
+1. 非常有效的通用函数近似器
+2. 可用BP算法训练,可以完美地融合进CNN
+3. 其本身也是一种深度模型,可以特征再利用
+
+
+
+- 全局平均池化层
+
+
+ 另一方面,传统的CNN最后一层都是全连接层,参数个数非常之多,容易引起过拟合(如Alexnet),一个CNN模型,大部分的参数都被全连接层给占用了,所以论文提出采用了全局均值池化替代全连接层。与传统的全连接层不同,我们对每个特征图一整张图片进行全局均值池化,这样每张特征图都可以得到一个输出。这样采用均值池化,连参数都省了,可以大大减小网络参数,避免过拟合,另一方面它有一个特点,每张特征图相当于一个输出特征,然后这个特征就表示了我们输出类的特征。
+
+ 全局平均池化的优势:
+ 1. 通过加强特征图与类别的一致性,让卷积结构更简单
+ 2. 不需要进行参数优化,所以这一层可以避免过拟合
+ 3. 它对空间信息进行了求和,因而对输入的空间变换更具有稳定性
+
+
+在采用了微神经网络后,让局部模型有更强的抽象能力,从而让全局平均池化能具有特征图与类别之间的一致性,同时相比传统CNN采用的全连接层,不易过拟合(因为全局平均池化本身就是一种结构性的规则项)(PS:经典CNN容易过拟合,并严重依赖用dropout进行规则化)。
+
+# 4.6 GoogleNet
+## 4.6.1 模型结构
+
+
+
+
+
+## 4.6.2 Inception 结构
+
+
+
+对上图做以下说明:
+
+1. 采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合;
+2. 之所以卷积核大小采用1. 3和5,主要是为了方便对齐。设定卷积步长stride=1之后,只要分别设定pad=0、1. 2,那么卷积之后便可以得到相同维度的特征,然后这些特征就可以直接拼接在一起了;
+3. 文章说很多地方都表明pooling挺有效,所以Inception里面也嵌入了。
+4. 网络越到后面,特征越抽象,而且每个特征所涉及的感受野也更大了,因此随着层数的增加,3x3和5x5卷积的比例也要增加。
+
+但是,使用5x5的卷积核仍然会带来巨大的计算量。 为此,文章借鉴NIN2,采用1x1卷积核来进行降维。
+
+
+例如:上一层的输出为100x100x128,经过具有256个输出的5x5卷积层之后(stride=1,pad=2),输出数据为100x100x256。其中,卷积层的参数为128x5x5x256。假如上一层输出先经过具有32个输出的1x1卷积层,再经过具有256个输出的5x5卷积层,那么最终的输出数据仍为为100x100x256,但卷积参数量已经减少为128x1x1x32 + 32x5x5x256,大约减少了4倍。
+
+具体改进后的Inception Module如下图:
+
+
+
+## 4.6.3 模型层次关系
+
+
+原始数据,输入为224 \* 224 \* 3
+
+
+第一层卷积层 conv1 ,pad是3,64个特征,7 \* 7 步长为2,输出特征为 112 \* 112 \* 64,然后进行relu,经过pool1(红色的max pool) 进行pooling 3 \* 3的核,步长为2, [(112 - 3+1)/2]+1 = 56 特征为56 \* 56 \* 64 , 然后进行norm
+
+
+第二层卷积层 conv2, pad是1,3 \* 3,192个特征,输出为56 \* 56 \* 192,然后进行relu,进行norm,经过pool2进行pooling,3 \* 3的核,步长为2 输出为28 \* 28 \* 192 然后进行split 分成四个支线
+
+
+第三层开始时 inception module ,这个的思想受到使用不同尺度的Gabor过滤器来处理多尺度问题,inception module采用不同尺度的卷积核来处理问题。3a 包含 四个支线:
+
+
+1: 64个1 \* 1的卷积核(之后进行RULE计算) 变成28 \* 28 \* 64
+
+
+2: 96个1 \* 1的卷积核 作为3 \* 3卷积核之前的reduce,变成28 \* 28 \* 96,进行relu计算后,再进行128个3 \* 3的卷积,pad为1, 28 \* 28 \* 128
+
+
+3:16个1 \* 1的卷积核 作为5 \* 5卷积核之前的reduce,变成28 \* 28 \* 16, 进行relu计算后,再进行32个5 \* 5的卷积,pad为2,变成28 \* 28 \* 32
+
+
+4:pool层,3 \* 3的核,pad为1,输出还是28 \* 28 \* 192,然后进行32个1 \* 1的卷积,变成28 \* 28 \* 32。
+
+
+将四个结果进行连接,输出为28 \* 28 \* 256
+
+
+
+然后将3a的结果又分成四条支线,开始建立3b的inception module
+
+3b
+
+1:128个1 \* 1的卷积核(之后进行RULE计算) 变成28 \* 28 \* 128
+
+2:128个1 \* 1的卷积核 作为3 \* 3卷积核之前的reduce,变成28 \* 28 \* 128, 再进行192个3 \* 3的卷积,pad为1, 28 \* 28 \* 192,进行relu计算
+
+3:32个1 \* 1的卷积核 作为5 \* 5卷积核之前的reduce,变成28 \* 28 \* 32, 进行relu计算后,再进行96个5 \* 5的卷积,pad为2,变成28 \* 28 \* 96
+
+4:pool层,3 \* 3的核,pad为1,输出还是28 \* 28 \* 256,然后进行64个1 \* 1的卷积,变成28 \* 28 \* 64。
+
+将四个结果进行连接,输出为28 \* 28 \* 480
+
+同理依次推算,数据变化如下表:
+
+
+
+
+# 4.7 Inception 系列
+## 4.7.1 Inception v1
+
+
+相比于GoogLeNet之前的众多卷积神经网络而言,inception v1采用在同一层中提取不同的特征(使用不同尺寸的卷积核),并提出了卷积核的并行合并(也称为Bottleneck layer),如下图
+
+
+
+这样的结构主要有以下改进:
+1. 一层block就包含1x1卷积,3x3卷积,5x5卷积,3x3池化(使用这样的尺寸不是必需的,可以根据需要进行调整)。这样,网络中每一层都能学习到“稀疏”(3x3. 5x5)或“不稀疏”(1x1)的特征,既增加了网络的宽度,也增加了网络对尺度的适应性;
+2. 通过deep concat在每个block后合成特征,获得非线性属性。
+
+虽然这样提高了性能,但是网络的计算量实在是太大了,因此GoogLeNet借鉴了Network-in-Network的思想,使用1x1的卷积核实现降维操作,以此来减小网络的参数量(这里就不对两种结构的参数量进行定量比较了),如图所示。
+
+
+
+
+最后实现的inception v1网络是上图结构的顺序连接,其中不同inception模块之间使用2x2的最大池化进行下采样,如表所示。
+
+
+
+如表所示,实现的网络仍有一层全连接层,该层的设置是为了迁移学习的实现(下同)。
+在之前的网络中,最后都有全连接层,经实验证明,全连接层并不是很必要的,因为可能会带来以下三点不便:
+ - 网络的输入需要固定
+ - 参数量多
+ - 易发生过拟合
+实验证明,将其替换为平均池化层(或者1x1卷积层)不仅不影响精度,还可以减少。
+
+## 4.7.2 Inception v2
+
+在V1的基础之上主要做了以下改进:
+1. 使用BN层,将每一层的输出都规范化到一个N(0,1)的正态分布,这将有助于训练,因为下一层不必学习输入数据中的偏移,并且可以专注与如何更好地组合特征(也因为在v2里有较好的效果,BN层几乎是成了深度网络的必备);
+
+
+(在Batch-normalized论文中只增加了BN层,而之后的Inception V3的论文提及到的inception v2还做了下面的优化)
+
+2. 使用2个3x3的卷积代替梯度(特征图,下同)为35x35中的5x5的卷积,这样既可以获得相同的视野(经过2个3x3卷积得到的特征图大小等于1个5x5卷积得到的特征图),还具有更少的参数,还间接增加了网络的深度,如下图。(基于原则3)
+
+
+
+
+
+3. 3x3的卷积核表现的不错,那更小的卷积核是不是会更好呢?比如2x2。对此,v2在17x17的梯度中使用1 \* n和n \* 1这种非对称的卷积来代替n \* n的对称卷积,既降低网络的参数,又增加了网络的深度(实验证明,该结构放于网络中部,取n=7,准确率更高),如下。(基于原则3)
+
+
+
+
+
+
+
+4. 在梯度为8x8时使用可以增加滤波器输出的模块(如下图),以此来产生高维的稀疏特征。(基于原则2)
+
+
+
+5. 输入从224x224变为229x229。
+
+最后实现的Inception v2的结构如下表。
+
+
+
+
+
+
+经过网络的改进,inception v2得到更低的识别误差率,与其他网络识别误差率对比如表所示。
+
+
+
+
+如表,inception v2相比inception v1在imagenet的数据集上,识别误差率由29%降为23.4%。
+
+## 4.7.3 Inception v3
+
+
+inception模块之间特征图的缩小,主要有下面两种方式:
+
+
+
+
+右图是先进行inception操作,再进行池化来下采样,但是这样参数量明显多于左图(比较方式同前文的降维后inception模块),因此v2采用的是左图的方式,即在不同的inception之间(35/17/8的梯度)采用池化来进行下采样。
+
+
+但是,左图这种操作会造成表达瓶颈问题,也就是说特征图的大小不应该出现急剧的衰减(只经过一层就骤降)。如果出现急剧缩减,将会丢失大量的信息,对模型的训练造成困难。(上文提到的原则1)
+
+
+因此,在2015年12月提出的Inception V3结构借鉴inception的结构设计了采用一种并行的降维结构,如下图:
+
+
+
+ 具体来说,就是在35/17/8之间分别采用下面这两种方式来实现特征图尺寸的缩小,如下图:
+
+
+
+figure 5' 35/17之间的特征图尺寸减小
+
+
+
+figure 6' 17/8之间的特征图尺寸缩小
+
+这样就得到Inception v3的网络结构,如表所示。
+
+
+
+## 4.7.4 Inception V4
+
+
+其实,做到现在,inception模块感觉已经做的差不多了,再做下去准确率应该也不会有大的改变。但是谷歌这帮人还是不放弃,非要把一个东西做到极致,改变不了inception模块,就改变其他的。
+
+
+因此,作者Christian Szegedy设计了inception v4的网络,将原来卷积、池化的顺次连接(网络的前几层)替换为stem模块,来获得更深的网络结构。stem模块结构如下
+
+
+stem模块
+
+
+
+
+inception v4 中的inception模块(分别为inception A inception B inception C
+
+
+
+
+inception v4中的reduction模块(分别为reduction A reduction B)
+
+
+最终得到的inception v4结构如下图。
+
+## 4.7.5 Inception-ResNet-v2
+
+
+ResNet(该网络介绍见卷积神经网络结构简述(三)残差系列网络)的结构既可以加速训练,还可以提升性能(防止梯度弥散);Inception模块可以在同一层上获得稀疏或非稀疏的特征。有没有可能将两者进行优势互补呢?
+
+
+Christian Szegedy等人将两个模块的优势进行了结合,设计出了Inception-ResNet网络。
+
+
+(inception-resnet有v1和v2两个版本,v2表现更好且更复杂,这里只介绍了v2)
+
+
+inception-resnet的成功,主要是它的inception-resnet模块。
+
+
+inception-resnet v2中的Inception-resnet模块如下图
+
+
+
+
+Inception-resnet模块(分别为inception-resnet-A inception-resnet-B inception-resnet-C)
+
+
+Inception-resnet模块之间特征图尺寸的减小如下图。(类似于inception v4)
+
+
+
+
+inception-resnet-v2中的reduction模块(分别为reduction A reduction B)
+
+
+最终得到的Inception-ResNet-v2网络结构如图(stem模块同inception v4)。
+
+# 4.8 ResNet及其变体
+
+http://www.sohu.com/a/157818653_390227
+
+
+自从AlexNet在LSVRC2012分类比赛中取得胜利之后,深度残差网络(deep Residual Network)可以说成为过去几年中,在计算机视觉、深度学习社区领域中最具突破性的成果了。ResNet可以实现高达数百,甚至数千个层的训练,且仍能获得超赞的性能。
+
+
+得益于其强大的表征能力,许多计算机视觉应用在图像分类以外领域的性能得到了提升,如对象检测和人脸识别。
+
+
+自从2015年ResNet进入人们的视线,并引发人们思考之后,许多研究界人员已经开始研究其成功的秘诀,并在架构中纳入了许多新的改进。本文分为两部分,第一部分我将为那些不熟悉ResNet的人提供一些相关的背景知识,第二部分我将回顾一些我最近读过的关于ResNet架构的不同变体及其论文的相关阐述。
+## 4.8.1 重新审视ResNet
+
+根据泛逼近性原理(universal approximation theorem),我们知道,如果给定足够的容量,一个具有单层的前馈网络足以表示任何函数。然而,该层可能是巨大的,且网络可能容易过度拟合数据。因此,研究界有一个共同的趋势,即我们的网络架构需要更深。
+
+
+自从AlexNet投入使用以来,最先进的卷积神经网络(CNN)架构越来越深。虽然AlexNet只有5层卷积层,但VGG网络和GoogleNet(代号也为Inception_v1)分别有19层和22层。
+
+
+但是,如果只是通过简单地将层叠加在一起,增加网络深度并不会起到什么作用。由于有着臭名昭著的梯度消失问题,深层网络是难以进行训练的,因为梯度反向传播到前层,重复乘法可能使梯度无穷小,而造成的结果就是,随着网络的深层,其性能趋于饱和,或者甚至开始迅速退化。
+
+
+
+
+增加网络深度导致性能下降
+
+
+其实早在ResNet之前,已经有过好几种方法来处理梯度消失问题,例如,在中间层增加辅助损失作为额外的监督,但遗憾的是,似乎没有一个方法可以真正解决这个问题。
+
+
+ResNet的核心思想是引入所谓的“身份近路连接(identity shortcut connection)”,可以跳过一层或多层,如下图所示:
+
+
+
+## 4.8.2 残差块
+
+《用于图像识别的深度残差学习》(arXiv:1512.03385,2015)的作者认为,堆积层不应该降低网络性能,因为我们可以简单地在当前网络上堆积身份映射(层不做任何事情),并且所得到的架构将执行相同的操作。这表明,较深的模型所产生的训练误差不应该比较浅的模型高。他们假设让堆积层适应残差映射比使它们直接适应所需的底层映射要容易得多。上图的残差块可以明确地使它做到这一点。
+
+
+
+## 4.8.3 ResNet架构
+
+
+事实上,ResNet并不是第一个利用近路连接、Highway Networks引入门控近路连接的。这些参数化门控制允许多少信息流过近路(shortcut)。类似的想法可以在长短期记忆网络(LSTM)单元中找到,其中存在参数化的忘记门,其控制多少信息将流向下一个时间步。因此,ResNet可以被认为是Highway Networks的一种特殊情况。
+
+
+然而,实验表明,Highway Networks的性能并不如ResNet,因为Highway Networks的解决方案空间包含ResNet,因此它应该至少表现得像ResNet一样好。这就表明,保持这些“梯度公路”干净简洁比获取更大的解决方案空间更为重要。
+
+
+照着这种直觉,《用于图像识别的深度残差学习》的作者改进了残差块,并提出了一个残差块的预激活变体,其中梯度可以畅通无阻地通过快速连接到任何其他的前层。事实上,在《用于图像识别的深度残差学习》中表明,使用原始的残差块,训练1202层ResNet所展示的性能比其训练110层对等物要差得多。
+
+
+
+## 4.8.4 残差块的变体
+
+
+《深度残差网络中的身份映射》的作者通过实验证明,他们现在可以训练一种1001层的深度ResNet,以超越其较浅层的对手。 由于其令人信服的结果,ResNet迅速成为各种计算机视觉任务中最流行的架构之一。
+
+
+ResNet的最新变体和阐述
+
+
+随着ResNet在研究界越来越受欢迎,其架构获得大量研究。在本节中,我将首先介绍几种基于ResNet的新架构,然后介绍一篇论文,阐述一下将ResNet作为许多小型网络的集合的缘由。
+
+## 4.8.5 ResNeXt
+
+
+S. Xie,R. Girshick,P. Dollar,Z. Tu和 K. He在《深度神经网络的聚集残差变换》中提出了一个代号为ResNeXt的ResNet变体,它具有以下构建块:
+
+
+
+
+左:《用于图像识别的深度残差学习》中所提及的构建块,右图: ResNeXt构建块 基数=32
+
+
+这可能看起来很熟悉,因为它非常类似于《IEEE计算机视觉与模式识别会议论文集》中《Going deeper with convolutions》的Inception模块,它们都遵循“拆分-转换-合并”范式,除了在这个变体中,不同路径的输出通过将它们相加在一起而被合并,而在《Going deeper with convolutions》中它们是深度连接的。另一个区别是,在《Going deeper with convolutions》中,每个路径彼此互不相同(1x1,3x3和5x5卷积),而在此架构中,所有路径共享相同的拓扑。
+
+
+作者介绍了一个称为 “基数(cardinality)”的超参数——独立路径的数量,以提供调整模型容量的新方式。实验表明,可以通过增加基数,而不是深度或宽度,来更加有效地获得准确度。作者指出,与Inception相比,这种新颖的架构更容易适应新的数据集/任务,因为它具有一个简单的范式,且只有一个超参数被调整,而Inception却具有许多超参数(如每个路径中卷积层内核大小)待调整。
+
+
+这个新颖的构建块有如下三种等效形式:
+
+
+
+实际上,“分割-变换-合并”通常是通过点分组卷积层来完成的,它将其输入分成特征映射组,并分别执行正常卷积,其输出被深度级联,然后馈送到1x1卷积层。
+
+## 4.8.6 Densely Connected CNN
+
+
+Huang 等在《密集卷积网络》中提出了一种称为DenseNet的新型架构,进一步利用近路连接的效果—将所有层直接互连在一起。在这种新颖的架构中,每层的输入由所有较早层的特征映射组成,其输出传递给每个后续层。特征映射与深度级联聚合。
+
+
+
+
+《深度神经网络的聚集残差变换》的作者除了应对梯度消失问题外,还认为这种架构还鼓励特征重用,从而使得网络具有高度的参数效率。一个简单的解释是,在《用于图像识别的深度残差学习》和《深度残差网络中的身份映射》中,身份映射的输出被添加到下一个块,如果两层的特征映射具有非常不同的分布,这可能会阻碍信息流。因此,级联特征映射可以保留所有特征映射并增加输出的方差,从而鼓励特征重用。
+
+
+
+
+遵循这个范式,我们知道第l层将具有k \* (l-1)+ k_0个输入特征映射,其中k_0是输入图像中的通道数。作者使用一个称为增长率(k)的超参数,防止网络生长过宽,他们还使用1x1卷积瓶颈层,以减少昂贵的3x3卷积之前的特征映射的数量。整体结构如下表所示:
+
+
+
+## 4.8.7 ResNet作为小型网络的组合
+
+
+《具有随机深度的深度网络》提出了一种反直觉的方式,训练一个非常深层的网络,通过在训练期间随机丢弃它的层,并在测试时间内使用完整的网络。Veit等人有一个更反直觉的发现:我们实际上可以删除一些已训练的ResNet的一些层,但仍然具有可比性能。这使得ResNet架构更加有趣,该论文亦降低了VGG网络的层,并大大降低了其性能。
+该论文首先提供了ResNet的一个简单的视图,使事情更清晰。在我们展开网络架构之后,这是很显而易见的,具有i个残差块的ResNet架构具有2 \* \* i个不同的路径(因为每个残差块提供两个独立的路径)。
+
+
+
+
+鉴于上述发现,我们很容易发现为什么在ResNet架构中删除几层,对于其性能影响不大——架构具有许多独立的有效路径,在我们删除了几层之后,它们大部分保持不变。相反,VGG网络只有一条有效的路径,所以删除一层是唯一的途径。
+
+
+作者还进行了实验,表明ResNet中的路径集合具有集合行为。他们是通过在测试时间删除不同数量的层,然后查看网络的性能是否与已删除层的数量平滑相关,这样的方式做到的。结果表明,网络确实表现得像集合,如下图所示:
+
+
+
+## 4.8.8 ResNet中路径的特点
+
+
+最后,作者研究了ResNet中路径的特点:
+
+
+很明显,所有可能的路径长度的分布都遵循二项式分布,如(a)所示。大多数路径经过19到35个残差块。
+
+
+
+
+调查路径长度与经过其的梯度大小之间的关系,同时获得长度为k的路径的梯度幅度,作者首先将一批数据馈送给网络,随机抽取k个残差块。当反向传播梯度时,它们仅传播到采样残余块的权重层。(b)表明随着路径变长,梯度的大小迅速下降。
+
+
+我们现在可以将每个路径长度的频率与其预期的梯度大小相乘,以了解每个长度的路径对于训练有多少帮助,如(c)所示。令人惊讶的是,大多数贡献来自长度为9至18的路径,但它们仅占总路径的一小部分,如(a)所示。这是一个非常有趣的发现,因为它表明ResNet并没有解决长路径上的梯度消失问题,而是通过缩短其有效路径,ResNet实际上能够实现训练非常深度的网络。
+
+
+http://www.sohu.com/a/157818653_390227
+
+
+# 4.9 为什么现在的CNN模型都是在GoogleNet、VGGNet或者AlexNet上调整的?
+
+
+https://www.zhihu.com/question/43370067?sort=created
+
+
+作者:知乎用户
+
+链接:https://www.zhihu.com/question/43370067/answer/128904008
+来源:知乎
+著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
+
+
+1. 那是因为你看到的大部分是公开的论文,公开的论文需要一个标准的baseline及在baseline上改进的比较,因此大家会基于一个公认的baseline开始做实验大家才比较信服。常见的比如各种检测分割的问题都会基于VGG或者Resnet101这样的基础网络。而这类型paper很多,就会有种业内只有这几个模型的错觉
+
+
+2. 发表论文的同学多数是在校的phd同学,首先大家有强大的科研压力和ddl的压力,时间和精力只允许大家在有限的范围探索。因此基于vision问题的特性进行各种模型和算法方案的改进肯定是更有novelty(也是更符合发paper的思路),所以有限的精力就放在了另外的方面而继续沿用目前VGG/GoogleNet/AlexNet/Resnet这样的baseline
+
+
+3. 进行基本模型的改进需要大量的实验和尝试,很有可能投入产出比比较小。能做到Kaiming ResNet这样的工作真是需要大量的实验积累加强大的灵感,真是偶像。我们大部分人自己的实验过程,很多之前预想的可能会work的idea经过尝试可能提升有限(失望脸,没法毕业怎么办)。基于我们今年参与ImageNet的经历来讲,对于深度学习,很大部分可以提升性能的点在于一些对于细节的精确把握。因此你可以看到许多排名靠前的队伍最后讲的关键技术点似乎都是tricks。而这样精确细节的把握是需要大量的时间和计算资源的,往往在学校不可行。因此有大量计算资源的比如香港中文大学,我司商汤科技,公安三所,海康等成绩靠前。PS,我们之后会公布我们今年参加ImageNet Scene Parsing比赛拿到第一的技术方案(paper+code+model),实际构成是一些insights(可以写paper的技术点)加大量的tricks(好像不太容易写paper)。敬请期待。
+
+
+4. 如果所有人的目标都是ImageNet/VOC/Kitti/Cityscapes这种标准数据库拼性能的话,大家会慢慢收敛到比较大的网络,比如你提到的这些。但是实际上也有很多讨论不同模型结构和计算性能的文章,拿Kaiming偶像的其他文章举例(https://arxiv.org/abs/1412.1710,https://arxiv.org/abs/1411.4229),都是分析的很深入浅出的好的文章。但是由于不符合发paper一定要state-of-the-art且可比较的性能的基本法,因此之后follow在这样的网络结构上继续做的人就很有限。
+
+
+5. **在实际的应用场景中,其实是有大量的非标准模型的配置。** 比如我司在做的人脸关键点tracking可以在低端的android手机上达到5ms的运行速度(很差的手机和CPU速度差约50倍,CPU和GPU速度差约10-20倍?。。),基于的也是深度学习的网络;比如我们自己团队做的人像分割,也可以在PC CPU上达到接近800fps的速度。这些所有的深度学习的网络结构研究,基于的目标是能够在限制的环境中达到最优的性能,同时会兼顾各种平台不同的优化方案调整网络结构。其中的黑科技非常多,主要是对基础网络的结构改进,肯定不会是VGG/AlexNet/GoogleNet/ResNet152这种庞然大物。这些技术也是大家在玩FaceU,各种直播平台的贴纸和之后其他的酷炫产品时,已经不知不觉已经享用到的深度学习的成果。不过由于是正在赚钱的产品(也是因为大家非常忙懒的写paper)暂时没有对学术界公开这些技术背后的网络结构。不过欢迎大家来实习亲自参与和实现这些改变未来的技术~
+
+作者:孔涛
+链接:https://www.zhihu.com/question/43370067/answer/129040676
+来源:知乎
+著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
+
+
+1. **这些网络都是一些知名的研究机构设计出来的,为领域提供了一个baseline** 。做深度学习的相关研究,一个很重要的点在于将自己的方法和其他人的方法进行对比。对比的时候就要讲究公平性的问题。在ResNet出来之前,多数研究者在基于VGG做相关领域的研究,这样在相同的网络深度下,就检验自身提出的东西的有效性了。还有整个科研界对于VGG、AlexNet、ResNet这些网络有一个基本的认识,你提出的方法在这种baseline下能到什么样的效果大家心里有数,比如在目标检测这个任务中,基于VGG的网络在COCO上边最多能做到27%-28%的mAP,而ResNet就可以做到30以上,这样就便于对比和评价了。再比如一开始用于语义分割的FCN是基于VGG的,ResNet出来之后很容易的变成基于ResNet的,这也侧面说明了方法的有效性。
+
+
+2. 这个领域只有一小部分人是在研究分类的网络结构,**其他的应用的研究者** ,包括视觉、自然语言等**更专注于本领域的内部知识** ,在一个base网络的基础之上进行修改,以验证自己方法的有效性。而这些网络正好提供了这样的baseline,所以何乐而不为呢。自己设计的网络结构有可能也会达到很好的效果,但这就偏离了自己本身的研究点。当然如果一个人足够厉害,比如这篇文章(YOLO: Real-Time Object Detection),作者完全是自己设计、训练的网络结构,这也是完全没有问题的。**研究来讲,最终的准确率只是追求的一个方面** 。更重要的,是提供解决问题的一个新途径、思路或者方法。如果大家都去拼准确率、拼机器、搞更深的模型,这个领域就不会发展到现在这个地步了。另外,很多高校,根本就没有这种条件来做这样的事情。
+
+
+3. **科研与工业应用的区别。** 科研界基本上都在这些现有的模型的基础之上做一些改进,而实际的应用中会遇到各种各样的问题(数据标注、计算资源、效率等)。据我所知,一些机构在实际场景中,都在训练适合于自己应用的模型,这些模型可以达到相当好的性能。而这些涉及到商业的东西并没有放出来供大家使用。
+
diff --git a/img/ch5/img1.png b/ch5_卷积神经网络(CNN)/img/ch5/img1.png
similarity index 100%
rename from img/ch5/img1.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img1.png
diff --git a/img/ch5/img10.png b/ch5_卷积神经网络(CNN)/img/ch5/img10.png
similarity index 100%
rename from img/ch5/img10.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img10.png
diff --git a/img/ch5/img11.png b/ch5_卷积神经网络(CNN)/img/ch5/img11.png
similarity index 100%
rename from img/ch5/img11.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img11.png
diff --git a/img/ch5/img12.png b/ch5_卷积神经网络(CNN)/img/ch5/img12.png
similarity index 100%
rename from img/ch5/img12.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img12.png
diff --git a/img/ch5/img13.png b/ch5_卷积神经网络(CNN)/img/ch5/img13.png
similarity index 100%
rename from img/ch5/img13.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img13.png
diff --git a/img/ch5/img14.png b/ch5_卷积神经网络(CNN)/img/ch5/img14.png
similarity index 100%
rename from img/ch5/img14.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img14.png
diff --git a/img/ch5/img15.png b/ch5_卷积神经网络(CNN)/img/ch5/img15.png
similarity index 100%
rename from img/ch5/img15.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img15.png
diff --git a/img/ch5/img16.png b/ch5_卷积神经网络(CNN)/img/ch5/img16.png
similarity index 100%
rename from img/ch5/img16.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img16.png
diff --git a/img/ch5/img17.png b/ch5_卷积神经网络(CNN)/img/ch5/img17.png
similarity index 100%
rename from img/ch5/img17.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img17.png
diff --git a/img/ch5/img18.png b/ch5_卷积神经网络(CNN)/img/ch5/img18.png
similarity index 100%
rename from img/ch5/img18.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img18.png
diff --git a/img/ch5/img19.png b/ch5_卷积神经网络(CNN)/img/ch5/img19.png
similarity index 100%
rename from img/ch5/img19.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img19.png
diff --git a/img/ch5/img2.png b/ch5_卷积神经网络(CNN)/img/ch5/img2.png
similarity index 100%
rename from img/ch5/img2.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img2.png
diff --git a/img/ch5/img20.png b/ch5_卷积神经网络(CNN)/img/ch5/img20.png
similarity index 100%
rename from img/ch5/img20.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img20.png
diff --git a/img/ch5/img21.png b/ch5_卷积神经网络(CNN)/img/ch5/img21.png
similarity index 100%
rename from img/ch5/img21.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img21.png
diff --git a/img/ch5/img22.png b/ch5_卷积神经网络(CNN)/img/ch5/img22.png
similarity index 100%
rename from img/ch5/img22.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img22.png
diff --git a/img/ch5/img23.png b/ch5_卷积神经网络(CNN)/img/ch5/img23.png
similarity index 100%
rename from img/ch5/img23.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img23.png
diff --git a/img/ch5/img24.png b/ch5_卷积神经网络(CNN)/img/ch5/img24.png
similarity index 100%
rename from img/ch5/img24.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img24.png
diff --git a/img/ch5/img25.png b/ch5_卷积神经网络(CNN)/img/ch5/img25.png
similarity index 100%
rename from img/ch5/img25.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img25.png
diff --git a/img/ch5/img26.png b/ch5_卷积神经网络(CNN)/img/ch5/img26.png
similarity index 100%
rename from img/ch5/img26.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img26.png
diff --git a/img/ch5/img27.png b/ch5_卷积神经网络(CNN)/img/ch5/img27.png
similarity index 100%
rename from img/ch5/img27.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img27.png
diff --git a/img/ch5/img28.png b/ch5_卷积神经网络(CNN)/img/ch5/img28.png
similarity index 100%
rename from img/ch5/img28.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img28.png
diff --git a/img/ch5/img29.png b/ch5_卷积神经网络(CNN)/img/ch5/img29.png
similarity index 100%
rename from img/ch5/img29.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img29.png
diff --git a/img/ch5/img3.png b/ch5_卷积神经网络(CNN)/img/ch5/img3.png
similarity index 100%
rename from img/ch5/img3.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img3.png
diff --git a/img/ch5/img30.png b/ch5_卷积神经网络(CNN)/img/ch5/img30.png
similarity index 100%
rename from img/ch5/img30.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img30.png
diff --git a/img/ch5/img31.png b/ch5_卷积神经网络(CNN)/img/ch5/img31.png
similarity index 100%
rename from img/ch5/img31.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img31.png
diff --git a/img/ch5/img32.png b/ch5_卷积神经网络(CNN)/img/ch5/img32.png
similarity index 100%
rename from img/ch5/img32.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img32.png
diff --git a/img/ch5/img33.png b/ch5_卷积神经网络(CNN)/img/ch5/img33.png
similarity index 100%
rename from img/ch5/img33.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img33.png
diff --git a/img/ch5/img34.png b/ch5_卷积神经网络(CNN)/img/ch5/img34.png
similarity index 100%
rename from img/ch5/img34.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img34.png
diff --git a/img/ch5/img35.png b/ch5_卷积神经网络(CNN)/img/ch5/img35.png
similarity index 100%
rename from img/ch5/img35.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img35.png
diff --git a/img/ch5/img36.png b/ch5_卷积神经网络(CNN)/img/ch5/img36.png
similarity index 100%
rename from img/ch5/img36.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img36.png
diff --git a/img/ch5/img37.png b/ch5_卷积神经网络(CNN)/img/ch5/img37.png
similarity index 100%
rename from img/ch5/img37.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img37.png
diff --git a/img/ch5/img38.png b/ch5_卷积神经网络(CNN)/img/ch5/img38.png
similarity index 100%
rename from img/ch5/img38.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img38.png
diff --git a/img/ch5/img39.png b/ch5_卷积神经网络(CNN)/img/ch5/img39.png
similarity index 100%
rename from img/ch5/img39.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img39.png
diff --git a/img/ch5/img4.png b/ch5_卷积神经网络(CNN)/img/ch5/img4.png
similarity index 100%
rename from img/ch5/img4.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img4.png
diff --git a/img/ch5/img40.png b/ch5_卷积神经网络(CNN)/img/ch5/img40.png
similarity index 100%
rename from img/ch5/img40.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img40.png
diff --git a/img/ch5/img41.png b/ch5_卷积神经网络(CNN)/img/ch5/img41.png
similarity index 100%
rename from img/ch5/img41.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img41.png
diff --git a/img/ch5/img42.png b/ch5_卷积神经网络(CNN)/img/ch5/img42.png
similarity index 100%
rename from img/ch5/img42.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img42.png
diff --git a/img/ch5/img43.png b/ch5_卷积神经网络(CNN)/img/ch5/img43.png
similarity index 100%
rename from img/ch5/img43.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img43.png
diff --git a/img/ch5/img44.png b/ch5_卷积神经网络(CNN)/img/ch5/img44.png
similarity index 100%
rename from img/ch5/img44.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img44.png
diff --git a/img/ch5/img45.png b/ch5_卷积神经网络(CNN)/img/ch5/img45.png
similarity index 100%
rename from img/ch5/img45.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img45.png
diff --git a/img/ch5/img46.png b/ch5_卷积神经网络(CNN)/img/ch5/img46.png
similarity index 100%
rename from img/ch5/img46.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img46.png
diff --git a/img/ch5/img47.png b/ch5_卷积神经网络(CNN)/img/ch5/img47.png
similarity index 100%
rename from img/ch5/img47.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img47.png
diff --git a/img/ch5/img48.png b/ch5_卷积神经网络(CNN)/img/ch5/img48.png
similarity index 100%
rename from img/ch5/img48.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img48.png
diff --git a/img/ch5/img49.png b/ch5_卷积神经网络(CNN)/img/ch5/img49.png
similarity index 100%
rename from img/ch5/img49.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img49.png
diff --git a/img/ch5/img5.png b/ch5_卷积神经网络(CNN)/img/ch5/img5.png
similarity index 100%
rename from img/ch5/img5.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img5.png
diff --git a/img/ch5/img50.png b/ch5_卷积神经网络(CNN)/img/ch5/img50.png
similarity index 100%
rename from img/ch5/img50.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img50.png
diff --git a/img/ch5/img51.png b/ch5_卷积神经网络(CNN)/img/ch5/img51.png
similarity index 100%
rename from img/ch5/img51.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img51.png
diff --git a/img/ch5/img52.png b/ch5_卷积神经网络(CNN)/img/ch5/img52.png
similarity index 100%
rename from img/ch5/img52.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img52.png
diff --git a/img/ch5/img53.png b/ch5_卷积神经网络(CNN)/img/ch5/img53.png
similarity index 100%
rename from img/ch5/img53.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img53.png
diff --git a/img/ch5/img54.png b/ch5_卷积神经网络(CNN)/img/ch5/img54.png
similarity index 100%
rename from img/ch5/img54.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img54.png
diff --git a/img/ch5/img55.png b/ch5_卷积神经网络(CNN)/img/ch5/img55.png
similarity index 100%
rename from img/ch5/img55.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img55.png
diff --git a/img/ch5/img56.png b/ch5_卷积神经网络(CNN)/img/ch5/img56.png
similarity index 100%
rename from img/ch5/img56.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img56.png
diff --git a/img/ch5/img57.png b/ch5_卷积神经网络(CNN)/img/ch5/img57.png
similarity index 100%
rename from img/ch5/img57.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img57.png
diff --git a/img/ch5/img58.png b/ch5_卷积神经网络(CNN)/img/ch5/img58.png
similarity index 100%
rename from img/ch5/img58.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img58.png
diff --git a/img/ch5/img59.png b/ch5_卷积神经网络(CNN)/img/ch5/img59.png
similarity index 100%
rename from img/ch5/img59.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img59.png
diff --git a/img/ch5/img6.png b/ch5_卷积神经网络(CNN)/img/ch5/img6.png
similarity index 100%
rename from img/ch5/img6.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img6.png
diff --git a/img/ch5/img60.png b/ch5_卷积神经网络(CNN)/img/ch5/img60.png
similarity index 100%
rename from img/ch5/img60.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img60.png
diff --git a/img/ch5/img61.png b/ch5_卷积神经网络(CNN)/img/ch5/img61.png
similarity index 100%
rename from img/ch5/img61.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img61.png
diff --git a/img/ch5/img62.png b/ch5_卷积神经网络(CNN)/img/ch5/img62.png
similarity index 100%
rename from img/ch5/img62.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img62.png
diff --git a/img/ch5/img63.png b/ch5_卷积神经网络(CNN)/img/ch5/img63.png
similarity index 100%
rename from img/ch5/img63.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img63.png
diff --git a/img/ch5/img64.png b/ch5_卷积神经网络(CNN)/img/ch5/img64.png
similarity index 100%
rename from img/ch5/img64.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img64.png
diff --git a/img/ch5/img65.png b/ch5_卷积神经网络(CNN)/img/ch5/img65.png
similarity index 100%
rename from img/ch5/img65.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img65.png
diff --git a/img/ch5/img66.png b/ch5_卷积神经网络(CNN)/img/ch5/img66.png
similarity index 100%
rename from img/ch5/img66.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img66.png
diff --git a/img/ch5/img67.png b/ch5_卷积神经网络(CNN)/img/ch5/img67.png
similarity index 100%
rename from img/ch5/img67.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img67.png
diff --git a/img/ch5/img7.png b/ch5_卷积神经网络(CNN)/img/ch5/img7.png
similarity index 100%
rename from img/ch5/img7.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img7.png
diff --git a/img/ch5/img8.png b/ch5_卷积神经网络(CNN)/img/ch5/img8.png
similarity index 100%
rename from img/ch5/img8.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img8.png
diff --git a/img/ch5/img9.png b/ch5_卷积神经网络(CNN)/img/ch5/img9.png
similarity index 100%
rename from img/ch5/img9.png
rename to ch5_卷积神经网络(CNN)/img/ch5/img9.png
diff --git a/ch5_卷积神经网络(CNN)/modify_log.txt b/ch5_卷积神经网络(CNN)/modify_log.txt
new file mode 100644
index 0000000..974e4c6
--- /dev/null
+++ b/ch5_卷积神经网络(CNN)/modify_log.txt
@@ -0,0 +1,20 @@
+ļ¼־
+<----shw2018-2018-10-25---->
+1. ½markdownļ
+
+<----shw2018-2018-10-28---->
+1. Ĵݺʽ
+2. ͼƬ·
+
+<----shw2018-2018-10-31---->
+1. ھļУ
+img---->ŶӦ½ͼƬ·./img/ch9/ch_*
+readme.md---->½άϢ
+modify_log---->¼־
+ * _xxx.md---->Ӧ½markdownļ
+ * _xxx.pdf---->Ӧ½pdfļĶ
+---->
+2. readme
+3. modify
+4. ½ݣͼƬ·
+
diff --git a/ch5_卷积神经网络(CNN)/readme.md b/ch5_卷积神经网络(CNN)/readme.md
new file mode 100644
index 0000000..4ebe256
--- /dev/null
+++ b/ch5_卷积神经网络(CNN)/readme.md
@@ -0,0 +1,14 @@
+###########################################################
+
+### 深度学习500问-第 * 章 xxx
+
+**负责人(排名不分先后):**
+xxx研究生-xxx(xxx)
+xxx博士生-xxx
+xxx-xxx
+
+
+**贡献者(排名不分先后):**
+内容贡献者可自加信息
+
+###########################################################
\ No newline at end of file
diff --git a/ch5_卷积神经网络(CNN)/深度学习500问-Tan-05第五章 卷积神经网络(CNN).pdf b/ch5_卷积神经网络(CNN)/深度学习500问-Tan-05第五章 卷积神经网络(CNN).pdf
new file mode 100644
index 0000000..aa7eb02
Binary files /dev/null and b/ch5_卷积神经网络(CNN)/深度学习500问-Tan-05第五章 卷积神经网络(CNN).pdf differ
diff --git a/MarkDown/第五章_卷积神经网络(CNN).md b/ch5_卷积神经网络(CNN)/第五章_卷积神经网络(CNN).md
similarity index 100%
rename from MarkDown/第五章_卷积神经网络(CNN).md
rename to ch5_卷积神经网络(CNN)/第五章_卷积神经网络(CNN).md
diff --git a/img/ch6/figure_6.1_1.jpg b/ch6_循环神经网络(RNN)/img/ch6/figure_6.1_1.jpg
similarity index 100%
rename from img/ch6/figure_6.1_1.jpg
rename to ch6_循环神经网络(RNN)/img/ch6/figure_6.1_1.jpg
diff --git a/img/ch6/figure_6.2_1.png b/ch6_循环神经网络(RNN)/img/ch6/figure_6.2_1.png
similarity index 100%
rename from img/ch6/figure_6.2_1.png
rename to ch6_循环神经网络(RNN)/img/ch6/figure_6.2_1.png
diff --git a/img/ch6/figure_6.2_2.jpg b/ch6_循环神经网络(RNN)/img/ch6/figure_6.2_2.jpg
similarity index 100%
rename from img/ch6/figure_6.2_2.jpg
rename to ch6_循环神经网络(RNN)/img/ch6/figure_6.2_2.jpg
diff --git a/img/ch6/figure_6.4_1.png b/ch6_循环神经网络(RNN)/img/ch6/figure_6.4_1.png
similarity index 100%
rename from img/ch6/figure_6.4_1.png
rename to ch6_循环神经网络(RNN)/img/ch6/figure_6.4_1.png
diff --git a/img/ch6/figure_6.6.1_1.png b/ch6_循环神经网络(RNN)/img/ch6/figure_6.6.1_1.png
similarity index 100%
rename from img/ch6/figure_6.6.1_1.png
rename to ch6_循环神经网络(RNN)/img/ch6/figure_6.6.1_1.png
diff --git a/img/ch6/figure_6.6.2_1.png b/ch6_循环神经网络(RNN)/img/ch6/figure_6.6.2_1.png
similarity index 100%
rename from img/ch6/figure_6.6.2_1.png
rename to ch6_循环神经网络(RNN)/img/ch6/figure_6.6.2_1.png
diff --git a/img/ch6/figure_6.6.3_1.png b/ch6_循环神经网络(RNN)/img/ch6/figure_6.6.3_1.png
similarity index 100%
rename from img/ch6/figure_6.6.3_1.png
rename to ch6_循环神经网络(RNN)/img/ch6/figure_6.6.3_1.png
diff --git a/img/ch6/figure_6.6.4_1.png b/ch6_循环神经网络(RNN)/img/ch6/figure_6.6.4_1.png
similarity index 100%
rename from img/ch6/figure_6.6.4_1.png
rename to ch6_循环神经网络(RNN)/img/ch6/figure_6.6.4_1.png
diff --git a/img/ch6/figure_6.6.4_2.png b/ch6_循环神经网络(RNN)/img/ch6/figure_6.6.4_2.png
similarity index 100%
rename from img/ch6/figure_6.6.4_2.png
rename to ch6_循环神经网络(RNN)/img/ch6/figure_6.6.4_2.png
diff --git a/img/ch6/figure_6.6.4_3.png b/ch6_循环神经网络(RNN)/img/ch6/figure_6.6.4_3.png
similarity index 100%
rename from img/ch6/figure_6.6.4_3.png
rename to ch6_循环神经网络(RNN)/img/ch6/figure_6.6.4_3.png
diff --git a/img/ch6/figure_6.6.5_1.png b/ch6_循环神经网络(RNN)/img/ch6/figure_6.6.5_1.png
similarity index 100%
rename from img/ch6/figure_6.6.5_1.png
rename to ch6_循环神经网络(RNN)/img/ch6/figure_6.6.5_1.png
diff --git a/img/ch6/figure_6.6.6_1.png b/ch6_循环神经网络(RNN)/img/ch6/figure_6.6.6_1.png
similarity index 100%
rename from img/ch6/figure_6.6.6_1.png
rename to ch6_循环神经网络(RNN)/img/ch6/figure_6.6.6_1.png
diff --git a/img/ch6/figure_6.6.6_2.png b/ch6_循环神经网络(RNN)/img/ch6/figure_6.6.6_2.png
similarity index 100%
rename from img/ch6/figure_6.6.6_2.png
rename to ch6_循环神经网络(RNN)/img/ch6/figure_6.6.6_2.png
diff --git a/img/ch6/figure_6.6.7_1.png b/ch6_循环神经网络(RNN)/img/ch6/figure_6.6.7_1.png
similarity index 100%
rename from img/ch6/figure_6.6.7_1.png
rename to ch6_循环神经网络(RNN)/img/ch6/figure_6.6.7_1.png
diff --git a/ch6_循环神经网络(RNN)/modify_log.txt b/ch6_循环神经网络(RNN)/modify_log.txt
new file mode 100644
index 0000000..974e4c6
--- /dev/null
+++ b/ch6_循环神经网络(RNN)/modify_log.txt
@@ -0,0 +1,20 @@
+ļ¼־
+<----shw2018-2018-10-25---->
+1. ½markdownļ
+
+<----shw2018-2018-10-28---->
+1. Ĵݺʽ
+2. ͼƬ·
+
+<----shw2018-2018-10-31---->
+1. ھļУ
+img---->ŶӦ½ͼƬ·./img/ch9/ch_*
+readme.md---->½άϢ
+modify_log---->¼־
+ * _xxx.md---->Ӧ½markdownļ
+ * _xxx.pdf---->Ӧ½pdfļĶ
+---->
+2. readme
+3. modify
+4. ½ݣͼƬ·
+
diff --git a/ch6_循环神经网络(RNN)/readme.md b/ch6_循环神经网络(RNN)/readme.md
new file mode 100644
index 0000000..4ebe256
--- /dev/null
+++ b/ch6_循环神经网络(RNN)/readme.md
@@ -0,0 +1,14 @@
+###########################################################
+
+### 深度学习500问-第 * 章 xxx
+
+**负责人(排名不分先后):**
+xxx研究生-xxx(xxx)
+xxx博士生-xxx
+xxx-xxx
+
+
+**贡献者(排名不分先后):**
+内容贡献者可自加信息
+
+###########################################################
\ No newline at end of file
diff --git a/ch6_循环神经网络(RNN)/第六章 循环神经网络(RNN).pdf b/ch6_循环神经网络(RNN)/第六章 循环神经网络(RNN).pdf
new file mode 100644
index 0000000..69a11f6
Binary files /dev/null and b/ch6_循环神经网络(RNN)/第六章 循环神经网络(RNN).pdf differ
diff --git a/MarkDown/第六章_循环神经网络(RNN).md b/ch6_循环神经网络(RNN)/第六章_循环神经网络(RNN).md
similarity index 98%
rename from MarkDown/第六章_循环神经网络(RNN).md
rename to ch6_循环神经网络(RNN)/第六章_循环神经网络(RNN).md
index 96d4cac..aa05a08 100644
--- a/MarkDown/第六章_循环神经网络(RNN).md
+++ b/ch6_循环神经网络(RNN)/第六章_循环神经网络(RNN).md
@@ -1,145 +1,145 @@
-# 第六章 循环神经网络(RNN)
-
- Markdown Revision 1;
- Date: 2018/10/26
- Editor: 杨国峰-中国农业科学院
- Contact: tectalll@gmail.com
-
-http://blog.csdn.net/heyongluoyao8/article/details/48636251
-
-## 6.1 RNNs和FNNs有什么区别?
-
-不同于传统的前馈神经网络(FNNs),RNNs引入了定向循环,能够处理那些输入之间前后关联的问题。**定向循环结构如下图所示**:
-
-
-
-## 6.2 RNNs典型特点?
-
-RNNs的目的使用来处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。
-RNNs之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。理论上,RNNs能够对任何长度的序列数据进行处理。但是在实践中,为了降低复杂性往往假设当前的状态只与前面的几个状态相关,**下图便是一个典型的RNNs**:
-
-
-
-
-
-输入单元(Input units):输入集$\bigr\{x_0,x_1,...,x_t,x_{t+1},...\bigr\}$,
-
-输出单元(Output units):输出集$\bigr\{y_0,y_1,...,y_t,y_{y+1},...\bigr\}$,
-
-隐藏单元(Hidden units):输出集$\bigr\{s_0,s_1,...,s_t,s_{t+1},...\bigr\}$。
-
-**图中信息传递特点:**
-
-1. 有一条单向流动的信息流是从输入单元到达隐藏单元;
-2. 与此同时,另一条单向流动的信息流从隐藏单元到达输出单元;
-3. 在某些情况下,RNNs会打破后者的限制,引导信息从输出单元返回隐藏单元,这些被称为“Back Projections”;
-4. 在某些情况下,隐藏层的输入还包括上一隐藏层的状态,即隐藏层内的节点可以自连也可以互连。
-
-
-## 6.3RNNs能干什么?
-
-RNNs已经被在实践中证明对NLP是非常成功的。如词向量表达、语句合法性检查、词性标注等。在RNNs中,目前使用最广泛最成功的模型便是LSTMs(Long Short-Term Memory,长短时记忆模型)模型,该模型通常比 vanilla RNNs 能够更好地对长短时依赖进行表达,该模型相对于一般的RNNs,只是在隐藏层做了改变。
-
-
-## 6.4 RNNs在NLP中典型应用?
-**(1)语言模型与文本生成(Language Modeling and Generating Text)**
-
-给一个单词序列,需要根据前面的单词预测每一个单词的可能性。语言模型能够一个语句正确的可能性,这是机器翻译的一部分,往往可能性越大,语句越正确。另一种应用便是使用生成模型预测下一个单词的概率,从而生成新的文本根据输出概率的采样。
-
-**(2)机器翻译(Machine Translation)**
-
-机器翻译是将一种源语言语句变成意思相同的另一种源语言语句,如将英语语句变成同样意思的中文语句。与语言模型关键的区别在于,需要将源语言语句序列输入后,才进行输出,即输出第一个单词时,便需要从完整的输入序列中进行获取。
-
-**(3)语音识别(Speech Recognition)**
-
-语音识别是指给一段声波的声音信号,预测该声波对应的某种指定源语言的语句以及该语句的概率值。
-
-**(4)图像描述生成 (Generating Image Descriptions)**
-
-和卷积神经网络(convolutional Neural Networks, CNNs)一样,RNNs已经在对无标图像描述自动生成中得到应用。将CNNs与RNNs结合进行图像描述自动生成。
-
-
-## 6.5 RNNs训练和传统ANN训练异同点?
-
-**相同点**:同样使用BP误差反向传播算法。
-
-**不同点**:
-
-1. 如果将RNNs进行网络展开,那么参数W,U,V是共享的,而传统神经网络却不是的。
-2. 在使用梯度下降算法中,每一步的输出不仅依赖当前步的网络,并且还以来前面若干步网络的状态。
-
-
-## 6.6常见的RNNs扩展和改进模型
-
-
-### 6.6.1Simple RNNs(SRNs)
-
-SRNs是RNNs的一种特例,它是一个三层网络,并且在隐藏层增加了上下文单元,下图中的**y**便是隐藏层,**u**便是上下文单元。上下文单元节点与隐藏层中的节点的连接是固定(谁与谁连接)的,并且权值也是固定的(值是多少),其实是一个上下文节点与隐藏层节点一一对应,并且值是确定的。在每一步中,使用标准的前向反馈进行传播,然后使用学习算法进行学习。上下文每一个节点保存其连接的隐藏层节点的上一步的输出,即保存上文,并作用于当前步对应的隐藏层节点的状态,即隐藏层的输入由输入层的输出与上一步的自己的状态所决定的。因此SRNs能够解决标准的多层感知机(MLP)无法解决的对序列数据进行预测的任务。
-**SRNs网络结构如下图所示**:
-
-
-
-### 6.6.2Bidirectional RNNs
-
-Bidirectional RNNs(双向网络)的改进之处便是,假设当前的输出(第t步的输出)不仅仅与前面的序列有关,并且还与后面的序列有关。例如:预测一个语句中缺失的词语那么就需要根据上下文来进行预测。Bidirectional RNNs是一个相对较简单的RNNs,是由两个RNNs上下叠加在一起组成的。输出由这两个RNNs的隐藏层的状态决定的。**如下图所示**:
-
-
-
-### 6.6.3Deep(Bidirectional) RNNs
-
-Deep(Bidirectional)RNNs与Bidirectional RNNs相似,只是对于每一步的输入有多层网络。这样,该网络便有更强大的表达与学习能力,但是复杂性也提高了,同时需要更多的训练数据。**Deep(Bidirectional)RNNs的结构如下图所示**:
-
-
-### 6.6.4Echo State Networks(ESNs)
-ESNs(回声状态网络)虽然也是一种RNNs,但是它与传统的RNNs相差很大。
-
-**ESNs具有三个特点**:
-
-(1)它的核心结构时一个随机生成、且保持不变的储备池(Reservoir),储备池是大规模的、随机生成的、稀疏连接(SD通常保持1%~5%,SD表示储备池中互相连接的神经元占总的神经元个数N的比例)的循环结构;
-
-(2)其储备池到输出层的权值矩阵是唯一需要调整的部分;
-
-(3)简单的线性回归就可完成网络的训练。
-
-从结构上讲,ESNs是一种特殊类型的循环神经网络,其基本思想是:使用大规模随机连接的循环网络取代经典神经网络中的中间层,从而简化网络的训练过程。因此ESNs的关键是中间的储备池。网络中的参数包括:W为储备池中节点的连接权值矩阵,Win为输入层到储备池之间的连接权值矩阵,表明储备池中的神经元之间是连接的,Wback为输出层到储备池之间的反馈连接权值矩阵,表明储备池会有输出层来的反馈,Wout为输入层、储备池、输出层到输出层的连接权值矩阵,表明输出层不仅与储备池连接,还与输入层和自己连接。Woutbias表示输出层的偏置项。
-对于ESNs,关键是储备池的四个参数,如储备池内部连接权谱半径SR(SR=λmax=max{|W的特征指|},只有SR <1时,ESNs才能具有回声状态属性)、储备池规模N(即储备池中神经元的个数)、储备池输入单元尺度IS(IS为储备池的输入信号连接到储备池内部神经元之前需要相乘的一个尺度因子)、储备池稀疏程度SD(即为储备池中互相连接的神经元个数占储备池神经元总个数的比例)。对于IS,如果需要处理的任务的非线性越强,那么输入单元尺度越大。该原则的本质就是通过输入单元尺度IS,将输入变换到神经元激活函数相应的范围(神经元激活函数的不同输入范围,其非线性程度不同)。
-**ESNs的结构如下图所示**:
-
-
-
-
-
-### 6.6.5Gated Recurrent Unit Recurrent Neural Networks
-GRUs也是一般的RNNs的改良版本,主要是从以下**两个方面**进行改进。
-
-**一是**,序列中不同的位置处的单词(已单词举例)对当前的隐藏层的状态的影响不同,越前面的影响越小,即每个前面状态对当前的影响进行了距离加权,距离越远,权值越小。
-
-**二是**,在产生误差error时,误差可能是由某一个或者几个单词而引发的,所以应当仅仅对对应的单词weight进行更新。GRUs的结构如下图所示。GRUs首先根据当前输入单词向量word vector已经前一个隐藏层的状态hidden state计算出update gate和reset gate。再根据reset gate、当前word vector以及前一个hidden state计算新的记忆单元内容(new memory content)。当reset gate为1的时候,new memory content忽略之前的所有memory content,最终的memory是之前的hidden state与new memory content的结合。
-
-
-
-### 6.6.6LSTM Netwoorks
-LSTMs与GRUs类似,目前非常流行。它与一般的RNNs结构本质上并没有什么不同,只是使用了不同的函数去去计算隐藏层的状态。在LSTMs中,i结构被称为cells,可以把cells看作是黑盒用以保存当前输入xt之前的保存的状态ht−1,这些cells更加一定的条件决定哪些cell抑制哪些cell兴奋。它们结合前面的状态、当前的记忆与当前的输入。已经证明,该网络结构在对长序列依赖问题中非常有效。**LSTMs的网络结构如下图所示**。
-
-
-
-LSTMs与GRUs的区别如图所示:
-
-
-
-从上图可以看出,它们之间非常相像,**不同在于**:
-
-(1)new memory的计算方法都是根据之前的state及input进行计算,但是GRUs中有一个reset gate控制之前state的进入量,而在LSTMs里没有这个gate;
-
-(2)产生新的state的方式不同,LSTMs有两个不同的gate,分别是forget gate (f gate)和input gate(i gate),而GRUs只有一个update gate(z gate);
-
-(3)LSTMs对新产生的state又一个output gate(o gate)可以调节大小,而GRUs直接输出无任何调节。
-
-### 6.6.7Clockwork RNNs(CW-RNNs)
-CW-RNNs是较新的一种RNNs模型,其论文发表于2014年Beijing ICML。
-CW-RNNs也是一个RNNs的改良版本,是一种使用时钟频率来驱动的RNNs。它将隐藏层分为几个块(组,Group/Module),每一组按照自己规定的时钟频率对输入进行处理。并且为了降低标准的RNNs的复杂性,CW-RNNs减少了参数的数目,提高了网络性能,加速了网络的训练。CW-RNNs通过不同的隐藏层模块工作在不同的时钟频率下来解决长时间依赖问题。将时钟时间进行离散化,然后在不同的时间点,不同的隐藏层组在工作。因此,所有的隐藏层组在每一步不会都同时工作,这样便会加快网络的训练。并且,时钟周期小的组的神经元的不会连接到时钟周期大的组的神经元,只会周期大的连接到周期小的(认为组与组之间的连接是有向的就好了,代表信息的传递是有向的),周期大的速度慢,周期小的速度快,那么便是速度慢的连速度快的,反之则不成立。现在还不明白不要紧,下面会进行讲解。
-
-CW-RNNs与SRNs网络结构类似,也包括输入层(Input)、隐藏层(Hidden)、输出层(Output),它们之间也有向前连接,输入层到隐藏层的连接,隐藏层到输出层的连接。但是与SRN不同的是,隐藏层中的神经元会被划分为若干个组,设为$g$,每一组中的神经元个数相同,设为$k$,并为每一个组分配一个时钟周期$T_i\epsilon\{T_1,T_2,...,T_g\}$,每一个组中的所有神经元都是全连接,但是组$j$到组$i$的循环连接则需要满足$T_j$大于$T_i$。如下图所示,将这些组按照时钟周期递增从左到右进行排序,即$T_1
+1. ½markdownļ
+
+<----shw2018-2018-10-28---->
+1. Ĵݺʽ
+2. ͼƬ·
+
+<----shw2018-2018-10-31---->
+1. ھļУ
+img---->ŶӦ½ͼƬ·./img/ch9/ch_*
+readme.md---->½άϢ
+modify_log---->¼־
+ * _xxx.md---->Ӧ½markdownļ
+ * _xxx.pdf---->Ӧ½pdfļĶ
+---->
+2. readme
+3. modify
+4. ½ݣͼƬ·
+
diff --git a/ch7_生成对抗网络(GAN)/readme.md b/ch7_生成对抗网络(GAN)/readme.md
new file mode 100644
index 0000000..4ebe256
--- /dev/null
+++ b/ch7_生成对抗网络(GAN)/readme.md
@@ -0,0 +1,14 @@
+###########################################################
+
+### 深度学习500问-第 * 章 xxx
+
+**负责人(排名不分先后):**
+xxx研究生-xxx(xxx)
+xxx博士生-xxx
+xxx-xxx
+
+
+**贡献者(排名不分先后):**
+内容贡献者可自加信息
+
+###########################################################
\ No newline at end of file
diff --git a/MarkDown/第七章_生成对抗网络(GAN).md b/ch7_生成对抗网络(GAN)/第七章_生成对抗网络(GAN).md
similarity index 100%
rename from MarkDown/第七章_生成对抗网络(GAN).md
rename to ch7_生成对抗网络(GAN)/第七章_生成对抗网络(GAN).md
diff --git a/img/ch8/readme.md b/ch8_目标检测/img/ch7/readme.md
similarity index 100%
rename from img/ch8/readme.md
rename to ch8_目标检测/img/ch7/readme.md
diff --git a/ch8_目标检测/modify_log.txt b/ch8_目标检测/modify_log.txt
new file mode 100644
index 0000000..974e4c6
--- /dev/null
+++ b/ch8_目标检测/modify_log.txt
@@ -0,0 +1,20 @@
+ļ¼־
+<----shw2018-2018-10-25---->
+1. ½markdownļ
+
+<----shw2018-2018-10-28---->
+1. Ĵݺʽ
+2. ͼƬ·
+
+<----shw2018-2018-10-31---->
+1. ھļУ
+img---->ŶӦ½ͼƬ·./img/ch9/ch_*
+readme.md---->½άϢ
+modify_log---->¼־
+ * _xxx.md---->Ӧ½markdownļ
+ * _xxx.pdf---->Ӧ½pdfļĶ
+---->
+2. readme
+3. modify
+4. ½ݣͼƬ·
+
diff --git a/ch8_目标检测/readme.md b/ch8_目标检测/readme.md
new file mode 100644
index 0000000..4ebe256
--- /dev/null
+++ b/ch8_目标检测/readme.md
@@ -0,0 +1,14 @@
+###########################################################
+
+### 深度学习500问-第 * 章 xxx
+
+**负责人(排名不分先后):**
+xxx研究生-xxx(xxx)
+xxx博士生-xxx
+xxx-xxx
+
+
+**贡献者(排名不分先后):**
+内容贡献者可自加信息
+
+###########################################################
\ No newline at end of file
diff --git a/MarkDown/第八章 目标检测.md b/ch8_目标检测/第八章_目标检测.md
similarity index 100%
rename from MarkDown/第八章 目标检测.md
rename to ch8_目标检测/第八章_目标检测.md
diff --git a/ch8_目标检测/第八章_目标检测.pdf b/ch8_目标检测/第八章_目标检测.pdf
new file mode 100644
index 0000000..0cfd027
Binary files /dev/null and b/ch8_目标检测/第八章_目标检测.pdf differ
diff --git a/ch9_图像分割/.ipynb_checkpoints/readme-checkpoint.md b/ch9_图像分割/.ipynb_checkpoints/readme-checkpoint.md
new file mode 100644
index 0000000..c423c76
--- /dev/null
+++ b/ch9_图像分割/.ipynb_checkpoints/readme-checkpoint.md
@@ -0,0 +1,14 @@
+###########################################################
+
+### 深度学习500问-第九章 图像分割
+
+**负责人(排名不分先后):**
+电子科大研究生-孙洪卫(wechat:sunhwee,email:hwsun@std.uestc.edu.cn)
+电子科大研究生-张越(wechat:tianyuzy)
+华南理工研究生-黄钦建()
+中国农业科学院-杨国峰()
+
+**贡献者(排名不分先后):**
+内容贡献者可自加信息
+
+###########################################################
\ No newline at end of file
diff --git a/MarkDown/第九章_图像分割.md b/ch9_图像分割/.ipynb_checkpoints/第九章_图像分割-checkpoint.md
similarity index 100%
rename from MarkDown/第九章_图像分割.md
rename to ch9_图像分割/.ipynb_checkpoints/第九章_图像分割-checkpoint.md
diff --git a/img/ch9/9-10-1.png b/ch9_图像分割/img/ch9/9-10-1.png
similarity index 100%
rename from img/ch9/9-10-1.png
rename to ch9_图像分割/img/ch9/9-10-1.png
diff --git a/img/ch9/9-10-2.png b/ch9_图像分割/img/ch9/9-10-2.png
similarity index 100%
rename from img/ch9/9-10-2.png
rename to ch9_图像分割/img/ch9/9-10-2.png
diff --git a/img/ch9/9-10-3.png b/ch9_图像分割/img/ch9/9-10-3.png
similarity index 100%
rename from img/ch9/9-10-3.png
rename to ch9_图像分割/img/ch9/9-10-3.png
diff --git a/img/ch9/figure_9.1.10_1.png b/ch9_图像分割/img/ch9/figure_9.1.10_1.png
similarity index 100%
rename from img/ch9/figure_9.1.10_1.png
rename to ch9_图像分割/img/ch9/figure_9.1.10_1.png
diff --git a/img/ch9/figure_9.1.10_2.png b/ch9_图像分割/img/ch9/figure_9.1.10_2.png
similarity index 100%
rename from img/ch9/figure_9.1.10_2.png
rename to ch9_图像分割/img/ch9/figure_9.1.10_2.png
diff --git a/img/ch9/figure_9.1.10_3.png b/ch9_图像分割/img/ch9/figure_9.1.10_3.png
similarity index 100%
rename from img/ch9/figure_9.1.10_3.png
rename to ch9_图像分割/img/ch9/figure_9.1.10_3.png
diff --git a/img/ch9/figure_9.1.10_4.png b/ch9_图像分割/img/ch9/figure_9.1.10_4.png
similarity index 100%
rename from img/ch9/figure_9.1.10_4.png
rename to ch9_图像分割/img/ch9/figure_9.1.10_4.png
diff --git a/img/ch9/figure_9.1.10_5.png b/ch9_图像分割/img/ch9/figure_9.1.10_5.png
similarity index 100%
rename from img/ch9/figure_9.1.10_5.png
rename to ch9_图像分割/img/ch9/figure_9.1.10_5.png
diff --git a/img/ch9/figure_9.1.10_6.png b/ch9_图像分割/img/ch9/figure_9.1.10_6.png
similarity index 100%
rename from img/ch9/figure_9.1.10_6.png
rename to ch9_图像分割/img/ch9/figure_9.1.10_6.png
diff --git a/img/ch9/figure_9.1.1_1.jpg b/ch9_图像分割/img/ch9/figure_9.1.1_1.jpg
similarity index 100%
rename from img/ch9/figure_9.1.1_1.jpg
rename to ch9_图像分割/img/ch9/figure_9.1.1_1.jpg
diff --git a/img/ch9/figure_9.1.1_2.jpg b/ch9_图像分割/img/ch9/figure_9.1.1_2.jpg
similarity index 100%
rename from img/ch9/figure_9.1.1_2.jpg
rename to ch9_图像分割/img/ch9/figure_9.1.1_2.jpg
diff --git a/img/ch9/figure_9.1.2_1.jpg b/ch9_图像分割/img/ch9/figure_9.1.2_1.jpg
similarity index 100%
rename from img/ch9/figure_9.1.2_1.jpg
rename to ch9_图像分割/img/ch9/figure_9.1.2_1.jpg
diff --git a/img/ch9/figure_9.1.3_1.jpg b/ch9_图像分割/img/ch9/figure_9.1.3_1.jpg
similarity index 100%
rename from img/ch9/figure_9.1.3_1.jpg
rename to ch9_图像分割/img/ch9/figure_9.1.3_1.jpg
diff --git a/img/ch9/figure_9.1.7_1.png b/ch9_图像分割/img/ch9/figure_9.1.7_1.png
similarity index 100%
rename from img/ch9/figure_9.1.7_1.png
rename to ch9_图像分割/img/ch9/figure_9.1.7_1.png
diff --git a/img/ch9/figure_9.1.7_2.png b/ch9_图像分割/img/ch9/figure_9.1.7_2.png
similarity index 100%
rename from img/ch9/figure_9.1.7_2.png
rename to ch9_图像分割/img/ch9/figure_9.1.7_2.png
diff --git a/img/ch9/figure_9.1.7_3.png b/ch9_图像分割/img/ch9/figure_9.1.7_3.png
similarity index 100%
rename from img/ch9/figure_9.1.7_3.png
rename to ch9_图像分割/img/ch9/figure_9.1.7_3.png
diff --git a/img/ch9/figure_9.1.7_4.jpg b/ch9_图像分割/img/ch9/figure_9.1.7_4.jpg
similarity index 100%
rename from img/ch9/figure_9.1.7_4.jpg
rename to ch9_图像分割/img/ch9/figure_9.1.7_4.jpg
diff --git a/img/ch9/figure_9.1.8_1.png b/ch9_图像分割/img/ch9/figure_9.1.8_1.png
similarity index 100%
rename from img/ch9/figure_9.1.8_1.png
rename to ch9_图像分割/img/ch9/figure_9.1.8_1.png
diff --git a/img/ch9/figure_9.1.8_2.png b/ch9_图像分割/img/ch9/figure_9.1.8_2.png
similarity index 100%
rename from img/ch9/figure_9.1.8_2.png
rename to ch9_图像分割/img/ch9/figure_9.1.8_2.png
diff --git a/img/ch9/figure_9.1.9_1.png b/ch9_图像分割/img/ch9/figure_9.1.9_1.png
similarity index 100%
rename from img/ch9/figure_9.1.9_1.png
rename to ch9_图像分割/img/ch9/figure_9.1.9_1.png
diff --git a/img/ch9/figure_9.2_1.png b/ch9_图像分割/img/ch9/figure_9.2_1.png
similarity index 100%
rename from img/ch9/figure_9.2_1.png
rename to ch9_图像分割/img/ch9/figure_9.2_1.png
diff --git a/img/ch9/figure_9.3_1.jpg b/ch9_图像分割/img/ch9/figure_9.3_1.jpg
similarity index 100%
rename from img/ch9/figure_9.3_1.jpg
rename to ch9_图像分割/img/ch9/figure_9.3_1.jpg
diff --git a/img/ch9/figure_9.3_2.jpg b/ch9_图像分割/img/ch9/figure_9.3_2.jpg
similarity index 100%
rename from img/ch9/figure_9.3_2.jpg
rename to ch9_图像分割/img/ch9/figure_9.3_2.jpg
diff --git a/img/ch9/figure_9.3_3.png b/ch9_图像分割/img/ch9/figure_9.3_3.png
similarity index 100%
rename from img/ch9/figure_9.3_3.png
rename to ch9_图像分割/img/ch9/figure_9.3_3.png
diff --git a/img/ch9/figure_9.3_4.jpg b/ch9_图像分割/img/ch9/figure_9.3_4.jpg
similarity index 100%
rename from img/ch9/figure_9.3_4.jpg
rename to ch9_图像分割/img/ch9/figure_9.3_4.jpg
diff --git a/img/ch9/figure_9.4_1.png b/ch9_图像分割/img/ch9/figure_9.4_1.png
similarity index 100%
rename from img/ch9/figure_9.4_1.png
rename to ch9_图像分割/img/ch9/figure_9.4_1.png
diff --git a/img/ch9/figure_9.4_2.png b/ch9_图像分割/img/ch9/figure_9.4_2.png
similarity index 100%
rename from img/ch9/figure_9.4_2.png
rename to ch9_图像分割/img/ch9/figure_9.4_2.png
diff --git a/img/ch9/figure_9.6_1.png b/ch9_图像分割/img/ch9/figure_9.6_1.png
similarity index 100%
rename from img/ch9/figure_9.6_1.png
rename to ch9_图像分割/img/ch9/figure_9.6_1.png
diff --git a/img/ch9/figure_9.6_2.png b/ch9_图像分割/img/ch9/figure_9.6_2.png
similarity index 100%
rename from img/ch9/figure_9.6_2.png
rename to ch9_图像分割/img/ch9/figure_9.6_2.png
diff --git a/img/ch9/figure_9.6_3.png b/ch9_图像分割/img/ch9/figure_9.6_3.png
similarity index 100%
rename from img/ch9/figure_9.6_3.png
rename to ch9_图像分割/img/ch9/figure_9.6_3.png
diff --git a/img/ch9/figure_9.6_4.png b/ch9_图像分割/img/ch9/figure_9.6_4.png
similarity index 100%
rename from img/ch9/figure_9.6_4.png
rename to ch9_图像分割/img/ch9/figure_9.6_4.png
diff --git a/img/ch9/figure_9.6_5.png b/ch9_图像分割/img/ch9/figure_9.6_5.png
similarity index 100%
rename from img/ch9/figure_9.6_5.png
rename to ch9_图像分割/img/ch9/figure_9.6_5.png
diff --git a/img/ch9/figure_9.6_6.png b/ch9_图像分割/img/ch9/figure_9.6_6.png
similarity index 100%
rename from img/ch9/figure_9.6_6.png
rename to ch9_图像分割/img/ch9/figure_9.6_6.png
diff --git a/img/ch9/figure_9.6_7.png b/ch9_图像分割/img/ch9/figure_9.6_7.png
similarity index 100%
rename from img/ch9/figure_9.6_7.png
rename to ch9_图像分割/img/ch9/figure_9.6_7.png
diff --git a/img/ch9/figure_9.8_1.png b/ch9_图像分割/img/ch9/figure_9.8_1.png
similarity index 100%
rename from img/ch9/figure_9.8_1.png
rename to ch9_图像分割/img/ch9/figure_9.8_1.png
diff --git a/img/ch9/figure_9.8_2.png b/ch9_图像分割/img/ch9/figure_9.8_2.png
similarity index 100%
rename from img/ch9/figure_9.8_2.png
rename to ch9_图像分割/img/ch9/figure_9.8_2.png
diff --git a/img/ch9/figure_9.8_3.png b/ch9_图像分割/img/ch9/figure_9.8_3.png
similarity index 100%
rename from img/ch9/figure_9.8_3.png
rename to ch9_图像分割/img/ch9/figure_9.8_3.png
diff --git a/img/ch9/figure_9.8_4.png b/ch9_图像分割/img/ch9/figure_9.8_4.png
similarity index 100%
rename from img/ch9/figure_9.8_4.png
rename to ch9_图像分割/img/ch9/figure_9.8_4.png
diff --git a/img/ch9/figure_9.9_1.png b/ch9_图像分割/img/ch9/figure_9.9_1.png
similarity index 100%
rename from img/ch9/figure_9.9_1.png
rename to ch9_图像分割/img/ch9/figure_9.9_1.png
diff --git a/img/ch9/figure_9.9_2.png b/ch9_图像分割/img/ch9/figure_9.9_2.png
similarity index 100%
rename from img/ch9/figure_9.9_2.png
rename to ch9_图像分割/img/ch9/figure_9.9_2.png
diff --git a/img/ch9/figure_9.9_3.png b/ch9_图像分割/img/ch9/figure_9.9_3.png
similarity index 100%
rename from img/ch9/figure_9.9_3.png
rename to ch9_图像分割/img/ch9/figure_9.9_3.png
diff --git a/img/ch9/figure_9.9_4.png b/ch9_图像分割/img/ch9/figure_9.9_4.png
similarity index 100%
rename from img/ch9/figure_9.9_4.png
rename to ch9_图像分割/img/ch9/figure_9.9_4.png
diff --git a/img/ch9/figure_9.9_5.png b/ch9_图像分割/img/ch9/figure_9.9_5.png
similarity index 100%
rename from img/ch9/figure_9.9_5.png
rename to ch9_图像分割/img/ch9/figure_9.9_5.png
diff --git a/img/ch9/figure_9.9_6.png b/ch9_图像分割/img/ch9/figure_9.9_6.png
similarity index 100%
rename from img/ch9/figure_9.9_6.png
rename to ch9_图像分割/img/ch9/figure_9.9_6.png
diff --git a/img/ch9/figure_9.9_7.png b/ch9_图像分割/img/ch9/figure_9.9_7.png
similarity index 100%
rename from img/ch9/figure_9.9_7.png
rename to ch9_图像分割/img/ch9/figure_9.9_7.png
diff --git a/img/ch9/figure_9.9_8.png b/ch9_图像分割/img/ch9/figure_9.9_8.png
similarity index 100%
rename from img/ch9/figure_9.9_8.png
rename to ch9_图像分割/img/ch9/figure_9.9_8.png
diff --git a/ch9_图像分割/modify_log.txt b/ch9_图像分割/modify_log.txt
new file mode 100644
index 0000000..c84132b
--- /dev/null
+++ b/ch9_图像分割/modify_log.txt
@@ -0,0 +1,20 @@
+ļ¼־
+<----shw2018-2018-10-25---->
+1. ½markdownļ
+
+<----shw2018-2018-10-28---->
+1. Ĵݺʽ
+2. ͼƬ·
+
+<----shw2018-2018-10-31---->
+1. ھļУ
+img---->ŶӦ½ͼƬ·./img/ch9/ch_*
+readme.md---->½άϢ
+modify_log---->¼־
+ * _xxx.md---->Ӧ½markdownļ
+ * _xxx.pdf---->Ӧ½pdfļĶ
+---->
+2. readme
+3. modify
+4. ½ݣͼƬ·
+
diff --git a/ch9_图像分割/readme.md b/ch9_图像分割/readme.md
new file mode 100644
index 0000000..c423c76
--- /dev/null
+++ b/ch9_图像分割/readme.md
@@ -0,0 +1,14 @@
+###########################################################
+
+### 深度学习500问-第九章 图像分割
+
+**负责人(排名不分先后):**
+电子科大研究生-孙洪卫(wechat:sunhwee,email:hwsun@std.uestc.edu.cn)
+电子科大研究生-张越(wechat:tianyuzy)
+华南理工研究生-黄钦建()
+中国农业科学院-杨国峰()
+
+**贡献者(排名不分先后):**
+内容贡献者可自加信息
+
+###########################################################
\ No newline at end of file
diff --git a/MarkDown/第九章_图像分割.md.bak b/ch9_图像分割/第九章_图像分割.md
similarity index 93%
rename from MarkDown/第九章_图像分割.md.bak
rename to ch9_图像分割/第九章_图像分割.md
index ccfad15..b292f6c 100644
--- a/MarkDown/第九章_图像分割.md.bak
+++ b/ch9_图像分割/第九章_图像分割.md
@@ -3,12 +3,12 @@
作者:scutan90
编辑者:shw2018(UESTC_孙洪卫_硕,Wechat:sunhwee)
提交:2018.10.25
-更新:2018.10.28
+更新:2018.10.31
#########################################################
# **第九章 图像分割**
-## **8.1 传统的基于CNN的分割方法缺点?**
+## **9.1 传统的基于CNN的分割方法缺点?**
传统的基于CNN的分割方法:为了对一个像素分类,使用该像素周围的一个图像块作为CNN的输入,用于训练与预测,这种方法主要有几个缺点:
@@ -21,31 +21,31 @@
而全卷积网络(FCN)则是从抽象的特征中恢复出每个像素所属的类别。即从图像级别的分类进一步延伸到像素级别的分类。
-**8.1 FCN**
+**9.1 FCN**
-**8.1.1 FCN改变了什么?**
+**9.1.1 FCN改变了什么?**
对于一般的分类CNN网络,如VGG和Resnet,都会在网络的最后加入一些全连接层,经过softmax后就可以获得类别概率信息。但是这个概率信息是1维的,即只能标识整个图片的类别,不能标识每个像素点的类别,所以这种全连接方法不适用于图像分割。
-
+
而FCN提出可以把后面几个全连接都换成卷积,这样就可以获得一张2维的feature map,后接softmax获得每个像素点的分类信息,从而解决了分割问题,如图4。
-
+
图 4
-**8.1.2 FCN网络结构?**
+**9.1.2 FCN网络结构?**
FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全联接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。
下图是语义分割所采用的全卷积网络(FCN)的结构示意图:
-
+
-**8.1.3全卷积网络举例?**
+**9.1.3全卷积网络举例?**
通常CNN网络在卷积层之后会接上若干个全连接层, 将卷积层产生的特征图(feature map)映射成一个固定长度的特征向量。以AlexNet为代表的经典CNN结构适合于图像级的分类和回归任务,因为它们最后都得到整个输入图像的一个概率向量,比如AlexNet的ImageNet模型输出一个1000维的向量表示输入图像属于每一类的概率(softmax归一化)。
-
+
如图所示:
@@ -56,7 +56,7 @@ FCN对图像进行像素级的分类,从而解决了语义级别的图像分
(3)CNN的强大之处在于它的多层结构能自动学习特征,并且可以学习到多个层次的特征: 较浅的卷积层感知域较小,学习到一些局部区域的特征 较深的卷积层具有较大的感知域,能够学习到更加抽象一些的特征。高层的抽象特征对物体的大小、位置和方向等敏感性更低,从而有助于识别性能的提高, 所以我们常常可以将卷积层看作是特征提取器。
-**8.1.4为什么CNN对像素级别的分类很难?**
+**9.1.4为什么CNN对像素级别的分类很难?**
(1)存储开销很大。例如对每个像素使用的图像块的大小为15x15,然后不断滑动窗口,每次滑动的窗口给CNN进行判别分类,因此则所需的存储空间根据滑动窗口的次数和大小急剧上升。
@@ -65,7 +65,7 @@ FCN对图像进行像素级的分类,从而解决了语义级别的图像分
(3)像素块大小的限制了感知区域的大小。通常像素块的大小比整幅图像的大小小很多,只能提取一些局部的特征,从而导致分类的性能受到限制。
-**8.1.5全连接层和卷积层如何相互转化?**
+**9.1.5全连接层和卷积层如何相互转化?**
**两者相互转换的可能性:**
@@ -86,12 +86,12 @@ FCN对图像进行像素级的分类,从而解决了语义级别的图像分
(3)最后一个全连接层也做类似的,令其F=1,K=1000,最终输出为[1x1x1000]。
-**8.1.6 FCN的输入图片为什么可以是任意大小?**
+**9.1.6 FCN的输入图片为什么可以是任意大小?**
对于CNN,一幅输入图片在经过卷积和pooling层时,这些层是不关心图片大小的。比如对于一个卷积层,outputsize = (inputsize - kernelsize) / stride + 1,它并不关心inputsize多大,对于一个inputsize大小的输入feature map,滑窗卷积,输出outputsize大小的feature map即可。pooling层同理。但是在进入全连接层时,feature map(假设大小为n×n)要拉成一条向量,而向量中每个元素(共n×n个)作为一个结点都要与下一个层的所有结点(假设4096个)全连接,这里的权值个数是4096×n×n,而我们知道神经网络结构一旦确定,它的权值个数都是固定的,所以这个n不能变化,n是conv5的outputsize,所以层层向回看,每个outputsize都要固定,那每个inputsize都要固定,因此输入图片大小要固定。
-**8.1.7把全连接层的权重W重塑成卷积层的滤波器有什么好处?**
+**9.1.7把全连接层的权重W重塑成卷积层的滤波器有什么好处?**
这样的转化可以在单个向前传播的过程中, 使得卷积网络在一张更大的输入图片上滑动,从而得到多个输出(可以理解为一个label map)。
@@ -103,13 +103,13 @@ FCN对图像进行像素级的分类,从而解决了语义级别的图像分
一个确定的CNN网络结构之所以要固定输入图片大小,是因为全连接层权值数固定,而该权值数和feature map大小有关, 但是FCN在CNN的基础上把1000个结点的全连接层改为含有1000个1×1卷积核的卷积层,经过这一层,还是得到二维的feature map,同样我们也不关心这个feature map大小, 所以对于输入图片的size并没有限制。
如下图所示,FCN将传统CNN中的全连接层转化成卷积层,对应CNN网络FCN把最后三层全连接层转换成为三层卷积层:
-
+
一个分类网络
-
+
变为全卷积网络
-
+
End-to-end, pixels-to pixels网络
-
+
(1)全连接层转化为全卷积层 : 在传统的CNN结构中,前5层是卷积层,第6层和第7层分别是一个长度为4096的一维向量,第8层是长度为1000的一维向量,分别对应1000个不同类别的概率。FCN将这3层表示为卷积层,卷积核的大小 (通道数,宽,高) 分别为 (4096,1,1)、(4096,1,1)、(1000,1,1)。看上去数字上并没有什么差别,但是卷积跟全连接是不一样的概念和计算过程,使用的是之前CNN已经训练好的权值和偏置,但是不一样的在于权值和偏置是有自己的范围,属于自己的一个卷积核。
@@ -120,7 +120,7 @@ FCN对图像进行像素级的分类,从而解决了语义级别的图像分
相较于使用被转化前的原始卷积神经网络对所有36个位置进行迭代计算优化模型,然后再对36个位置做预测,使用转化后的卷积神经网络进行一次前向传播计算要高效得多,因为36次计算都在共享计算资源。这一技巧在实践中经常使用,通常将一张图像尺寸变得更大,然后使用变换后的卷积神经网络来对空间上很多不同位置进行评价得到分类评分,然后在求这些分值的平均值。
-**8.1.8反卷积层理解**
+**9.1.8反卷积层理解**
Upsampling的操作可以看成是反卷积(deconvolutional),卷积运算的参数和CNN的参数一样是在训练FCN模型的过程中通过bp算法学习得到。反卷积层也是卷积层,不关心input大小,滑窗卷积后输出output。deconv并不是真正的deconvolution(卷积的逆变换),最近比较公认的叫法应该是transposed convolution,deconv的前向传播就是conv的反向传播。
@@ -130,20 +130,20 @@ Upsampling的操作可以看成是反卷积(deconvolutional),卷积运算的
反卷积的运算如下所示:
蓝色是反卷积层的input,绿色是反卷积层的outputFull padding, transposed Full padding, transposed。
-
+
上图中的反卷积,input是2×2, output是4×4。 Zero padding, non-unit strides, transposed。
-
+
上图中的反卷积,input feature map是3×3, 转化后是5×5, output是5×5
-**8.1.9跳级(skip)结构**
+**9.1.9跳级(skip)结构**
对CNN的结果做处理,得到了dense prediction,而作者在试验中发现,得到的分割结果比较粗糙,所以考虑加入更多前层的细节信息,也就是把倒数第几层的输出和最后的输出做一个fusion,实际上也就是加和:
-
+
实验表明,这样的分割结果更细致更准确。在逐层fusion的过程中,做到第三行再往下,结果又会变差,所以作者做到这里就停了。
-**8.1.10模型训练**
+**9.1.10模型训练**
(1)用AlexNet,VGG16或者GoogleNet训练好的模型做初始化,在这个基础上做fine-tuning,全部都fine-tuning,只需在末尾加上upsampling,参数的学习还是利用CNN本身的反向传播原理。
@@ -164,7 +164,7 @@ Upsampling的操作可以看成是反卷积(deconvolutional),卷积运算的
*灰色: 裁剪, 在融合之前,使用裁剪层统一两者大小, 最后裁剪成和输入相同尺寸输出。*
*对于不同尺寸的输入图像,各层数据的尺寸(height,width)相应变化,深度(channel)不变。*
-
+
(1)全卷积层部分进行特征提取, 提取卷积层(3个蓝色层)的输出来作为预测21个类别的特征。
@@ -173,18 +173,18 @@ Upsampling的操作可以看成是反卷积(deconvolutional),卷积运算的
1) 以经典的AlexNet分类网络为初始化。最后两级是全连接(红色),参数弃去不用。
-
+
2) 从特征小图()预测分割小图(),之后直接升采样为大图。
-
+
反卷积(橙色)的步长为32,这个网络称为FCN-32s
3) 升采样分为两次完成(橙色×2), 在第二次升采样前,把第4个pooling层(绿色)的预测结果(蓝色)融合进来。使用跳级结构提升精确性。
-
+
第二次反卷积步长为16,这个网络称为FCN-16s
4) 升采样分为三次完成(橙色×3), 进一步融合了第3个pooling层的预测结果。
-
+
第三次反卷积步长为8,记为FCN-8s
其他参数:
@@ -198,16 +198,16 @@ learning rate:0.001。
反卷积参数初始化为bilinear插值。
最后一层反卷积固定位bilinear插值不做学习。
-
+
-**8.1.11 FCN缺点**
+**9.1.11 FCN缺点**
(1)得到的结果还是不够精细。进行8倍上采样虽然比32倍的效果好了很多,但是上采样的结果还是比较模糊和平滑,对图像中的细节不敏感。
(2)对各个像素进行分类,没有充分考虑像素与像素之间的关系。忽略了在通常的基于像素分类的分割方法中使用的空间规整(spatial regularization)步骤,缺乏空间一致性。
-## **8.2 U-Net**
+## **9.2 U-Net**
卷积网络的典型利用是在分类任务,输出任务的单个类标签。然而,在许多视觉任务,尤其是生物医学图像处理,目标输出应该包括定位等,每个像素都应该有类标签。另外,大量的训练图片往往超过生物医学图像的任务要求。所以,Ciresan等训练了一个神经网络,用滑动窗口来预测每个像素的类标签,提供像素的周围区域(patch)作为输入。首先,这个网络可以定位。第二,输入的是patches,这样训练数据就比图片数据多很多。
@@ -219,7 +219,7 @@ learning rate:0.001。
第二,定位准确性和上下文间不可兼得。大的patches需要更多的max-pooling层这样减小了定位准确性(为什么?因为你是对以这个像素为中心的点进行分类,如果patch太大,最后经过全连接层的前一层大小肯定是不变的,如果你patch大就需要更多的pooling达到这个大小),因为Pooling层会降低分辨率,丢失信息),而小的patches只能看到很小的局部信息,包含的背景信息不够。许多现在的方法使用不同层的特征来同时兼容定位和利用context。
在这篇论文,我们建立了一个更好全卷积方法。我们定义和扩展了这个方法它使用更少的训练图片但产生更精确的分割。
-
+
(1) 使用全卷积神经网络。(全卷积神经网络就是卷积取代了全连接层,全连接层必须固定图像大小而卷积不用,所以这个策略使得,你可以输入任意尺寸的图片,而且输出也是图片,所以这是一个端到端的网络。)
@@ -304,7 +304,7 @@ def get_unet():
return model
```
-## **8.3 SegNet**
+## **9.3 SegNet**
可训练的图像分割引擎,包含一个encoder网络,一个对应的decoder网络,衔接像素级分类层,解码网络与VGG16的13层卷积层相同。解码网络是将低分辨率的编码特征图映射到全分辨率的特征图。解码网络使用最大池化层的池化索引进行非线性上采样,上采样过程就不需要学习。上采样得到的稀疏图与可训练的滤波器卷积得到致密的特征图。
@@ -317,7 +317,7 @@ def get_unet():
3)这种上采样模式可以包含到任何编码-解码网络中。
SegNet网络的结构如下图所示:
-
+
SegNet网络结构如图1所示,Input为输入图片,Output为输出分割的图像,不同颜色代表不同的分类。语义分割的重要性就在于不仅告诉你图片中某个东西是什么,而且告知你他在图片的位置。我们可以看到是一个对称网络,由中间绿色pooling层与红色upsampling层作为分割,左边是卷积提取高维特征,并通过pooling使图片变小,SegNet作者称为Encoder,右边是反卷积(在这里反卷积与卷积没有区别)与upsampling,通过反卷积使得图像分类后特征得以重现,upsampling使图像变大,SegNet作者称为Decoder,最后通过Softmax,输出不同分类的最大值。这就是大致的SegNet过程,下面对这个过程里面使用到的方法进行介绍。
@@ -325,14 +325,14 @@ SegNet网络结构如图1所示,Input为输入图片,Output为输出分割
编码网络与滤波器族卷积得到特征图,进行BN,ReLU,最大池化。最大池化是为了获得空间小位移的平移不变。最大池化和下采样损失了边缘细节,因此,在编码过程中保存边缘信息很重要。考虑到内存原因,只保存最大池化索引,如最大特征值的位置。
SegNet解码技术如下图所示:
-
+
解码网络使用保存的最大池化索引上采样,得到稀疏的特征图,将特征图与可训练的解码滤波器族卷积得到致密的特征图。之后进行BN。高维的特征图输入soft-max层,对每个像素进行分类,得到每个像素属于K类的概率。 图3中右边是FCN的解码技术,FCN对编码的特征图进行降维,降维后输入到解码网络,解码网络中,上采样使用反卷积实现,上采样的特征图与降维的编码图进行element-wise add得到最终的解码特征图。FCN解码模型需要存储编码特征图,在嵌入式设备中内存紧张。
SegNet的Encoder过程中,卷积的作用是提取特征,SegNet使用的卷积为same卷积(详见卷积神经网络CNN(1)),即卷积后不改变图片大小;在Decoder过程中,同样使用same卷积,不过卷积的作用是为upsampling变大的图像丰富信息,使得在Pooling过程丢失的信息可以通过学习在Decoder得到。SegNet中的卷积与传统CNN的卷积并没有区别。
-## **8.4 空洞卷积(Dilated Convolutions)**
+## **9.4 空洞卷积(Dilated Convolutions)**
在图像分割领域,图像输入到CNN(典型的网络比如FCN[3])中,FCN先像传统的CNN那样对图像做卷积再pooling,降低图像尺寸的同时增大感受野,但是由于图像分割预测是pixel-wise的输出,所以要将pooling后较小的图像尺寸upsampling到原始的图像尺寸进行预测(upsampling一般采用deconv反卷积操作,deconv可参见知乎答案如何理解深度学习中的deconvolution networks?),之前的pooling操作使得每个pixel预测都能看到较大感受野信息。因此图像分割FCN中有两个关键,一个是pooling减小图像尺寸增大感受野,另一个是upsampling扩大图像尺寸。在先减小再增大尺寸的过程中,肯定有一些信息损失掉了,那么能不能设计一种新的操作,不通过pooling也能有较大的感受野看到更多的信息呢?答案就是dilated conv。
@@ -346,24 +346,24 @@ SegNet的Encoder过程中,卷积的作用是提取特征,SegNet使用的卷
(3)小物体信息无法重建 (假设有四个pooling layer 则 任何小于 2^4 = 16 pixel 的物体信息将理论上无法重建。)
举例如下:
-
+
Dilated Convolution with a 3 x 3 kernel and dilation rate 2
下面看一下dilated conv原始论文[4]中的示意图
-
+
(a) 图对应3x3的1-dilated conv,和普通的卷积操作一样,(b)图对应3x3的2-dilated conv,实际的卷积kernel size还是3x3,但是空洞为1,也就是对于一个7x7的图像patch,只有9个红色的点和3x3的kernel发生卷积操作,其余的点略过。也可以理解为kernel的size为7x7,但是只有图中的9个点的权重不为0,其余都为0。 可以看到虽然kernel size只有3x3,但是这个卷积的感受野已经增大到了7x7(如果考虑到这个2-dilated conv的前一层是一个1-dilated conv的话,那么每个红点就是1-dilated的卷积输出,所以感受野为3x3,所以1-dilated和2-dilated合起来就能达到7x7的conv),(c)图是4-dilated conv操作,同理跟在两个1-dilated和2-dilated conv的后面,能达到15x15的感受野。对比传统的conv操作,3层3x3的卷积加起来,stride为1的话,只能达到(kernel-1) * layer+1=7的感受野,也就是和层数layer成线性关系,而dilated conv的感受野是指数级的增长。
dilated的好处是不做pooling损失信息的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息。在图像需要全局信息或者语音文本需要较长的sequence信息依赖的问题中,都能很好的应用dilated conv,比如图像分割、语音合成WaveNet、机器翻译ByteNet中。
-## **8.5 RefineNet**
+## **9.5 RefineNet**
网络结构:
RefineNet block的作用就是把不同resolution level的feature map进行融合。网络结构如下:
-
+
最左边一栏就是FCN的encoder部分(文中是用的ResNet),先把pretrained ResNet按feature map的分辨率分成四个ResNet blocks,然后向右把四个blocks分别作为4个path通过RefineNet block进行融合refine,最后得到一个refined feature map(接softmax再双线性插值输出)。
注意除了RefineNet-4,所有的RefineNet block都是二输入的,用于融合不同level做refine,而单输入的RefineNet-4可以看作是先对ResNet的一个task adaptation。
@@ -372,7 +372,7 @@ RefineNet block的作用就是把不同resolution level的feature map进行融
**RefineNet Block**
接下来仔细看一下RefineNet block,可以看到主要组成部分是Residual convolution unit, Multi-resolution fusion, Chained residual pooling, Output convolutions. 切记这个block作用是融合多个level的feature map输出单个level的feature map,但具体的实现应该是和输入个数、shape无关的。
-
+
Residual convolution unit就是普通的去除了BN的residual unit;
@@ -383,7 +383,7 @@ Chained residual pooling 没太看懂怎么残差相加的(其中的ReLU非常
Output convolutions就是输出前再加一个RCU。
-## **8.6 PSPNet**
+## **9.6 PSPNet**
场景解析对于无限制的开放词汇和不同场景来说是具有挑战性的.本文使用文中的pyramid pooling module实现基于不同区域的上下文集成,提出了PSPNet,实现利用上下文信息的能力进行场景解析。
@@ -391,7 +391,7 @@ Output convolutions就是输出前再加一个RCU。
作者认为,FCN存在的主要问题是没有采取合适的策略来用全局的信息,本文的做法就是借鉴SPPNet来设计了PSPNet解决这个问题。
很多State-of-the-art的场景解析框架都是基于FCN的.基于CNN的方法能够增强动态物体的理解,但是在无限制词汇和不同场景中仍然面临挑战.举个例子,如下图.
-
+
FCN认为右侧框中是汽车,但是实际上是船,如果参考上下文的先验知识,就会发现左边是一个船屋,进而推断是框中是船.FCN存在的主要问题就是不能利用好全局的场景线索。
@@ -415,14 +415,14 @@ FCN认为右侧框中是汽车,但是实际上是船,如果参考上下文
(3) 不显眼的类别(Inconspicuous Classes)
总结以上结果发现,以上问题部分或者全部与上下文关系和全局信息有关系,因此本文提出了PSPNet.框架如下:
-
+
并且加入额外的深度监督 Loss
-
+
-## **8.7 DeepLab系列**
+## **9.7 DeepLab系列**
-**8.7.1 DeepLabv1**
+**9.7.1 DeepLabv1**
DeepLab 是结合了深度卷积神经网络(DCNNs)和概率图模型(DenseCRFs)的方法。
@@ -439,7 +439,7 @@ DeepLab 是结合了深度卷积神经网络(DCNNs)和概率图模型(Dens
论文模型基于 VGG16,在 Titan GPU 上运行速度达到了 8FPS,全连接 CRF 平均推断需要 0.5s ,在 PASCAL VOC-2012 达到 71.6% IOU accuracy。
-**8.7.2 DeepLabv2**
+**9.7.2 DeepLabv2**
DeepLabv2 是相对于 DeepLabv1 基础上的优化。DeepLabv1 在三个方向努力解决,但是问题依然存在:特征分辨率的降低、物体存在多尺度,DCNN 的平移不变性。
@@ -454,13 +454,13 @@ DCNN 的分类不变形影响空间精度。DeepLabv2 是采样全连接的 CRF
论文模型基于 ResNet,在 NVidia Titan X GPU 上运行速度达到了 8FPS,全连接 CRF 平均推断需要 0.5s ,在耗时方面和 DeepLabv1 无差异,但在 PASCAL VOC-2012 达到 79.7 mIOU。
-**8.7.3 DeepLabv3**
+**9.7.3 DeepLabv3**
好的论文不止说明怎么做,还告诉为什么。DeepLab 延续到 DeepLabv3 系列,依然是在空洞卷积做文章,但是探讨不同结构的方向。
DeepLabv3 论文比较了多种捕获多尺度信息的方式:
-
+
1.Image Pyramid:将输入图片放缩成不同比例,分别应用在 DCNN 上,将预测结果融合得到最终输出。
@@ -475,7 +475,7 @@ DeepLabv1-v2 都是使用带孔卷积提取密集特征来进行语义分割。
此外,DeepLabv3 将修改之前提出的带孔空间金字塔池化模块,该模块用于探索多尺度卷积特征,将全局背景基于图像层次进行编码获得特征,取得 state-of-art 性能,在 PASCAL VOC-2012 达到 86.9 mIOU。
-**8.7.4 DeepLabv3+**
+**9.7.4 DeepLabv3+**
语义分割关注的问题:
@@ -489,7 +489,7 @@ deeplab V3新设计的aspp结构解决了问题1,deeplab v3+主要目的在于
问题2 可以使用空洞卷积替代更多的pooling层来获取分辨率更高的feature。但是feature分辨率更高会极大增加运算量。 以deeplab v3 使用的resnet101为例, stride=16将造成后面9层feature变大,后面9层的计算量变为原来的2*2=4倍大。stride=8则更为恐怖,后面78层的计算量都会变大很多。
解决方案:1、编解码器结构。2 Modified Aligned Xception
-
+
在deeplabv3 基础上 加入解码器。 A是aspp结构。 A的8*的上采样可以看做是一个naïve的解码器。 B是编解码结构。集合了高层和底层的feature。 C就是本文采取的结构。Conv2(图中红色)的提取到结果和最后提取出的feature上采样4后融合。
@@ -497,7 +497,7 @@ deeplab V3新设计的aspp结构解决了问题1,deeplab v3+主要目的在于
方法:
(1)Encoder-Decoder with Atrous Convolution
-
+
编码器采用deeplabv3。
@@ -509,7 +509,7 @@ deeplab V3新设计的aspp结构解决了问题1,deeplab v3+主要目的在于
(2)Modified Aligned Xception
Xception 主要采用了deepwish seperable convolution来替换原来的卷积层。简单的说就是这种结构能在更少参数更少计算量的情况下学到同样的信息。这边则是考虑将原来的resnet-101骨架网换成xception。
-
+
红色部分为修改
@@ -520,9 +520,9 @@ Xception 主要采用了deepwish seperable convolution来替换原来的卷积
额外的RELU层和归一化操作添加在每个 3 × 3 depthwise convolution之后(原来只在1 * 1卷积之后)
-## **8.8 Mask-R-CNN**
-**8.8.1 Mask-RCNN 的网络结构示意图**
-
+## **9.8 Mask-R-CNN**
+**9.8.1 Mask-RCNN 的网络结构示意图**
+
其中 黑色部分为原来的 Faster-RCNN,红色部分为在 Faster网络上的修改:
@@ -541,15 +541,15 @@ Xception 主要采用了deepwish seperable convolution来替换原来的卷积
4)不借助 Trick,在每个任务上,效果优于目前所有的 single-model entries;包括 COCO 2016 的Winners。
-**8.8.2 RCNN行人检测框架**
+**9.8.2 RCNN行人检测框架**
来看下后面两种 RCNN 方法与 Mask 结合的示意图:
-
+
图中灰色部分是 原来的 RCNN 结合 ResNet or FPN 的网络,下面黑色部分为新添加的并联 Mask层,这个图本身与上面的图也没有什么区别,旨在说明作者所提出的Mask RCNN 方法的泛化适应能力 - 可以和多种 RCNN框架结合,表现都不错。
-**8.8.3 Mask-RCNN 技术要点**
+**9.8.3 Mask-RCNN 技术要点**
**1.技术要点1 - 强化的基础网络**
@@ -574,14 +574,14 @@ $$
$Lmask(Cls_k) = Sigmoid (Cls_k)$,平均二值交叉熵 (average binary cross-entropy)Loss,通过逐像素的 Sigmoid 计算得到。
Why K个mask?通过对每个 Class 对应一个 Mask 可以有效避免类间竞争(其他 Class 不贡献 Loss )。
-
+
通过结果对比来看(Table2 b),也就是作者所说的 Decouple 解耦,要比多分类 的 Softmax 效果好很多。
另外,作者给出了很多实验分割效果,就不都列了,只贴一张 和 FCIS 的对比图(FCIS 出现了Overlap 的问题)
-
+
-## **8.9 CNN在基于弱监督学习的图像分割中的应用**
+## **9.9 CNN在基于弱监督学习的图像分割中的应用**
https://zhuanlan.zhihu.com/p/23811946
@@ -598,16 +598,16 @@ https://zhuanlan.zhihu.com/p/23811946
3, 对图像中的物体区域做部分像素的标记,例如画一些线条、涂鸦等(scribbles)。
-**8.9.1 Scribble标记**
+**9.9.1 Scribble标记**
ScribbleSup: Scribble-Supervised Convolutional Networks for Semantic Segmentation (CVPR 2016)
香港中文大学的Di Lin提出了一个基于Scribble标记的弱监督学习方法。 Scribble是一个很方便使用的标记方法,因此被用得比较广泛。如下图,只需要画五条线就能完成对一副图像的标记工作。
-
+
ScribbleSup分为两步,第一步将像素的类别信息从scribbles传播到其他未标记的像素,自动完成所有的训练图像的标记工作; 第二步使用这些标记图像训练CNN。在第一步中,该方法先生成super-pxels, 然后基于graph cut的方法对所有的super-pixel进行标记。
-
+
Graph cut 的能量函数为:
$$
@@ -619,15 +619,15 @@ $$
\sum_{i}\psi _i^{scr}\left ( y_i | X,S \right ) +\sum _i-logP\left(y_i | X,\theta \right)+\sum_{i,j}\psi _{ij}\left ( y_i,y_j| X \right )
$$
上式的最优化是通过交替求 和 的最优值来实现的。文章中发现通过三次迭代就能得到比较好的结果。
-
+
-**8.9.2 图像级别标记**
+**9.9.2 图像级别标记**
Constrained Convolutional Neural Networks for Weakly Supervised Segmentation (ICCV 2015)
UC Berkeley的Deepak Pathak 使用了一个具有图像级别标记的训练数据来做弱监督学习。训练数据中只给出图像中包含某种物体,但是没有其位置信息和所包含的像素信息。该文章的方法将image tags转化为对CNN输出的label分布的限制条件,因此称为 Constrained convolutional neural network (CCNN).
-
+
该方法把训练过程看作是有线性限制条件的最优化过程:
$$
@@ -638,17 +638,17 @@ subject \, \,to \, \, \,\, A\vec{P}\geq \vec{b,} \, \, \,\, \, \, \, \,\sum
$$
其中 是一个隐含的类别分布, 是CNN预测的类别分布。目标函数是KL-divergence最小化。其中的线性限制条件来自于训练数据上的标记,例如一幅图像中前景类别像素个数期望值的上界或者下界(物体大小)、某个类别的像素个数在某图像中为0,或者至少为1等。该目标函数可以转化为为一个loss function,然后通过SGD进行训练。
-
+
实验中发现单纯使用Image tags作为限制条件得到的分割结果还比较差,在PASCAL VOC 2012 test数据集上得到的mIoU为35.6%,加上物体大小的限制条件后能达到45.1%, 如果再使用bounding box做限制,可以达到54%。FCN-8s可以达到62.2%,可见弱监督学习要取得好的结果还是比较难。
-**8.9.3 DeepLab+bounding box+image-level labels**
+**9.9.3 DeepLab+bounding box+image-level labels**
Weakly- and Semi-Supervised Learning of a DCNN for Semantic Image Segmentation
Google的George Papandreou 和UCLA的Liang-Chieh Chen等在DeepLab的基础上进一步研究了使用bounding box和image-level labels作为标记的训练数据。使用了期望值最大化算法(EM)来估计未标记的像素的类别和CNN的参数。
-
+
对于image-level标记的数据,我们可以观测到图像的像素值 和图像级别的标记 ,但是不知道每个像素的标号 ,因此把 当做隐变量。使用如下的概率图模式:
$$
@@ -656,11 +656,11 @@ P\left ( x,y,z;\theta \right ) = P\left ( x \right )\left (\prod_{m=1}^{M} P\lef
$$
使用EM算法估计 和 。E步骤是固定 求 的期望值,M步骤是固定 使用SGD计算。
-
+
对于给出bounding box标记的训练图像,该方法先使用CRF对该训练图像做自动分割,然后在分割的基础上做全监督学习。通过实验发现,单纯使用图像级别的标记得到的分割效果较差,但是使用bounding box的训练数据可以得到较好的结果,在VOC2012 test数据集上得到mIoU 62.2%。另外如果使用少量的全标记图像和大量的弱标记图像进行结合,可以得到与全监督学习(70.3%)接近的分割结果(69.0%)。
-**8.9.4统一的框架**
+**9.9.4统一的框架**
Learning to Segment Under Various Forms of Weak Supervision (CVPR 2015)
@@ -671,7 +671,7 @@ $$
$$
其中 是一个特征矩阵,每列代表了对于的类别的聚类特征。 是将第 个super-pixel划分到第 类的代价。在这个目标函数的基础上,根据不同的弱标记方式,可以给出不同的限制条件,因此该方法就是在相应的限制条件下求最大间隔聚类。
-
+
该方法在Siftflow数据集上得到了比较好的结果,比state-of-the-art的结果提高了10%以上。
@@ -680,24 +680,24 @@ $$
小结:在弱标记的数据集上训练图像分割算法可以减少对大量全标记数据的依赖,在大多数应用中会更加贴合实际情况。弱标记可以是图像级别的标记、边框和部分像素的标记等。训练的方法一般看做是限制条件下的最优化方法。另外EM算法可以用于CNN参数和像素类别的联合求优。
-## 8.10 DenseNet(贡献者:黄钦建-华南理工大学)
+## 9.10 DenseNet(贡献者:黄钦建-华南理工大学)
这篇论文是CVPR2017年的最佳论文。
卷积神经网络结构的设计主要朝着两个方向发展,一个是更宽的网络(代表:GoogleNet、VGG),一个是更深的网络(代表:ResNet)。但是随着层数的加深会出现一个问题——梯度消失,这将会导致网络停止训练。到目前为止解决这个问题的思路基本都是在前后层之间加一个identity connections(short path)。
-
+
由上图中可知Resnet是做值的相加(也就是add操作),通道数是不变的。而DenseNet是做通道的合并(也就是Concatenation操作),就像Inception那样。从这两个公式就可以看出这两个网络的本质不同。此外DensetNet的前面一层输出也是后面所有层的输入,这也不同于ResNet残差网络。
-
+
DenseNet的Block结构如上图所示。
1*1卷积核的目的:减少输入的特征图数量,这样既能降维减少计算量,又能融合各个通道的特征。我们将使用BottleNeck Layers的DenseNet表示为DenseNet-B。(在论文的实验里,将1×1×n小卷积里的n设置为4k,k为每个H产生的特征图数量)
-
+
上图是DenseNet网络的整体网络结构示意图。其中1*1卷积核的目的是进一步压缩参数,并且在Transition Layer层有个参数Reduction(范围是0到1),表示将这些输出缩小到原来的多少倍,默认是0.5,这样传给下一个Dense Block的时候channel数量就会减少一半。当Reduction的值小于1的时候,我们就把带有这种层的网络称为DenseNet-C。
diff --git a/ch9_图像分割/第九章_图像分割.pdf b/ch9_图像分割/第九章_图像分割.pdf
new file mode 100644
index 0000000..69589cf
Binary files /dev/null and b/ch9_图像分割/第九章_图像分割.pdf differ
diff --git a/detection/img b/detection/img
deleted file mode 100644
index 8b13789..0000000
--- a/detection/img
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/img/ch4/image1.png b/img/ch4/image1.png
deleted file mode 100644
index 41dea10..0000000
Binary files a/img/ch4/image1.png and /dev/null differ
diff --git a/img/ch4/image10.png b/img/ch4/image10.png
deleted file mode 100644
index ef7ed01..0000000
Binary files a/img/ch4/image10.png and /dev/null differ
diff --git a/img/ch4/image11.GIF b/img/ch4/image11.GIF
deleted file mode 100644
index ab72b16..0000000
Binary files a/img/ch4/image11.GIF and /dev/null differ
diff --git a/img/ch4/image12.png b/img/ch4/image12.png
deleted file mode 100644
index a842820..0000000
Binary files a/img/ch4/image12.png and /dev/null differ
diff --git a/img/ch4/image13.png b/img/ch4/image13.png
deleted file mode 100644
index 56c7a12..0000000
Binary files a/img/ch4/image13.png and /dev/null differ
diff --git a/img/ch4/image14.png b/img/ch4/image14.png
deleted file mode 100644
index 0f52f55..0000000
Binary files a/img/ch4/image14.png and /dev/null differ
diff --git a/img/ch4/image15.jpeg b/img/ch4/image15.jpeg
deleted file mode 100644
index 2ea99b4..0000000
Binary files a/img/ch4/image15.jpeg and /dev/null differ
diff --git a/img/ch4/image18.jpeg b/img/ch4/image18.jpeg
deleted file mode 100644
index ba94f6c..0000000
Binary files a/img/ch4/image18.jpeg and /dev/null differ
diff --git a/img/ch4/image19.jpeg b/img/ch4/image19.jpeg
deleted file mode 100644
index 920f056..0000000
Binary files a/img/ch4/image19.jpeg and /dev/null differ
diff --git a/img/ch4/image2.jpeg b/img/ch4/image2.jpeg
deleted file mode 100644
index 284e36e..0000000
Binary files a/img/ch4/image2.jpeg and /dev/null differ
diff --git a/img/ch4/image20.jpeg b/img/ch4/image20.jpeg
deleted file mode 100644
index 48f8eb4..0000000
Binary files a/img/ch4/image20.jpeg and /dev/null differ
diff --git a/img/ch4/image21.jpeg b/img/ch4/image21.jpeg
deleted file mode 100644
index c2fa593..0000000
Binary files a/img/ch4/image21.jpeg and /dev/null differ
diff --git a/img/ch4/image22.jpeg b/img/ch4/image22.jpeg
deleted file mode 100644
index 4a46634..0000000
Binary files a/img/ch4/image22.jpeg and /dev/null differ
diff --git a/img/ch4/image23.jpeg b/img/ch4/image23.jpeg
deleted file mode 100644
index 5aa4af0..0000000
Binary files a/img/ch4/image23.jpeg and /dev/null differ
diff --git a/img/ch4/image24.png b/img/ch4/image24.png
deleted file mode 100644
index 538640e..0000000
Binary files a/img/ch4/image24.png and /dev/null differ
diff --git a/img/ch4/image25.jpeg b/img/ch4/image25.jpeg
deleted file mode 100644
index 536e655..0000000
Binary files a/img/ch4/image25.jpeg and /dev/null differ
diff --git a/img/ch4/image26.png b/img/ch4/image26.png
deleted file mode 100644
index 51c7d18..0000000
Binary files a/img/ch4/image26.png and /dev/null differ
diff --git a/img/ch4/image27.jpeg b/img/ch4/image27.jpeg
deleted file mode 100644
index 6e526ee..0000000
Binary files a/img/ch4/image27.jpeg and /dev/null differ
diff --git a/img/ch4/image28.jpeg b/img/ch4/image28.jpeg
deleted file mode 100644
index 931a1d6..0000000
Binary files a/img/ch4/image28.jpeg and /dev/null differ
diff --git a/img/ch4/image29.png b/img/ch4/image29.png
deleted file mode 100644
index 026b9ab..0000000
Binary files a/img/ch4/image29.png and /dev/null differ
diff --git a/img/ch4/image3.png b/img/ch4/image3.png
deleted file mode 100644
index aeedc2d..0000000
Binary files a/img/ch4/image3.png and /dev/null differ
diff --git a/img/ch4/image30.png b/img/ch4/image30.png
deleted file mode 100644
index 52c10eb..0000000
Binary files a/img/ch4/image30.png and /dev/null differ
diff --git a/img/ch4/image31.png b/img/ch4/image31.png
deleted file mode 100644
index 5d23886..0000000
Binary files a/img/ch4/image31.png and /dev/null differ
diff --git a/img/ch4/image32.png b/img/ch4/image32.png
deleted file mode 100644
index 7b463da..0000000
Binary files a/img/ch4/image32.png and /dev/null differ
diff --git a/img/ch4/image33.png b/img/ch4/image33.png
deleted file mode 100644
index 43d7908..0000000
Binary files a/img/ch4/image33.png and /dev/null differ
diff --git a/img/ch4/image34.png b/img/ch4/image34.png
deleted file mode 100644
index 9501608..0000000
Binary files a/img/ch4/image34.png and /dev/null differ
diff --git a/img/ch4/image35.png b/img/ch4/image35.png
deleted file mode 100644
index 083675c..0000000
Binary files a/img/ch4/image35.png and /dev/null differ
diff --git a/img/ch4/image36.png b/img/ch4/image36.png
deleted file mode 100644
index 404390c..0000000
Binary files a/img/ch4/image36.png and /dev/null differ
diff --git a/img/ch4/image37.png b/img/ch4/image37.png
deleted file mode 100644
index 6f16300..0000000
Binary files a/img/ch4/image37.png and /dev/null differ
diff --git a/img/ch4/image38.png b/img/ch4/image38.png
deleted file mode 100644
index 2bed01b..0000000
Binary files a/img/ch4/image38.png and /dev/null differ
diff --git a/img/ch4/image39.png b/img/ch4/image39.png
deleted file mode 100644
index 66c49a2..0000000
Binary files a/img/ch4/image39.png and /dev/null differ
diff --git a/img/ch4/image4.png b/img/ch4/image4.png
deleted file mode 100644
index 3719377..0000000
Binary files a/img/ch4/image4.png and /dev/null differ
diff --git a/img/ch4/image40.png b/img/ch4/image40.png
deleted file mode 100644
index 8643e43..0000000
Binary files a/img/ch4/image40.png and /dev/null differ
diff --git a/img/ch4/image41.png b/img/ch4/image41.png
deleted file mode 100644
index 32bf30d..0000000
Binary files a/img/ch4/image41.png and /dev/null differ
diff --git a/img/ch4/image42.png b/img/ch4/image42.png
deleted file mode 100644
index 233128e..0000000
Binary files a/img/ch4/image42.png and /dev/null differ
diff --git a/img/ch4/image43.png b/img/ch4/image43.png
deleted file mode 100644
index 4371335..0000000
Binary files a/img/ch4/image43.png and /dev/null differ
diff --git a/img/ch4/image44.png b/img/ch4/image44.png
deleted file mode 100644
index c1da265..0000000
Binary files a/img/ch4/image44.png and /dev/null differ
diff --git a/img/ch4/image45.png b/img/ch4/image45.png
deleted file mode 100644
index f5257d0..0000000
Binary files a/img/ch4/image45.png and /dev/null differ
diff --git a/img/ch4/image46.png b/img/ch4/image46.png
deleted file mode 100644
index 3dbb511..0000000
Binary files a/img/ch4/image46.png and /dev/null differ
diff --git a/img/ch4/image47.png b/img/ch4/image47.png
deleted file mode 100644
index adcebab..0000000
Binary files a/img/ch4/image47.png and /dev/null differ
diff --git a/img/ch4/image48.png b/img/ch4/image48.png
deleted file mode 100644
index 97801f0..0000000
Binary files a/img/ch4/image48.png and /dev/null differ
diff --git a/img/ch4/image49.png b/img/ch4/image49.png
deleted file mode 100644
index 883bc7b..0000000
Binary files a/img/ch4/image49.png and /dev/null differ
diff --git a/img/ch4/image5.png b/img/ch4/image5.png
deleted file mode 100644
index 6c518d6..0000000
Binary files a/img/ch4/image5.png and /dev/null differ
diff --git a/img/ch4/image50.png b/img/ch4/image50.png
deleted file mode 100644
index e265b45..0000000
Binary files a/img/ch4/image50.png and /dev/null differ
diff --git a/img/ch4/image51.png b/img/ch4/image51.png
deleted file mode 100644
index 34133a0..0000000
Binary files a/img/ch4/image51.png and /dev/null differ
diff --git a/img/ch4/image52.png b/img/ch4/image52.png
deleted file mode 100644
index a6ed65b..0000000
Binary files a/img/ch4/image52.png and /dev/null differ
diff --git a/img/ch4/image53.png b/img/ch4/image53.png
deleted file mode 100644
index ec92de4..0000000
Binary files a/img/ch4/image53.png and /dev/null differ
diff --git a/img/ch4/image54.png b/img/ch4/image54.png
deleted file mode 100644
index 3558da8..0000000
Binary files a/img/ch4/image54.png and /dev/null differ
diff --git a/img/ch4/image55.png b/img/ch4/image55.png
deleted file mode 100644
index 963436a..0000000
Binary files a/img/ch4/image55.png and /dev/null differ
diff --git a/img/ch4/image56.png b/img/ch4/image56.png
deleted file mode 100644
index c07aed2..0000000
Binary files a/img/ch4/image56.png and /dev/null differ
diff --git a/img/ch4/image57.png b/img/ch4/image57.png
deleted file mode 100644
index 77faac5..0000000
Binary files a/img/ch4/image57.png and /dev/null differ
diff --git a/img/ch4/image58.png b/img/ch4/image58.png
deleted file mode 100644
index e636007..0000000
Binary files a/img/ch4/image58.png and /dev/null differ
diff --git a/img/ch4/image59.png b/img/ch4/image59.png
deleted file mode 100644
index fc9fa99..0000000
Binary files a/img/ch4/image59.png and /dev/null differ
diff --git a/img/ch4/image6.png b/img/ch4/image6.png
deleted file mode 100644
index f1509b8..0000000
Binary files a/img/ch4/image6.png and /dev/null differ
diff --git a/img/ch4/image60.jpeg b/img/ch4/image60.jpeg
deleted file mode 100644
index 5f45a37..0000000
Binary files a/img/ch4/image60.jpeg and /dev/null differ
diff --git a/img/ch4/image61.png b/img/ch4/image61.png
deleted file mode 100644
index dd7b128..0000000
Binary files a/img/ch4/image61.png and /dev/null differ
diff --git a/img/ch4/image62.png b/img/ch4/image62.png
deleted file mode 100644
index 221fb4b..0000000
Binary files a/img/ch4/image62.png and /dev/null differ
diff --git a/img/ch4/image7.png b/img/ch4/image7.png
deleted file mode 100644
index 0c5fe01..0000000
Binary files a/img/ch4/image7.png and /dev/null differ
diff --git a/img/ch4/image8.png b/img/ch4/image8.png
deleted file mode 100644
index 20a6a5d..0000000
Binary files a/img/ch4/image8.png and /dev/null differ
diff --git a/img/ch4/image9.png b/img/ch4/image9.png
deleted file mode 100644
index b2fc2e7..0000000
Binary files a/img/ch4/image9.png and /dev/null differ
diff --git a/MarkDown/第(待定合并某)章_正则化.md b/第(待定合并某)章_正则化.md
similarity index 99%
rename from MarkDown/第(待定合并某)章_正则化.md
rename to 第(待定合并某)章_正则化.md
index 72be197..144b2dc 100644
--- a/MarkDown/第(待定合并某)章_正则化.md
+++ b/第(待定合并某)章_正则化.md
@@ -1,60 +1,60 @@
-# 第十五章 正则化
-
-> Markdown Revision 1;
-> Date: 2018/10/25
-> Editor: 乔成磊-同济大学
-> Contact: qchl0318@163.com
-
-## 15.1 什么是正则化?
-## 15.2 正则化原理?
-## 15.3 为什么要正则化?
-除了正则化和随机失活(dropout)正则化,还有几种方法可以减少神经网络中的过拟合:
-深度学习可能存在过拟合问题——高方差,有两个解决方法,一个是正则化,另一个是准备更多的数据,这是非常可靠的方法,但你可能无法时时刻刻准备足够多的训练数据或者获取更多数据的成本很高,但正则化通常有助于避免过拟合或减少你的网络误差。
-如果你怀疑神经网络过度拟合了数据,即存在高方差问题,那么最先想到的方法可能是正则化,另一个解决高方差的方法就是准备更多数据,这也是非常可靠的办法,但你可能无法时时准备足够多的训练数据,或者,获取更多数据的成本很高,但正则化有助于避免过度拟合,或者减少网络误差,下面我们就来讲讲正则化的作用原理。
-## 15.4 为什么正则化有利于预防过拟合?
-
-
-左图是高偏差,右图是高方差,中间是Just Right,这几张图我们在前面课程中看到过。
-## 15.5 为什么正则化可以减少方差?
-## 15.6 L2正则化的理解?
-## 15.7 理解dropout正则化
-Dropout可以随机删除网络中的神经单元,他为什么可以通过正则化发挥如此大的作用呢?
-直观上理解:不要依赖于任何一个特征,因为该单元的输入可能随时被清除,因此该单元通过这种方式传播下去,并为单元的四个输入增加一点权重,通过传播所有权重,dropout将产生收缩权重的平方范数的效果,和之前讲的L2正则化类似;实施dropout的结果实它会压缩权重,并完成一些预防过拟合的外层正则化;L2对不同权重的衰减是不同的,它取决于激活函数倍增的大小。
-## 15.8 有哪些dropout正则化方法?
-## 15.9 如何实施dropout正则化?
-如何实施dropout呢?方法有几种,接下来我要讲的是最常用的方法,即inverted dropout(反向随机失活),出于完整性考虑,我们用一个三层()网络来举例说明。编码中会有很多涉及到3的地方。我只举例说明如何在某一层中实施dropout。
-## 15.10 Python实现dropout正则化
-## 15.11 正则化和dropout 有什么不同?
-dropout的功能类似于正则化,与正则化不同的是应用方式不同会带来一点点小变化,甚至更适用于不同的输入范围。
-第二个直观认识是,我们从单个神经元入手,如图,这个单元的工作就是输入并生成一些有意义的输出。通过dropout,该单元的输入几乎被消除,有时这两个单元会被删除,有时会删除其它单元,就是说,我用紫色圈起来的这个单元,它不能依靠任何特征,因为特征都有可能被随机清除,或者说该单元的输入也都可能被随机清除。我不愿意把所有赌注都放在一个节点上,不愿意给任何一个输入加上太多权重,因为它可能会被删除,因此该单元将通过这种方式积极地传播开,并为单元的四个输入增加一点权重,通过传播所有权重,dropout将产生收缩权重的平方范数的效果,和我们之前讲过的正则化类似,实施dropout的结果是它会压缩权重,并完成一些预防过拟合的外层正则化。
-事实证明,dropout被正式地作为一种正则化的替代形式,对不同权重的衰减是不同的,它取决于倍增的激活函数的大小。
-总结一下,dropout的功能类似于正则化,与正则化不同的是,被应用的方式不同,dropout也会有所不同,甚至更适用于不同的输入范围。
-## 15.12 dropout有什么缺点?
-dropout一大缺点就是代价函数J不再被明确定义,每次迭代,都会随机移除一些节点,如果再三检查梯度下降的性能,实际上是很难进行复查的。定义明确的代价函数J每次迭代后都会下降,因为我们所优化的代价函数J实际上并没有明确定义,或者说在某种程度上很难计算,所以我们失去了调试工具来绘制这样的图片。我通常会关闭dropout函数,将keep-prob的值设为1,运行代码,确保J函数单调递减。然后打开dropout函数,希望在dropout过程中,代码并未引入bug。我觉得你也可以尝试其它方法,虽然我们并没有关于这些方法性能的数据统计,但你可以把它们与dropout方法一起使用。
-## 15.13 其他正则化方法?
-
-**一.数据扩增**
-
-假设你正在拟合猫咪图片分类器,如果你想通过扩增训练数据来解决过拟合,但扩增数据代价高,而且有时候我们无法扩增数据,但我们可以通过添加这类图片来增加训练集。例如,水平翻转图片,并把它添加到训练集。所以现在训练集中有原图,还有翻转后的这张图片,所以通过水平翻转图片,训练集则可以增大一倍,因为训练集有冗余,这虽然不如我们额外收集一组新图片那么好,但这样做节省了获取更多猫咪图片的花费。
-除了水平翻转图片,你也可以随意裁剪图片,这张图是把原图旋转并随意放大后裁剪的,仍能辨别出图片中的猫咪。
-通过随意翻转和裁剪图片,我们可以增大数据集,额外生成假训练数据。和全新的,独立的猫咪图片数据相比,这些额外的假的数据无法包含像全新数据那么多的信息,但我们这么做基本没有花费,代价几乎为零,除了一些对抗性代价。以这种方式扩增算法数据,进而正则化数据集,减少过拟合比较廉价。
-像这样人工合成数据的话,我们要通过算法验证,图片中的猫经过水平翻转之后依然是猫。大家注意,我并没有垂直翻转,因为我们不想上下颠倒图片,也可以随机选取放大后的部分图片,猫可能还在上面。
-对于光学字符识别,我们还可以通过添加数字,随意旋转或扭曲数字来扩增数据,把这些数字添加到训练集,它们仍然是数字。为了方便说明,我对字符做了强变形处理,所以数字4看起来是波形的,其实不用对数字4做这么夸张的扭曲,只要轻微的变形就好,我做成这样是为了让大家看的更清楚。实际操作的时候,我们通常对字符做更轻微的变形处理。因为这几个4看起来有点扭曲。所以,数据扩增可作为正则化方法使用,实际功能上也与正则化相似。
-
-**二.early stopping**
-
-还有另外一种常用的方法叫作early stopping,运行梯度下降时,我们可以绘制训练误差,或只绘制代价函数J的优化过程,在训练集上用0-1记录分类误差次数。呈单调下降趋势,如图。
-因为在训练过程中,我们希望训练误差,代价函数J都在下降,通过early stopping,我们不但可以绘制上面这些内容,还可以绘制验证集误差,它可以是验证集上的分类误差,或验证集上的代价函数,逻辑损失和对数损失等,你会发现,验证集误差通常会先呈下降趋势,然后在某个节点处开始上升,early stopping的作用是,你会说,神经网络已经在这个迭代过程中表现得很好了,我们在此停止训练吧,得到验证集误差,它是怎么发挥作用的?
-在机器学习中,超级参数激增,选出可行的算法也变得越来越复杂。我发现,如果我们用一组工具优化代价函数,机器学习就会变得更简单,在重点优化代价函数时,你只需要留意和,的值越小越好,你只需要想办法减小这个值,其它的不用关注。然后,预防过拟合还有其他任务,换句话说就是减少方差,这一步我们用另外一套工具来实现,这个原理有时被称为“正交化”。思路就是在一个时间做一个任务,后面课上我会具体介绍正交化,如果你还不了解这个概念,不用担心。
-但对我来说early stopping的主要缺点就是你不能独立地处理这两个问题,因为提早停止梯度下降,也就是停止了优化代价函数,因为现在你不再尝试降低代价函数J,所以代价函数的值可能不够小,同时你又希望不出现过拟合,你没有采取不同的方式来解决这两个问题,而是用一种方法同时解决两个问题,这样做的结果是我要考虑的东西变得更复杂。
-如果不用early stopping,另一种方法就是正则化,训练神经网络的时间就可能很长。我发现,这导致超级参数搜索空间更容易分解,也更容易搜索,但是缺点在于,你必须尝试很多正则化参数的值,这也导致搜索大量值的计算代价太高。
-Early stopping的优点是,只运行一次梯度下降,你可以找出的较小值,中间值和较大值,而无需尝试正则化超级参数的很多值。
-如果你还不能完全理解这个概念,没关系,下节课我们会详细讲解正交化,这样会更好理解。
-虽然正则化有缺点,可还是有很多人愿意用它。吴恩达老师个人更倾向于使用正则化,尝试许多不同的值,假设你可以负担大量计算的代价。而使用early stopping也能得到相似结果,还不用尝试这么多值。
-这节课我们讲了如何使用数据扩增,以及如何使用early stopping降低神经网络中的方差或预防过拟合。
-
-
-
-
-
-
+# 第十五章 正则化
+
+> Markdown Revision 1;
+> Date: 2018/10/25
+> Editor: 乔成磊-同济大学
+> Contact: qchl0318@163.com
+
+## 15.1 什么是正则化?
+## 15.2 正则化原理?
+## 15.3 为什么要正则化?
+除了正则化和随机失活(dropout)正则化,还有几种方法可以减少神经网络中的过拟合:
+深度学习可能存在过拟合问题——高方差,有两个解决方法,一个是正则化,另一个是准备更多的数据,这是非常可靠的方法,但你可能无法时时刻刻准备足够多的训练数据或者获取更多数据的成本很高,但正则化通常有助于避免过拟合或减少你的网络误差。
+如果你怀疑神经网络过度拟合了数据,即存在高方差问题,那么最先想到的方法可能是正则化,另一个解决高方差的方法就是准备更多数据,这也是非常可靠的办法,但你可能无法时时准备足够多的训练数据,或者,获取更多数据的成本很高,但正则化有助于避免过度拟合,或者减少网络误差,下面我们就来讲讲正则化的作用原理。
+## 15.4 为什么正则化有利于预防过拟合?
+
+
+左图是高偏差,右图是高方差,中间是Just Right,这几张图我们在前面课程中看到过。
+## 15.5 为什么正则化可以减少方差?
+## 15.6 L2正则化的理解?
+## 15.7 理解dropout正则化
+Dropout可以随机删除网络中的神经单元,他为什么可以通过正则化发挥如此大的作用呢?
+直观上理解:不要依赖于任何一个特征,因为该单元的输入可能随时被清除,因此该单元通过这种方式传播下去,并为单元的四个输入增加一点权重,通过传播所有权重,dropout将产生收缩权重的平方范数的效果,和之前讲的L2正则化类似;实施dropout的结果实它会压缩权重,并完成一些预防过拟合的外层正则化;L2对不同权重的衰减是不同的,它取决于激活函数倍增的大小。
+## 15.8 有哪些dropout正则化方法?
+## 15.9 如何实施dropout正则化?
+如何实施dropout呢?方法有几种,接下来我要讲的是最常用的方法,即inverted dropout(反向随机失活),出于完整性考虑,我们用一个三层()网络来举例说明。编码中会有很多涉及到3的地方。我只举例说明如何在某一层中实施dropout。
+## 15.10 Python实现dropout正则化
+## 15.11 正则化和dropout 有什么不同?
+dropout的功能类似于正则化,与正则化不同的是应用方式不同会带来一点点小变化,甚至更适用于不同的输入范围。
+第二个直观认识是,我们从单个神经元入手,如图,这个单元的工作就是输入并生成一些有意义的输出。通过dropout,该单元的输入几乎被消除,有时这两个单元会被删除,有时会删除其它单元,就是说,我用紫色圈起来的这个单元,它不能依靠任何特征,因为特征都有可能被随机清除,或者说该单元的输入也都可能被随机清除。我不愿意把所有赌注都放在一个节点上,不愿意给任何一个输入加上太多权重,因为它可能会被删除,因此该单元将通过这种方式积极地传播开,并为单元的四个输入增加一点权重,通过传播所有权重,dropout将产生收缩权重的平方范数的效果,和我们之前讲过的正则化类似,实施dropout的结果是它会压缩权重,并完成一些预防过拟合的外层正则化。
+事实证明,dropout被正式地作为一种正则化的替代形式,对不同权重的衰减是不同的,它取决于倍增的激活函数的大小。
+总结一下,dropout的功能类似于正则化,与正则化不同的是,被应用的方式不同,dropout也会有所不同,甚至更适用于不同的输入范围。
+## 15.12 dropout有什么缺点?
+dropout一大缺点就是代价函数J不再被明确定义,每次迭代,都会随机移除一些节点,如果再三检查梯度下降的性能,实际上是很难进行复查的。定义明确的代价函数J每次迭代后都会下降,因为我们所优化的代价函数J实际上并没有明确定义,或者说在某种程度上很难计算,所以我们失去了调试工具来绘制这样的图片。我通常会关闭dropout函数,将keep-prob的值设为1,运行代码,确保J函数单调递减。然后打开dropout函数,希望在dropout过程中,代码并未引入bug。我觉得你也可以尝试其它方法,虽然我们并没有关于这些方法性能的数据统计,但你可以把它们与dropout方法一起使用。
+## 15.13 其他正则化方法?
+
+**一.数据扩增**
+
+假设你正在拟合猫咪图片分类器,如果你想通过扩增训练数据来解决过拟合,但扩增数据代价高,而且有时候我们无法扩增数据,但我们可以通过添加这类图片来增加训练集。例如,水平翻转图片,并把它添加到训练集。所以现在训练集中有原图,还有翻转后的这张图片,所以通过水平翻转图片,训练集则可以增大一倍,因为训练集有冗余,这虽然不如我们额外收集一组新图片那么好,但这样做节省了获取更多猫咪图片的花费。
+除了水平翻转图片,你也可以随意裁剪图片,这张图是把原图旋转并随意放大后裁剪的,仍能辨别出图片中的猫咪。
+通过随意翻转和裁剪图片,我们可以增大数据集,额外生成假训练数据。和全新的,独立的猫咪图片数据相比,这些额外的假的数据无法包含像全新数据那么多的信息,但我们这么做基本没有花费,代价几乎为零,除了一些对抗性代价。以这种方式扩增算法数据,进而正则化数据集,减少过拟合比较廉价。
+像这样人工合成数据的话,我们要通过算法验证,图片中的猫经过水平翻转之后依然是猫。大家注意,我并没有垂直翻转,因为我们不想上下颠倒图片,也可以随机选取放大后的部分图片,猫可能还在上面。
+对于光学字符识别,我们还可以通过添加数字,随意旋转或扭曲数字来扩增数据,把这些数字添加到训练集,它们仍然是数字。为了方便说明,我对字符做了强变形处理,所以数字4看起来是波形的,其实不用对数字4做这么夸张的扭曲,只要轻微的变形就好,我做成这样是为了让大家看的更清楚。实际操作的时候,我们通常对字符做更轻微的变形处理。因为这几个4看起来有点扭曲。所以,数据扩增可作为正则化方法使用,实际功能上也与正则化相似。
+
+**二.early stopping**
+
+还有另外一种常用的方法叫作early stopping,运行梯度下降时,我们可以绘制训练误差,或只绘制代价函数J的优化过程,在训练集上用0-1记录分类误差次数。呈单调下降趋势,如图。
+因为在训练过程中,我们希望训练误差,代价函数J都在下降,通过early stopping,我们不但可以绘制上面这些内容,还可以绘制验证集误差,它可以是验证集上的分类误差,或验证集上的代价函数,逻辑损失和对数损失等,你会发现,验证集误差通常会先呈下降趋势,然后在某个节点处开始上升,early stopping的作用是,你会说,神经网络已经在这个迭代过程中表现得很好了,我们在此停止训练吧,得到验证集误差,它是怎么发挥作用的?
+在机器学习中,超级参数激增,选出可行的算法也变得越来越复杂。我发现,如果我们用一组工具优化代价函数,机器学习就会变得更简单,在重点优化代价函数时,你只需要留意和,的值越小越好,你只需要想办法减小这个值,其它的不用关注。然后,预防过拟合还有其他任务,换句话说就是减少方差,这一步我们用另外一套工具来实现,这个原理有时被称为“正交化”。思路就是在一个时间做一个任务,后面课上我会具体介绍正交化,如果你还不了解这个概念,不用担心。
+但对我来说early stopping的主要缺点就是你不能独立地处理这两个问题,因为提早停止梯度下降,也就是停止了优化代价函数,因为现在你不再尝试降低代价函数J,所以代价函数的值可能不够小,同时你又希望不出现过拟合,你没有采取不同的方式来解决这两个问题,而是用一种方法同时解决两个问题,这样做的结果是我要考虑的东西变得更复杂。
+如果不用early stopping,另一种方法就是正则化,训练神经网络的时间就可能很长。我发现,这导致超级参数搜索空间更容易分解,也更容易搜索,但是缺点在于,你必须尝试很多正则化参数的值,这也导致搜索大量值的计算代价太高。
+Early stopping的优点是,只运行一次梯度下降,你可以找出的较小值,中间值和较大值,而无需尝试正则化超级参数的很多值。
+如果你还不能完全理解这个概念,没关系,下节课我们会详细讲解正交化,这样会更好理解。
+虽然正则化有缺点,可还是有很多人愿意用它。吴恩达老师个人更倾向于使用正则化,尝试许多不同的值,假设你可以负担大量计算的代价。而使用early stopping也能得到相似结果,还不用尝试这么多值。
+这节课我们讲了如何使用数据扩增,以及如何使用early stopping降低神经网络中的方差或预防过拟合。
+
+
+
+
+
+