From caefb256d23fd849386f8f59901ff325c98d13e7 Mon Sep 17 00:00:00 2001 From: wizardforcel <562826179@qq.com> Date: Fri, 1 Nov 2019 20:06:17 +0800 Subject: [PATCH] 2019-11-01 20:06:17 --- .../README.md | 47 +++++++++++++++---- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/docs/super-machine-learning-revision-notes/README.md b/docs/super-machine-learning-revision-notes/README.md index e08a70d..3c4b4fa 100644 --- a/docs/super-machine-learning-revision-notes/README.md +++ b/docs/super-machine-learning-revision-notes/README.md @@ -112,11 +112,11 @@ Repeat{ W := W - (lambda/m) * W - learning_rate * dJ(W)/dW} 如果我们拥有庞大的训练数据集,那么在单个周期训练模型将花费很长时间。 对于我们而言,跟踪训练过程将非常困难。 在小批量梯度下降中,基于当前批量中的训练示例计算成本和梯度。 -![](img/tex-02129bb861061d1a052c592e2dc6b383.gif)代表整个训练,分为以下几批。 ![](img/tex-6f8f57715090da2632453988d9a1501b.gif)是训练示例的数量。 +![](img/tex-02129bb861061d1a052c592e2dc6b383.gif)代表整个训练集,分为以下几批。 ![](img/tex-6f8f57715090da2632453988d9a1501b.gif)是训练示例的数量。 ![mini-batches of training data X](img/dd79564b598f15cfc78a84bc0452d195.jpg) -小批处理的过程如下: +小批量的过程如下: ``` @@ -137,7 +137,9 @@ For t= (1, ... , #Batches): #### 选择小批量 批量大小: + 1)如果大小为![](img/tex-69691c7bdcc3ce6d5d8a1361f22d04ac.gif),即整个训练集中的示例数,则梯度下降就恰好是“批量梯度下降”。 + 2)如果大小为1,则称为随机梯度下降。 实际上,大小是在1到M之间选择的。当![](img/tex-88914f3ddc98afcb84444299d86fef97.gif)时,该数据集应该是较小的数据集,使用“批量梯度下降”是可以接受的。 当![](img/tex-cabf540e7cc75f01020991e2bb935098.gif)时,可能小批量梯度下降是训练模型的更好方法。 通常,小批量大小可以是64、128、256等。 @@ -149,11 +151,15 @@ For t= (1, ... , #Batches): #### 具有动量的梯度下降(总是比SGD更快) 在每个小批量迭代![](img/tex-e358efa489f58062f10dd7316b65649e.gif)上: -1)在当前小批量 -上计算![](img/tex-8ceb6623210b5b482cefa74271cde36f.gif)和![](img/tex-d77d5e503ad1439f585ac494268b351b.gif) + +1)在当前小批量上计算![](img/tex-8ceb6623210b5b482cefa74271cde36f.gif)和![](img/tex-d77d5e503ad1439f585ac494268b351b.gif) + 2)![](img/tex-f22fe2a7d88e51438a58d0c08491d7fd.gif) + 3)![](img/tex-4651155988e1fdd15e649648c9c36ee7.gif) + 4)![](img/tex-c810382a8ac85fa2dd6ebaf64ac52d36.gif) + 5)![](img/tex-7da4fbb8886cfb4cb132500557026467.gif) 动量的超参数是![](img/tex-7b7f9dbfea05c83784f8b85149852f08.gif)(学习率)和![](img/tex-b0603860fcffe94e5b8eec59ed813421.gif)。 动量方面,![](img/tex-33365520fc7161b5a0e8924b3cf841f3.gif)是先前梯度的历史信息。 如果设置![](img/tex-0775a56d238029e41375f6c276990ace.gif),则意味着我们要考虑最近10次迭代的梯度来更新参数。 @@ -163,25 +169,35 @@ For t= (1, ... , #Batches): #### RMSprop的梯度下降 在每个小批量迭代![](img/tex-e358efa489f58062f10dd7316b65649e.gif)上: -1)在当前小批量 -上计算![](img/tex-8ceb6623210b5b482cefa74271cde36f.gif)和![](img/tex-d77d5e503ad1439f585ac494268b351b.gif) + +1)在当前小批量上计算![](img/tex-8ceb6623210b5b482cefa74271cde36f.gif)和![](img/tex-d77d5e503ad1439f585ac494268b351b.gif) + 2)![](img/tex-4f190dafeac083bc319a339e986eae9b.gif) + 3)![](img/tex-db138aef82ab076a3615caa1eed12ec2.gif) + 4)![](img/tex-cfb0685dd9d2c7750b6f7e470e980d68.gif) + 5)![](img/tex-2acdb4a69c8067a4378a0566ed6bc792.gif) #### Adam(将动量和RMSprop放在一起) ![](img/tex-17b069f79cf8ce5adc13f32d7db99b32.gif),![](img/tex-8093eae53dc1e829c7d753798a62f385.gif),![](img/tex-9b1259abace211373243b44aaf4a36c3.gif),![](img/tex-1a8874a987eda34399cf849b04d65f0b.gif) + 在每个小批量迭代中![](img/tex-e358efa489f58062f10dd7316b65649e.gif): -1)在当前小批量 -上计算![](img/tex-8ceb6623210b5b482cefa74271cde36f.gif)和![](img/tex-d77d5e503ad1439f585ac494268b351b.gif)。 + +1)在当前小批量上计算![](img/tex-8ceb6623210b5b482cefa74271cde36f.gif)和![](img/tex-d77d5e503ad1439f585ac494268b351b.gif)。 + 2)![](img/tex-922af9cc345af5e54f0cd595b053bcce.gif) + 3)![](img/tex-78aec4ade9bff570a511d37a16925e78.gif) 4)![](img/tex-610e7529493c0c7a8b25247495b31a65.gif) + 5)![](img/tex-a3172c5736057baf1102cb4ba1fd0ec4.gif) + 6)![](img/tex-e8cc103eadb7f153d0fb22c628b92cd3.gif) + 7)![](img/tex-42c4f85396cc3e77df0477745c546901.gif) ![](img/tex-42c4f85396cc3e77df0477745c546901.gif) ![](img/tex-42c4f85396cc3e77df0477745c546901.gif) ![](img/tex-42c4f85396cc3e77df0477745c546901.gif) ![](img/tex-42c4f85396cc3e77df0477745c546901.gif) ![](img/tex-42c4f85396cc3e77df0477745c546901.gif) ![](img/tex-42c4f85396cc3e77df0477745c546901.gif) ![](img/tex-f02676ceb92c11ff7dc9df6ad0eda1ad.gif) ![](img/tex-9ad8d6a5b8ec30f7aa8e665c105b708d.gif) @@ -449,10 +465,13 @@ softmax回归将logistic回归(二元分类)概括为多个类(多类分 如上图所示,它是3类分类神经网络。 在最后一层,使用softmax激活函数。 输出是每个类别的概率。 softmax激活如下。 + 1)![](img/tex-7d7b7e529d4d3b5c9455640484b7f71b.gif) 2)![](img/tex-9adb2ad4eaf5a42babe8391e7bd0b520.gif) + ![](img/tex-0bb4ef8e89ade3eb2f650a41aeaa8fc0.gif) + ![](img/tex-62cf744974e047aa1ea675c97ef5ef4f.gif) ##### 损失函数 @@ -702,9 +721,13 @@ softmax激活如下。 该算法可以找到对同一物体的多次检测。 例如,在上图中,它为猫找到2个边界框,为狗找到3个边界框。 非最大抑制算法可确保每个对象仅被检测一次。 步骤: + 1)丢弃所有带有![](img/tex-11f8f4da3f0cb3a5ec5756ad8b81a889.gif)的框 + 2)对于任何剩下的框: + a)选择具有最大![](img/tex-8ad5f203212aab1878f7eebded21fc60.gif)的框作为预测输出 + b)在最后一步中,将所有带有![](img/tex-011310f4e5761898d60b776931cb9b01.gif)的剩余框与选中的框一起丢弃,然后从 a 开始重复。 @@ -1235,7 +1258,9 @@ BERT论文的下图显示了如何将模型用于不同的任务。 * 确保开发和测试集来自同一分布 **我们可能遇到的另一种情况**: + 1)我们要为特定域构建系统,但是在该域中我们只有几个标记数据集(例如10,000) + 2)我们 可以从类似的任务中获得更大的数据集(例如200,000个实例)。 在这种情况下,如何构建训练,开发和测试集? @@ -1243,8 +1268,11 @@ BERT论文的下图显示了如何将模型用于不同的任务。 最简单的方法是将两个数据集组合在一起并对其进行随机排序。 然后,我们可以将合并的数据集分为三个部分(训练,开发和测试集)。 但是,这不是一个好主意。 因为我们的目标是为我们自己的特定领域构建系统。 将没有来自我们自己域的一些实例添加到开发/测试数据集中以评估我们的系统是没有意义的。 合理的方法是: + 1)将所有更容易使用的实例(例如200,000)添加到训练集中 + 2)从特定域数据集中选择一些实例并将它们添加到训练集中 + 3)将我们自己领域的其余实例分为开发和测试集 ![dataset](img/82ba87dda9fab264206383db7052c862.jpg) @@ -1282,8 +1310,11 @@ BERT论文的下图显示了如何将模型用于不同的任务。 尽管模型误差相同,但在左图中人为误差为1%时,我们有高偏差问题,而在右图中有高方差问题。 至于模型的性能,有时它可能比人类的模型更好。 但是只要模型的性能不如人类,我们就可以: + 1)从人类获得更多的标记数据 + 2)从手动误差分析中获得见解 + 3)从偏差/方差分析中获得见解 -- GitLab