diff --git a/new/handson-1shot-learn-py/4.md b/new/handson-1shot-learn-py/4.md index 5dd213d0f11686d0428e419f06f22a1aaaddc042..e58f6c0c9e1e18ff8f36fea881b2d37267b91c46 100644 --- a/new/handson-1shot-learn-py/4.md +++ b/new/handson-1shot-learn-py/4.md @@ -109,7 +109,7 @@ LSTM 在各种门的帮助下存储信息历史记录,如上图所示。 我 ![](img/5a9a4fca-cdb7-4c9d-9aba-27c879fc4481.png) -此处, ![](img/483507cb-4cb0-4598-aa76-71fcabdafe41.png) 是时间步长`t`的参数, ![](img/cb291113-cc4b-4419-be0f-ab628e911b69.png) 是`t`时的损失梯度,并且 ![](img/e58b0d63-1733-40c2-9ea3-c28b9571e685.png) 是时间`t`时的学习率。 +此处, `θ[t]`是时间步长`t`的参数,`▽L_t`是`t`时的损失梯度,并且`α[t]`是时间`t`时的学习率。 另一方面,LSTM 单元的单元更新方程看起来像这样: @@ -119,13 +119,13 @@ LSTM 在各种门的帮助下存储信息历史记录,如上图所示。 我 ![](img/b38cc62b-318b-4b9e-ba28-0e5eb9a1106d.png) -从逻辑上考虑这一点,我们只想学习![](img/76289600-d237-402b-a0df-ee71b4ae334d.png),因为这与估计梯度下降的*学习率*基本相似。 因此,LSTM 元学习器将 ![](img/9b675949-0d25-4b9c-a70e-76af51ca9a69.png) 定义如下: +从逻辑上考虑这一点,我们只想学习`i[t]`,因为这与估计梯度下降的*学习率*基本相似。 因此,LSTM 元学习器将`i[t]`定义如下: ![](img/da2cd6b1-bca0-456b-8064-23bdb90ef26c.png) 本质上,`i[t]`被定义为具有当前梯度,当前损失和先前学习率 ![](img/991684d7-83b0-429c-91ef-5d41500f2726.png) 的组合的 Sigmoid 函数。 -对于 ![](img/f76a02ea-f996-4c81-a08f-8bf2e6bd97c1.png) ,应为 1,但为避免梯度缩小的问题,其定义如下: +对于`f[t]`,应为 1,但为避免梯度缩小的问题,其定义如下: ![](img/1d551c2d-de09-4a7b-8657-0c310ee85bbb.png) @@ -137,7 +137,7 @@ LSTM 在各种门的帮助下存储信息历史记录,如上图所示。 我 在一般的深度学习设置中,要在给定数据集`D`上训练模型,我们将数据集分为三个部分:训练,验证和测试集。 但是在元学习设置中,我们首先将数据集划分为特定于任务的集(例如,猫品种分类和狗品种分类),称为**元集**,例如 ![](img/3dd71e02-585b-4faf-97b1-18515169a0a1.png) 。 对于每个`D ∈ D[n]`由 ![](img/ecebee63-c8fc-4914-9c04-a57eb42709a7.png)![](img/cef2edc3-0b4e-4301-9716-12701269e95a.png) 组成,因此对于`K`次学习,每个 ![](img/34a3cb7f-a7ac-48d2-a9ea-3e5259206ebc.png) 由`K * N`个示例组成,其中`N`是类数。 -此后, ![](img/69c38655-6d44-4aa8-825a-a3edd9e03780.png) 进一步分为三个部分:![](img/224d8b14-1e25-4552-8310-74fe1d90f03b.png)。 在这里,目标是使用 ![](img/d25156e7-7e5a-4f00-a665-249a333e60c6.png) 训练*学习算法*,该算法可以将任何特定于任务的集合作为训练集 ![](img/0d2fad60-1123-4702-825d-4107499b703b.png) 并产生 更好的分类器(学习器)。 +此后,`D_n_train`进一步分为三个部分:`D_meta_train`,`D_meta_val`,`D_meta_test`。 在这里,目标是使用`D_meta_train`训练*学习算法*,该算法可以将任何特定于任务的集合作为训练集`D_train`并产生 更好的分类器(学习器)。 # 算法–伪代码实现 @@ -145,9 +145,9 @@ LSTM 在各种门的帮助下存储信息历史记录,如上图所示。 我 要开始理解 LSTM 元学习器,首先,我们需要了解某些术语: -* **基础学习器**(`M`):具有特定任务的主要目标,带有参数 ![](img/3a869193-6666-428a-9b6a-c61e430a0a72.png) -例如,用于识别猫的分类器 -* **元学习器**(`R`):LSTM 单元,带有参数,![](img/b72b74c6-cdc3-4fc1-bd73-fa86f86f29ad.png) -* **数据点**(`X, Y`):从 ![](img/413e3fb6-3c9b-41de-942d-df2693286095.png) 采样的数据点 +* **基础学习器**(`M`):具有特定任务的主要目标,带有参数`θ`-例如,用于识别猫的分类器 +* **元学习器**(`R`):LSTM 单元,带有参数,`θ` +* **数据点**(`X, Y`):从`D_meta_train`采样的数据点 * **损失**(`L`):用于调整主要任务特定目标的损失函数,例如,二进制交叉熵损失 让我们开始逐步学习 LSTM 元学习器算法: @@ -160,14 +160,14 @@ LSTM 在各种门的帮助下存储信息历史记录,如上图所示。 我 * 对于`t = 1`至`T`步骤,重复以下步骤: * 从 ![](img/77764a57-316f-4a17-8712-0499a6523669.png) 中随机采样输入输出对 ![](img/71e25973-354f-4d95-b3b0-56383cd261af.png) 。 * 使用 ![](img/307d9408-f535-4291-88fb-e187378dc7fa.png) 计算基础学习器(分类模型)的损失。 -* 使用单元格的基本学习器的损失( ![](img/d1aa0375-2232-46e1-840f-f213a4df4301.png) )及其梯度( ![](img/a74a946f-2e63-419e-a071-52a6583c1b03.png) ),更新单元格状态( ![](img/4aeee18a-9066-46f8-aec9-3db61801cbf1.png) ) 状态方程。 -* 将基本学习器(分类模型)参数更新为![](img/f4cec93e-d6dd-4b3e-a207-339dcb81365c.png)(请参阅 LSTM 元学习器的“架构”部分)。 +* 使用单元格的基本学习器的损失(`L_t`)及其梯度(`▽[θ[t-1]] L_t`),更新单元格状态(`c[t]`) 状态方程。 +* 将基本学习器(分类模型)参数更新为`θ[t] = c[t]`(请参阅 LSTM 元学习器的“架构”部分)。 结束`T`步骤循环。 -* 现在,从 ![](img/282a821c-7838-44d3-8f27-6f005e6ce9a3.png) 中随机采样输入输出对 ![](img/1f1b9829-2e28-4cd8-a7c1-c8d3f4e68943.png) 。 -* 使用 ![](img/71c38e54-fe54-4ff4-965a-2dfc17c028ce.png) 计算基础学习器(分类模型)的损失。 -* 使用 ![](img/1c0b9014-4f36-4cb4-81df-076efdf752ea.png) (请参阅 LSTM 元学习器“架构”部分)更新元学习器(LSTM 单元)参数( ![](img/0a9e3c82-d840-4d57-85fd-8d421048a655.png) )。 +* 现在,从`D_test`中随机采样输入输出对`(X_test, Y_test)`。 +* 使用`L_test = L(M(X_test, θ[T]), Y_test)`计算基础学习器(分类模型)的损失。 +* 使用`▽[θ[d-1]] Y_test`(请参阅 LSTM 元学习器“架构”部分)更新元学习器(LSTM 单元)参数(`θ[t]`)。 结束`n`步骤循环。