From e7e3eaf6f19a5f9afc67aacb03d504e927b16d7b Mon Sep 17 00:00:00 2001 From: nisha617 Date: Wed, 20 Aug 2025 00:25:57 +1000 Subject: [PATCH] Add files via upload --- lectures/back_prop.md | 51 +++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 29 deletions(-) diff --git a/lectures/back_prop.md b/lectures/back_prop.md index e6f1139b..b3074dd8 100644 --- a/lectures/back_prop.md +++ b/lectures/back_prop.md @@ -25,12 +25,12 @@ kernelspec: ## 概述 -**机器学习**和**人工智能**的主要部分包括 +**机器学习**和**人工智能**的重要部分包括 * 用已知函数来近似未知函数 -* 从左右变量的数据集中估计已知函数 +* 从一组输入-输出数据中估计这个已知函数 -本讲座描述了一种广泛用于近似函数$f$的普通**人工神经网络**(ANN)的结构,该函数将空间$X$中的$x$映射到空间$Y$中的$y$。 +本讲座描述了一种广泛用于近似函数$f$的普通**人工神经网络**(ANN)的结构。该函数将空间 $X$ 中的 $x$ 映射到空间 $Y$ 中的 $y$。 为了介绍基本概念,我们研究一个$x$和$y$都是标量的例子。 @@ -43,15 +43,15 @@ kernelspec: ## 一个深度(但不宽)的人工神经网络 -我们描述一个"深度"神经网络,其"宽度"为一。 +我们描述一个"深度"神经网络,其"宽度"为一。 -**深度**意味着网络由组织成图形节点的大量函数组成。 +**深度**指网络由大量函数复合而成,这些函数被组织在图的节点上。 **宽度**指的是被近似函数右侧的变量数量。 -将"宽度"设为一意味着网络仅组合单变量函数。 +宽度为一意味着网络仅复合单变量函数。 -设$x \in \mathbb{R}$为一个标量,$y \in \mathbb{R}$为另一个标量。 +设 $x \in \mathbb{R}$ 为一个标量,$y \in \mathbb{R}$ 为另一个标量。 我们假设$y$是$x$的一个非线性函数: @@ -61,9 +61,9 @@ $$ 我们想用另一个递归定义的函数来近似$f(x)$。 -对于深度为$N \geq 1$的网络,每个**层**$i =1, \ldots N$包含 +对于深度为 $N \geq 1$ 的网络,每**层** $i =1, \ldots N$ 包含 -* 一个输入$x_i$ +* 一个输入 $x_i$ * 一个**仿射函数** $w_i x_i + bI$,其中 $w_i$ 是施加在输入 $x_i$ 上的标量**权重**,$b_i$ 是标量**偏置** * 一个**激活函数** $h_i$,它以 $(w_i x_i + b_i)$ 为参数并产生输出 $x_{i+1}$ @@ -89,7 +89,7 @@ $$ h(z) = z $$ -作为下面的激活函数,我们将对第1层到第N-1层使用sigmoid函数,对第N层使用恒等函数。 +作为下面的激活函数,我们将对第 $1$ 层到第 $N-1$ 层使用sigmoid函数,对第 $N$ 层使用恒等函数。 为了近似函数 $f(x)$,我们按如下方式构造 $\hat f(x)$。 @@ -99,7 +99,7 @@ $$ l_{i}\left(x\right)=w_{i}x+b_{i} . $$ -我们通过迭代函数组合 $h_i \circ l_i$ 来构造 $\hat f$: +我们通过迭代组合函数 $h_i \circ l_i$ 来构造 $\hat f$: $$ f(x)\approx\hat{f}(x)=h_{N}\circ l_{N}\circ h_{N-1}\circ l_{1}\circ\cdots\circ h_{1}\circ l_{1}(x) @@ -112,7 +112,7 @@ $N$ 这个整数越大,神经网络就越"深"。 显然,如果我们知道参数 $\{w_i, b_i\}_{i=1}^N$,那么对于给定的 $x = \tilde x$,我们可以通过迭代以下递归来计算 $\hat f(x)$: $$ -x_{i+1} = h_i \circ l_i(x_i) , \quad, i = 1, \ldots N +x_{i+1} = h_i \circ l_i(x_i) , \quad i = 1, \ldots N $$ (eq:recursion) 从 $x_1 = \tilde x$ 开始。 @@ -125,8 +125,7 @@ $$ (eq:recursion) 设 $\left\{ \left(w_{i},b_{i}\right)\right\} _{i=1}^{N}$ 表示权重和偏置的序列。 -如上所述,对于给定的输入 $x_{1}$,我们的近似函数 $\hat f$ 求值 -在 $x_1$ 等于我们网络的"输出" $x_{N+1}$ 时,可以通过迭代 $x_{i+1}=h_{i}\left(w_{i}x_{i}+b_{i}\right)$ 来计算。 +如上所述,对于给定的输入 $x_{1}$,我们的近似函数 $\hat f$ 在 $x_1$ 的值等于我们网络的"输出" $x_{N+1}$,其中 $x_{N+1}$ 是通过迭代 $x_{i+1}=h_{i}\left(w_{i}x_{i}+b_{i}\right)$ 来计算。 对于给定的**预测值** $\hat{y} (x)$ 和**目标值** $y= f(x)$,考虑损失函数 @@ -142,7 +141,7 @@ $$ \min_{\left\{ \left(w_{i},b_{i}\right)\right\} _{i=1}^{N}} \int {\mathcal L}\left(x_{N+1},y\right)(x) d \mu(x) $$ -其中 $\mu(x)$ 是某个测度,用于衡量我们希望得到 $f(x)$ 的良好近似 $\hat f(x)$ 的点 $x \in \mathbb{R}$。 +其中 $\mu(x)$ 是某个测度,用来衡量哪些点 $x \in \mathbb{R}$ 需要被良好逼近。 将权重和偏置堆叠成参数向量 $p$: @@ -157,7 +156,8 @@ p = \begin{bmatrix} b_N \end{bmatrix} $$ -对**随机梯度下降**算法的一个"简化版本"应用于寻找函数的零点,得到以下参数更新规则: + +一个**随机梯度下降**算法的"简化版本"应用于寻找函数的零点,得到以下参数更新规则: $$ p_{k+1}=p_k-\alpha\frac{d \mathcal{L}}{dx_{N+1}}\frac{dx_{N+1}}{dp_k} @@ -165,7 +165,7 @@ $$ (eq:sgd) 其中 $\frac{d {\mathcal L}}{dx_{N+1}}=-\left(x_{N+1}-y\right)$ 且 $\alpha > 0$ 是步长。 -(参见[这里](https://en.wikipedia.org/wiki/Gradient_descent#Description)和[这里](https://en.wikipedia.org/wiki/Newton%27s_method)以了解随机梯度下降与牛顿法的关系。) +(参见[这里](https://baike.baidu.com/item/%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E6%B3%95/8641233)和[这里](https://baike.baidu.com/item/%E7%89%9B%E9%A1%BF%E8%BF%AD%E4%BB%A3%E6%B3%95/10887580)以了解随机梯度下降与牛顿法的关系。) 要实现这个参数更新规则的一个步骤,我们需要导数向量 $\frac{dx_{N+1}}{dp_k}$。 @@ -176,18 +176,13 @@ $$ (eq:sgd) 得益于 * 微分演算中的链式法则和乘积法则的性质,以及 - * 下三角矩阵的性质 + 反向传播实际上可以通过以下两步完成: * 求下三角矩阵的逆矩阵,以及 - * 矩阵乘法 -(这个想法来自 MIT 的 Alan Edelman 在这个精彩的 YouTube 视频的最后 7 分钟) - -```{youtube} rZS2LGiurKY -``` 下面开始。 @@ -262,7 +257,7 @@ dx_{N+1}/db_{N} \end{array}\right)=e_{N}\left(I-L\right)^{-1}D. $$ -然后我们可以通过对一组输入-输出对$\left\{ \left(x_{1}^{i},y^{i}\right)\right\} _{i=1}^{M}$(我们称之为"训练集")多次应用我们的$p$更新来解决上述问题。 +然后我们可以通过对一组输入-输出对 $\left\{ \left(x_{1}^{i},y^{i}\right)\right\} _{i=1}^{M}$(我们称之为"训练集")多次应用我们的 $p$ 更新来解决上述问题。 ## 训练集 @@ -410,14 +405,12 @@ update_ad(params, x, y) ``` ## 示例 1 -考虑函数 +考虑在区间 $\left[0.5,3\right]$ 上的函数 $$ f\left(x\right)=-3x+2 $$ -在区间 $\left[0.5,3\right]$ 上。 - 我们使用200个点的均匀网格,并对网格上的每个点更新参数300次。 $h_{i}$ 是除最后一层外所有层的sigmoid激活函数,最后一层使用恒等函数,且 $N=3$。 @@ -472,9 +465,9 @@ Image(fig.to_image(format="png")) 思考上述例子中加深神经网络如何影响近似质量是一件很有趣的事 -* 如果网络太深,你会遇到[梯度消失问题](http://neuralnetworksanddeeplearning.com/chap5.html) +* 如果网络太深,你会遇到[梯度消失问题](https://www.zhihu.com/question/645999362/answer/3481844539) * 在本讲所考虑的情况下,步长和训练轮数等其他参数可能与网络层数一样重要或更重要 -* 实际上,由于$f$是$x$的线性函数,使用恒等映射作为激活函数的单层网络可能效果最好。 +* 实际上,由于 $f$ 是 $x$ 的线性函数,使用恒等映射作为激活函数的单层网络可能效果最好。