| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 从零到一实现神经网络:数学原理篇(一) -> 正文阅读 |
|
[人工智能]从零到一实现神经网络:数学原理篇(一) |
目录一元函数微积分一阶导数定义函数自变量的变化值趋于0时,函数值的变化量与自变量变化量的比值,数学表达式为 数值微分的代码实现使用代码实现
上述代码中存在的问题上述代码中存在的问题,由于计算机存在数字的舍入误差(省略小数点后面精细部分而造成的误差,如省略小数点8位后的数字),所以delta_x不可能无限趋于0,这就导致定义与代码出现了矛盾——上述代码中实现的是(x+delta_x)与x之间的斜率(伪导数),而不是x处的斜率(真导数) 数值微分代码改进代码实现
导数的意义导数的几何意义是函数在点( x , f ( x ) x,f(x) x,f(x))处的斜率,反映了函数值在此点处变化的快慢(也可以说函数值沿着斜率的方向变化最快),下面我们使用代码生成函数 f ( x ) = 0.1 x 2 + 0.01 x f(x)=0.1x^{2}+0.01x f(x)=0.1x2+0.01x在点 ( 5 , f ( 5 ) ) 和 ( 10 , f ( 10 ) (5,f(5))和(10,f(10) (5,f(5))和(10,f(10)处的导数
多元函数微积分偏导数定义导数是一元函数的变化值与自变量的变化值比值的极限,多元函数有多个自变量,每个自变量都会发生变化,情况更加复杂 偏导数是多元函数对各个自变量的导数,是一元函数的推广,多元函数
f
(
x
)
f(x)
f(x)关于自变量
x
i
x_i
xi?的偏导数
f
′
(
x
i
)
f^{'}(x_i)
f′(xi?)的数学表达式为
偏导数代码实现多元函数的梯度包含了函数关于所有自变量的偏导数,因此该部分代码请往下看: 偏导数的意义例如下面的图片中,我们将纵轴Z看作函数值,X,Y轴看作自变量,在某一点求得Z关于Y的偏导数,做出图形:是一个长方形(因为此时自变量X被视为常数,沿着长方形平面方向,X值不变) 沿着垂直于Y轴的方向看去,得到一个关于Y和Z的二维平面 梯度一阶偏导数只对一个自变量求导数,它反映了多元函数与一个自变量之间的关系,梯度则包含了函数对所有自变量的偏导数,综合反映了函数值与所有自变量之间的关系
梯度的代码实现
求梯度的例子对于函数 f ( x , y ) = x 2 + x y ? y 2 f(x,y)=x^{2}+xy-y^{2} f(x,y)=x2+xy?y2,它的偏导数为
代码实现
梯度的意义梯度是一个包含了多元函数所有偏导数的向量,它反映的是各点处函数值变化最多的方向(图像上函数值改变最快的方向),在机器学习中我们要找的是函数值最小的方向 梯度法如何求函数最值? 虽然梯度的方向不是函数最值所在的方向,但是沿着梯度的方向能够最大程度的改变函数的值,因此,寻找函数最小值的过程应该以梯度为线索 梯度法,函数值在当前位置沿着梯度方向前进一段距离,然后再新的地方继续求梯度,重复这个过程,直到梯度等于0
梯度下降法表达式函数在某个自变量方向上的梯度更新
梯度下降法图示过程我们知道,梯度的意义是各点处函数值变化最快的方向,而负梯度的方向则是函数值减小最快的方向,在具有多个变量的空间中,函数值在多个变量上的梯度更新如图所示 梯度下降法的代码实现
如此我们便得到了,函数取得最小值时对应的自变量x=[x1,x2,…](实际上要想得到真正的函数最小值,我们需要找到合适的学习率lr和自变量更新次数step_num),在神经网络中,函数通常指的是损失函数,而自变量通常指的是权重参数 利用梯度下降法求多元函数最小值的例子假设要求函数 f ( x , y , z ) = 2 ( x ? 1 ) 2 + ( y ? 0.5 ) 2 + ( z + 4 ) 2 f(x,y,z)=2(x-1)^{2}+(y-0.5)^{2}+(z+4)^{2} f(x,y,z)=2(x?1)2+(y?0.5)2+(z+4)2的最小值,下面我们通过代码实现
代码运行结果 在上面的代码中,自变量的值是随机设置的,但是经过梯度下降法,我们得到了想要的坐标点!实际上,在神经网络中,我们将会随机设置权重参数的值,然后经过梯度下降法,求得损失函数取得最小值时对应的那组权重参数。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/26 10:14:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |