当前位置: 首页 > news >正文

潍坊专业做网站的公司门户网站的案例分析

潍坊专业做网站的公司,门户网站的案例分析,网站域名一年多少钱,百度指数官网入口注#xff1a;本文为《动手学深度学习》开源内容#xff0c;部分标注了个人理解#xff0c;仅为个人学习记录#xff0c;无抄袭搬运意图 7.2 梯度下降和随机梯度下降 在本节中#xff0c;我们将介绍梯度下降#xff08;gradient descent#xff09;的工作原理。虽然梯度… 注本文为《动手学深度学习》开源内容部分标注了个人理解仅为个人学习记录无抄袭搬运意图 7.2 梯度下降和随机梯度下降 在本节中我们将介绍梯度下降gradient descent的工作原理。虽然梯度下降在深度学习中很少被直接使用但理解梯度的意义以及沿着梯度反方向更新自变量可能降低目标函数值的原因是学习后续优化算法的基础。随后我们将引出随机梯度下降stochastic gradient descent。 7.2.1 一维梯度下降 我们先以简单的一维梯度下降为例解释梯度下降算法可能降低目标函数值的原因。假设连续可导的函数 f : R → R f: \mathbb{R} \rightarrow \mathbb{R} f:R→R的输入和输出都是标量。给定绝对值足够小的数 ϵ \epsilon ϵ根据泰勒展开公式我们得到以下的近似 f ( x ϵ ) ≈ f ( x ) ϵ f ′ ( x ) . f(x \epsilon) \approx f(x) \epsilon f(x) . f(xϵ)≈f(x)ϵf′(x). 这里 f ′ ( x ) f(x) f′(x)是函数 f f f在 x x x处的梯度。一维函数的梯度是一个标量也称导数。 接下来找到一个常数 η 0 \eta 0 η0使得 ∣ η f ′ ( x ) ∣ \left|\eta f(x)\right| ∣ηf′(x)∣足够小那么可以将 ϵ \epsilon ϵ替换为 − η f ′ ( x ) -\eta f(x) −ηf′(x)并得到 f ( x − η f ′ ( x ) ) ≈ f ( x ) − η f ′ ( x ) 2 . f(x - \eta f(x)) \approx f(x) - \eta f(x)^2. f(x−ηf′(x))≈f(x)−ηf′(x)2. 如果导数 f ′ ( x ) ≠ 0 f(x) \neq 0 f′(x)0那么 η f ′ ( x ) 2 0 \eta f(x)^20 ηf′(x)20所以 f ( x − η f ′ ( x ) ) ≲ f ( x ) . f(x - \eta f(x)) \lesssim f(x). f(x−ηf′(x))≲f(x). 这意味着如果通过 x ← x − η f ′ ( x ) x \leftarrow x - \eta f(x) x←x−ηf′(x) 来迭代 x x x函数 f ( x ) f(x) f(x)的值可能会降低。因此在梯度下降中我们先选取一个初始值 x x x和常数 η 0 \eta 0 η0然后不断通过上式来迭代 x x x直到达到停止条件例如 f ′ ( x ) 2 f(x)^2 f′(x)2的值已足够小或迭代次数已达到某个值。 下面我们以目标函数 f ( x ) x 2 f(x)x^2 f(x)x2为例来看一看梯度下降是如何工作的。虽然我们知道最小化 f ( x ) f(x) f(x)的解为 x 0 x0 x0这里依然使用这个简单函数来观察 x x x是如何被迭代的。首先导入本节实验所需的包或模块。 %matplotlib inline import numpy as np import torch import math import sys sys.path.append(..) import d2lzh_pytorch as d2l接下来使用 x 10 x10 x10作为初始值并设 η 0.2 \eta0.2 η0.2。使用梯度下降对 x x x迭代10次可见最终 x x x的值较接近最优解。 def gd(eta):x 10results [x]for i in range(10):x - eta * 2 * x # f(x) x * x的导数为f(x) 2 * xresults.append(x)print(epoch 10, x:, x)return resultsres gd(0.2)输出 epoch 10, x: 0.06046617599999997下面将绘制出自变量 x x x的迭代轨迹。 def show_trace(res):n max(abs(min(res)), abs(max(res)), 10)f_line np.arange(-n, n, 0.1)d2l.set_figsize()d2l.plt.plot(f_line, [x * x for x in f_line])d2l.plt.plot(res, [x * x for x in res], -o)d2l.plt.xlabel(x)d2l.plt.ylabel(f(x))show_trace(res)7.2.2 学习率 上述梯度下降算法中的正数 η \eta η通常叫作学习率。这是一个超参数需要人工设定。如果使用过小的学习率会导致 x x x更新缓慢从而需要更多的迭代才能得到较好的解。 下面展示使用学习率 η 0.05 \eta0.05 η0.05时自变量 x x x的迭代轨迹。可见同样迭代10次后当学习率过小时最终 x x x的值依然与最优解存在较大偏差。 show_trace(gd(0.05))输出 epoch 10, x: 3.4867844009999995如果使用过大的学习率 ∣ η f ′ ( x ) ∣ \left|\eta f(x)\right| ∣ηf′(x)∣可能会过大从而使前面提到的一阶泰勒展开公式不再成立这时我们无法保证迭代 x x x会降低 f ( x ) f(x) f(x)的值。 举个例子当设学习率 η 1.1 \eta1.1 η1.1时可以看到 x x x不断越过overshoot最优解 x 0 x0 x0并逐渐发散。 show_trace(gd(1.1))输出 epoch 10, x: 61.9173642240000967.2.3 多维梯度下降 在了解了一维梯度下降之后我们再考虑一种更广义的情况目标函数的输入为向量输出为标量。假设目标函数 f : R d → R f: \mathbb{R}^d \rightarrow \mathbb{R} f:Rd→R的输入是一个 d d d维向量 x [ x 1 , x 2 , … , x d ] ⊤ \boldsymbol{x} [x_1, x_2, \ldots, x_d]^\top x[x1​,x2​,…,xd​]⊤。目标函数 f ( x ) f(\boldsymbol{x}) f(x)有关 x \boldsymbol{x} x的梯度是一个由 d d d个偏导数组成的向量 ∇ x f ( x ) [ ∂ f ( x ) ∂ x 1 , ∂ f ( x ) ∂ x 2 , … , ∂ f ( x ) ∂ x d ] ⊤ . \nabla_{\boldsymbol{x}} f(\boldsymbol{x}) \bigg[\frac{\partial f(\boldsymbol{x})}{\partial x_1}, \frac{\partial f(\boldsymbol{x})}{\partial x_2}, \ldots, \frac{\partial f(\boldsymbol{x})}{\partial x_d}\bigg]^\top. ∇x​f(x)[∂x1​∂f(x)​,∂x2​∂f(x)​,…,∂xd​∂f(x)​]⊤. 为表示简洁我们用 ∇ f ( x ) \nabla f(\boldsymbol{x}) ∇f(x)代替 ∇ x f ( x ) \nabla_{\boldsymbol{x}} f(\boldsymbol{x}) ∇x​f(x)。梯度中每个偏导数元素 ∂ f ( x ) / ∂ x i \partial f(\boldsymbol{x})/\partial x_i ∂f(x)/∂xi​代表着 f f f在 x \boldsymbol{x} x有关输入 x i x_i xi​的变化率。为了测量 f f f沿着单位向量 u \boldsymbol{u} u即 ∥ u ∥ 1 \|\boldsymbol{u}\|1 ∥u∥1方向上的变化率在多元微积分中我们定义 f f f在 x \boldsymbol{x} x上沿着 u \boldsymbol{u} u方向的方向导数为 D u f ( x ) lim ⁡ h → 0 f ( x h u ) − f ( x ) h . \text{D}_{\boldsymbol{u}} f(\boldsymbol{x}) \lim_{h \rightarrow 0} \frac{f(\boldsymbol{x} h \boldsymbol{u}) - f(\boldsymbol{x})}{h}. Du​f(x)h→0lim​hf(xhu)−f(x)​. 依据方向导数性质[114.6节定理三]以上方向导数可以改写为 D u f ( x ) ∇ f ( x ) ⋅ u . \text{D}_{\boldsymbol{u}} f(\boldsymbol{x}) \nabla f(\boldsymbol{x}) \cdot \boldsymbol{u}. Du​f(x)∇f(x)⋅u. 方向导数 D u f ( x ) \text{D}_{\boldsymbol{u}} f(\boldsymbol{x}) Du​f(x)给出了 f f f在 x \boldsymbol{x} x上沿着所有可能方向的变化率。为了最小化 f f f我们希望找到 f f f能被降低最快的方向。因此我们可以通过单位向量 u \boldsymbol{u} u来最小化方向导数 D u f ( x ) \text{D}_{\boldsymbol{u}} f(\boldsymbol{x}) Du​f(x)。 由于 D u f ( x ) ∥ ∇ f ( x ) ∥ ⋅ ∥ u ∥ ⋅ cos ( θ ) ∥ ∇ f ( x ) ∥ ⋅ cos ( θ ) \text{D}_{\boldsymbol{u}} f(\boldsymbol{x}) \|\nabla f(\boldsymbol{x})\| \cdot \|\boldsymbol{u}\| \cdot \text{cos} (\theta) \|\nabla f(\boldsymbol{x})\| \cdot \text{cos} (\theta) Du​f(x)∥∇f(x)∥⋅∥u∥⋅cos(θ)∥∇f(x)∥⋅cos(θ) 其中 θ \theta θ为梯度 ∇ f ( x ) \nabla f(\boldsymbol{x}) ∇f(x)和单位向量 u \boldsymbol{u} u之间的夹角当 θ π \theta \pi θπ时 cos ( θ ) \text{cos}(\theta) cos(θ)取得最小值 − 1 -1 −1。因此当 u \boldsymbol{u} u在梯度方向 ∇ f ( x ) \nabla f(\boldsymbol{x}) ∇f(x)的相反方向时方向导数 D u f ( x ) \text{D}_{\boldsymbol{u}} f(\boldsymbol{x}) Du​f(x)被最小化。因此我们可能通过梯度下降算法来不断降低目标函数 f f f的值 x ← x − η ∇ f ( x ) . \boldsymbol{x} \leftarrow \boldsymbol{x} - \eta \nabla f(\boldsymbol{x}). x←x−η∇f(x). 同样其中 η \eta η取正数称作学习率。 下面我们构造一个输入为二维向量 x [ x 1 , x 2 ] ⊤ \boldsymbol{x} [x_1, x_2]^\top x[x1​,x2​]⊤和输出为标量的目标函数 f ( x ) x 1 2 2 x 2 2 f(\boldsymbol{x})x_1^22x_2^2 f(x)x12​2x22​。那么梯度 ∇ f ( x ) [ 2 x 1 , 4 x 2 ] ⊤ \nabla f(\boldsymbol{x}) [2x_1, 4x_2]^\top ∇f(x)[2x1​,4x2​]⊤。我们将观察梯度下降从初始位置 [ − 5 , − 2 ] [-5,-2] [−5,−2]开始对自变量 x \boldsymbol{x} x的迭代轨迹。我们先定义两个辅助函数第一个函数使用给定的自变量更新函数从初始位置 [ − 5 , − 2 ] [-5,-2] [−5,−2]开始迭代自变量 x \boldsymbol{x} x共20次第二个函数对自变量 x \boldsymbol{x} x的迭代轨迹进行可视化。 def train_2d(trainer): # 本函数将保存在d2lzh_pytorch包中方便以后使用x1, x2, s1, s2 -5, -2, 0, 0 # s1和s2是自变量状态本章后续几节会使用results [(x1, x2)]for i in range(20):x1, x2, s1, s2 trainer(x1, x2, s1, s2)results.append((x1, x2))print(epoch %d, x1 %f, x2 %f % (i 1, x1, x2))return resultsdef show_trace_2d(f, results): # 本函数将保存在d2lzh_pytorch包中方便以后使用d2l.plt.plot(*zip(*results), -o, color#ff7f0e)x1, x2 np.meshgrid(np.arange(-5.5, 1.0, 0.1), np.arange(-3.0, 1.0, 0.1))d2l.plt.contour(x1, x2, f(x1, x2), colors#1f77b4)d2l.plt.xlabel(x1)d2l.plt.ylabel(x2)然后观察学习率为 0.1 0.1 0.1时自变量的迭代轨迹。使用梯度下降对自变量 x \boldsymbol{x} x迭代20次后可见最终 x \boldsymbol{x} x的值较接近最优解 [ 0 , 0 ] [0,0] [0,0]。 eta 0.1def f_2d(x1, x2): # 目标函数return x1 ** 2 2 * x2 ** 2def gd_2d(x1, x2, s1, s2):return (x1 - eta * 2 * x1, x2 - eta * 4 * x2, 0, 0)show_trace_2d(f_2d, train_2d(gd_2d))输出 epoch 20, x1 -0.057646, x2 -0.0000737.2.4 随机梯度下降 在深度学习里目标函数通常是训练数据集中有关各个样本的损失函数的平均。设 f i ( x ) f_i(\boldsymbol{x}) fi​(x)是有关索引为 i i i的训练数据样本的损失函数 n n n是训练数据样本数 x \boldsymbol{x} x是模型的参数向量那么目标函数定义为 f ( x ) 1 n ∑ i 1 n f i ( x ) . f(\boldsymbol{x}) \frac{1}{n} \sum_{i 1}^n f_i(\boldsymbol{x}). f(x)n1​i1∑n​fi​(x). 目标函数在 x \boldsymbol{x} x处的梯度计算为 ∇ f ( x ) 1 n ∑ i 1 n ∇ f i ( x ) . \nabla f(\boldsymbol{x}) \frac{1}{n} \sum_{i 1}^n \nabla f_i(\boldsymbol{x}). ∇f(x)n1​i1∑n​∇fi​(x). 如果使用梯度下降每次自变量迭代的计算开销为 O ( n ) \mathcal{O}(n) O(n)它随着 n n n线性增长。因此当训练数据样本数很大时梯度下降每次迭代的计算开销很高。 随机梯度下降stochastic gradient descentSGD减少了每次迭代的计算开销。在随机梯度下降的每次迭代中我们随机均匀采样的一个样本索引 i ∈ { 1 , … , n } i\in\{1,\ldots,n\} i∈{1,…,n}并计算梯度 ∇ f i ( x ) \nabla f_i(\boldsymbol{x}) ∇fi​(x)来迭代 x \boldsymbol{x} x x ← x − η ∇ f i ( x ) . \boldsymbol{x} \leftarrow \boldsymbol{x} - \eta \nabla f_i(\boldsymbol{x}). x←x−η∇fi​(x). 这里 η \eta η同样是学习率。可以看到每次迭代的计算开销从梯度下降的 O ( n ) \mathcal{O}(n) O(n)降到了常数 O ( 1 ) \mathcal{O}(1) O(1)。值得强调的是随机梯度 ∇ f i ( x ) \nabla f_i(\boldsymbol{x}) ∇fi​(x)是对梯度 ∇ f ( x ) \nabla f(\boldsymbol{x}) ∇f(x)的无偏估计 E i ∇ f i ( x ) 1 n ∑ i 1 n ∇ f i ( x ) ∇ f ( x ) . E_i \nabla f_i(\boldsymbol{x}) \frac{1}{n} \sum_{i 1}^n \nabla f_i(\boldsymbol{x}) \nabla f(\boldsymbol{x}). Ei​∇fi​(x)n1​i1∑n​∇fi​(x)∇f(x). 这意味着平均来说随机梯度是对梯度的一个良好的估计。 下面我们通过在梯度中添加均值为0的随机噪声来模拟随机梯度下降以此来比较它与梯度下降的区别。 def sgd_2d(x1, x2, s1, s2):return (x1 - eta * (2 * x1 np.random.normal(0.1)),x2 - eta * (4 * x2 np.random.normal(0.1)), 0, 0)show_trace_2d(f_2d, train_2d(sgd_2d))输出 epoch 20, x1 -0.047150, x2 -0.075628可以看到随机梯度下降中自变量的迭代轨迹相对于梯度下降中的来说更为曲折。这是由于实验所添加的噪声使模拟的随机梯度的准确度下降。在实际中这些噪声通常指训练数据集中的无意义的干扰。 小结 使用适当的学习率沿着梯度反方向更新自变量可能降低目标函数值。梯度下降重复这一更新过程直到得到满足要求的解。学习率过大或过小都有问题。一个合适的学习率通常是需要通过多次实验找到的。当训练数据集的样本较多时梯度下降每次迭代的计算开销较大因而随机梯度下降通常更受青睐。 参考文献 [1] Stewart, J. (2010). Calculus: early transcendentals. 7th ed. Cengage Learning. 注本节与原书基本相同原书传送门
http://www.zqtcl.cn/news/107886/

