IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 误差反向传播中的链式求导法则 -> 正文阅读

[人工智能]误差反向传播中的链式求导法则

1 复合函数和可微性

有函数 y = f ( u ) y= f(u) y=f(u) , 同时有另一个函数 u = g ( x ) u= g(x) u=g(x), 当 y 表示为 x 的函数时,可以变为 y = f ( g ( x ) ) y= f(g(x)) y=f(g(x)) 的嵌套结构。嵌套结构 f ( g ( x ) ) f(g(x)) f(g(x)) 称为 f ( u ) f(u) f(u) g ( x ) g(x) g(x)复合函数

对于函数 f 的可微性,我们说函数 f 在 x0 点可微,也即是函数 f 在点 x0 处的极限存在:
在这里插入图片描述

2 单变量函数链式法则

单变量函数 y = f ( u ) y= f(u) y=f(u), u 表示为单变量函数 u = g ( x ) u= g(x) u=g(x) 时,复合函数 f ( g ( x ) ) f(g(x)) f(g(x)) 的导函数可以通过下式求出:
d y d x = d y d u d u d x (1) \frac{dy}{dx}=\frac{dy}{du}\frac{du}{dx} \tag{1} dxdy?=dudy?dxdu?(1)

:对 x 的函数 y = 1 1 + e ? ( w x + b ) y=\frac{1}{1+e^{-(wx+b)}} y=1+e?(wx+b)1? (w, b 为常数)求导

解: 设函数 y = 1 1 + e ? u y=\frac{1}{1+e^{-u}} y=1+e?u1?, u = w x + b u=wx+b u=wx+b,第一个式子为 sigmoid 函数,导数为 d y d u = y ( 1 ? y ) \frac{dy}{du}=y(1-y) dudy?=y(1?y), 第二个式子 d u d x = w \frac{du}{dx}=w dxdu?=w
所以,可以得到:
d y d x = d y d u d u d x = y ( 1 ? y ) w = w 1 + e ? ( w x + b ) ( 1 ? 1 1 + e ? ( w x + b ) ) \frac{dy}{dx}=\frac{dy}{du}\frac{du}{dx}=y(1-y)w=\frac{w}{1+e^{-(wx+b)}}(1-\frac{1}{1+e^{-(wx+b)}}) dxdy?=dudy?dxdu?=y(1?y)w=1+e?(wx+b)w?(1?1+e?(wx+b)1?)

补充: 关于 sigmoid 函数 s ( x ) = 1 1 + e ? x s(x)=\frac{1}{1+e^{-x}} s(x)=1+e?x1? 的求导:

# 定义 sigmoid 函数,将soimoid 每一步都分解为一个函数
def sigmoid(x):
    f = -x
    g = math.exp(f)
    w = 1 + g
    v = 1 / w
    return v

在这里插入图片描述
S ′ = e ? x ( 1 + e ? x ) 2 = 1 + e ? x ? 1 ( 1 + e ? x ) 2 = S ? S 2 = S ( 1 ? S ) S^{'}=\frac{e^{-x}}{(1+e^{-x})^2}=\frac{1+e^{-x}-1}{(1+e^{-x})^2}=S-S^2=S(1-S) S=(1+e?x)2e?x?=(1+e?x)21+e?x?1?=S?S2=S(1?S)

3 多变量函数链式法则

3.1 多变量函数求导

多变量通用函数可以看作是 n 维的数据映射到 m 维数据, f : R n ? > R m f:R^n->R^m f:Rn?>Rm, 输出的 m个数据的每一个值都可以看作是由输入的 n 个变量计算而来的

如果我们将输出向量的每个分量 y i y_i yi? i ∈ [ 1 , m ] i∈[1,m] i[1,m] ,看作一个独立的多元变量函数,那我们就可以对 y i y_i yi? 的每个 x j x_j xj? j ∈ [ 1 , n ] j∈[1,n] j[1,n] 求偏导数:
[ ? y i ? x 1 , ? y i ? x 2 , ? ? , ? y i ? x n ] \left[ \frac{\partial y_i }{\partial x_1}, \frac{\partial y_i }{\partial x_2},\cdots,\frac{\partial y_i }{\partial x_n} \right] [?x1??yi??,?x2??yi??,?,?xn??yi??]
将每个 y i y_i yi? 的梯度组合就得到了雅各比矩阵
J = ( ? y 1 ? x 1 ? ? y 1 ? x n ? ? ? ? y m ? x 1 ? ? y m ? x n ) \begin{aligned}J=\left(\begin{array}{ccc} \frac{\partial y_{1}}{\partial x_{1}} & \cdots & \frac{\partial y_{1}}{\partial x_{n}}\\ \vdots & \ddots & \vdots\\ \frac{\partial y_{m}}{\partial x_{1}} & \cdots & \frac{\partial y_{m}}{\partial x_{n}} \end{array}\right)\end{aligned} J=?????x1??y1????x1??ym????????xn??y1????xn??ym????????
也可写作:
J = ? ( y 1 , … , y m ) ? ( x 1 , … , x n ) J=\frac{\partial(y_1,…,y_m)}{\partial(x_1,…,x_n)} J=?(x1?,,xn?)?(y1?,,ym?)?
雅可比矩阵表示了函数 f 在每一处可导点的导数。具体地说,设 Δx 为一在 x 处的位移向量(假设为列向量),则 J(x)?Δx 就是函数值的位移向量(类似一元数值函数里 Δy=y′(x)?Δx),该函数值的位移向量即为 x 处的f(x)增量的最佳线性逼近(更熟悉点的词叫全微分)。类似于导数,雅可比矩阵是函数局部的线性化,使用矩阵形式来表示微分(线性逼近)这个线性变换

3.2 多变量函数链式法则

根据输出为标量还是为向量,分为两种情况

情况1 如果多变函数形式为 f : R n ? > R 1 f:R^n->R^1 f:Rn?>R1 ,即输出为标量,而不是向量

下面是两个变量的情况, z 为 u,v 的函数,而 u , v 又分别为 x, y 的函数。从下图可以看出 x 对 z 的贡献有两条通道,一条经过 u, 一条经过 v,所以当 z 对 x 求导时也需要分成两部分,即:
? z ? x = ? z ? u ? u ? x + ? z ? v ? v ? x \frac{\partial{z}}{\partial{x}}=\frac{\partial{z}}{\partial{u}}\frac{\partial{u}}{\partial{x}}+\frac{\partial{z}}{\partial{v}}\frac{\partial{v}}{\partial{x}} ?x?z?=?u?z??x?u?+?v?z??x?v?
在这里插入图片描述
同理对 y 变量求导
? z ? y = ? z ? u ? u ? y + ? z ? v ? v ? y \frac{\partial{z}}{\partial{y}}=\frac{\partial{z}}{\partial{u}}\frac{\partial{u}}{\partial{y}}+\frac{\partial{z}}{\partial{v}}\frac{\partial{v}}{\partial{y}} ?y?z?=?u?z??y?u?+?v?z??y?v?

情况2 如果多变函数形式为 f : R n ? > R m f:R^n->R^m f:Rn?>Rm ,即输出为向量,情形如下面的简图所示,输入 x i x_i xi? 经过层层函数最后输出 y 向量
在这里插入图片描述
y 1 y_1 y1? v 1 v_1 v1? 求导时,需要经过 u 中的 n 个函数:
在这里插入图片描述
y 对 所有 u 层求导可以表示为之前提到的形式,矩阵大小为 (m,n)
J y ( u ) = ? ( y 1 , … , y m ) ? ( u 1 , … , u n ) J_y{(u)}=\frac{\partial(y_1,…,y_m)}{\partial(u_1,…,u_n)} Jy?(u)=?(u1?,,un?)?(y1?,,ym?)?
而 u 层对所有的 v 求导又可以表示为下面的形式,矩阵大小为(n,n)
J u ( v ) = ? ( u 1 , … , u n ) ? ( v 1 , … , v n ) J_u{(v)}=\frac{\partial(u_1,…,u_n)}{\partial(v_1,…,v_n)} Ju?(v)=?(v1?,,vn?)?(u1?,,un?)?
每一层都可以写为雅各比矩阵形式,y 对 v 整个多元复合函数的求导过程可以表述成更简洁的形式,大小为 (m,n)

J y ( u ) = J y ( u ( v ) ) J u ( v ) J_{y(u)}=J_y{(u(v))}J_u{(v)} Jy(u)?=Jy?(u(v))Ju?(v)
也即两个矩阵相乘:
? ( y 1 , … , y m ) ? ( v 1 , … , v n ) = ? ( y 1 , … , y m ) ? ( u 1 , … , u n ) ? ( u 1 , … , u n ) ? ( v 1 , … , v n ) \frac{\partial(y_1,…,y_m)}{\partial(v_1,…,v_n)}=\frac{\partial(y_1,…,y_m)}{\partial(u_1,…,u_n)}\frac{\partial(u_1,…,u_n)}{\partial(v_1,…,v_n)} ?(v1?,,vn?)?(y1?,,ym?)?=?(u1?,,un?)?(y1?,,ym?)??(v1?,,vn?)?(u1?,,un?)?
从直观上理解一下这个等式。首先,我们知道雅可比矩阵的“成因”是用矩阵来表示一阶微分的,也就是把一阶微分的算子当成一个线性变换,而复合函数等于是一个嵌套,也就是函数的函数,对应到线性变换里,也就是线性变换的线性变换,而我们又知道用矩阵表示线性变换时这种“线性变换的线性变换”,就是相当于两个矩阵的乘积。到这里。我们把微积分和线性代数两种工具结合到了一起,就得到了这个结果。

参考

1 The Chain Rule of Calculus
2 深度学习中的数学
3 向量函数的雅可比矩阵与链式法则
4 复杂多元复合函数的导数和雅克比矩阵

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-13 21:47:25  更:2022-03-13 21:49:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/28 12:50:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码