相关文章:

  • 用易语言做抢购网站软件下载自己可以做企业网站吗
  • 公司网站续费帐怎么做互联网专业
  • 网站开发公司深圳外贸营销策略
  • 主要搜索引擎网站搜索结果比较wordpress novelist
  • 校园网站制度建设WordPress手机不显示
  • 胶州哪家公司做网站wordpress的html
  • 辽宁省建设厅网站江苏住房和城乡建设厅官方网站
  • 链接关系 网站层次结构南宁做网站找哪家公司
  • 定制网站开发哪家好崇明建设镇网站
  • 上海网站制作建设是什么wordpress管理页面
  • 酒店网站设计的目的和意义网络营销相关理论
  • 用google翻译做多语言网站企业官网建站网站
  • 南阳网站建设培训学校莞城短视频seo优化
  • 开发商城网站建设做网站租用那个服务器好
  • 2015做导航网站wordpress中文主
  • 中英文网站建设报价河南网站建设推广公司
  • 什么是建设网站提升seo排名平台
  • 广告设计模板网站模版网站是什么意思
  • 网站网站模板企业网站制作排名
  • 食品网站开发淘客手机版网站怎么做
  • 厦门市网站建设app开发水务 网站建设
  • jfinal网站开发装修公司加盟哪家最好
  • 成都个人网站制作石家庄设计网站公司
  • 阿里巴巴网站本土化建设烟台市两学一做网站
  • 潍坊品牌网站建设公司旅游类作业网站
  • 建设谷歌公司网站费用求职seo推荐
  • 企业网站建设规划ppt企业网站前端模板下载
  • 补习吧 一家专门做家教的网站百度云搜索引擎入口网盘搜索神器
  • 网站建设与制作企业嘉鱼网站建设哪家专业
  • 电脑怎么做网站赚钱柳州柳北建设局网站