每天五分钟深度学习:导数是反向传播算法的数学基础

本文重点

导数作为微积分学的核心概念之一,不仅在数学领域内占有举足轻重的地位,更在实际问题中发挥着不可替代的作用。我们要想学习反现象传播算法,我们前提是先要学习导数的概念。本节课程我们将看一下导数是什么?

导数

导数,顾名思义,是函数在某一点或某一段区间内变化率的极限。从几何角度来看,它描述了函数图像在某一点的切线斜率;从物理角度来看,它反映了物体运动的速度或加速度等物理量。具体来说,设函数y=f(x)在点x₀的附近有定义,当自变量x在x₀处有增量Δx(x₀+Δx也在该函数的定义域内)时,相应地函数取得增量Δy=f(x₀+Δx)-f(x₀);如果Δy与Δx之比当Δx→0时极限存在,则称函数y=f(x)在点x₀处可导,并称这个极限为函数在点x₀处的导数,记作f'(x₀)或df(x₀)/dx,简称导数。

这里有一条曲线,其中x是自变量

当x=x0的时候f(x0)=p0

假定稍微增大一点点x0,假如只增大▲x,这个▲x非常小,那么f(x+▲x)=p1

所以(p1-p0)/(▲x)=斜率

也就是三角形的高度/宽度,也就是斜率,我们可以说在x=x0的地方的斜率,这就是斜率的直观体现。

导数的性质

导数具有一系列重要的性质ÿ

  • 21
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
反向传播算法是一种常用的神经网络训练算法,可以用于解决非线性分类和回归问题。其中,δ学习算法是一种基于梯度下降反向传播算法,用于训练多层神经网络。以下是采用δ学习算法的反向传播算法 MATLAB 代码实现: ``` % 加载数据 X = [0 0; 0 1; 1 0; 1 1]; y = [0; 1; 1; 0]; % 定义神经网络结构 input_layer_size = 2; % 输入层神经元个数 hidden_layer_size = 2; % 隐藏层神经元个数 output_layer_size = 1; % 输出层神经元个数 % 初始化权重和偏置 Theta1 = rand(hidden_layer_size, input_layer_size + 1) * 2 - 1; % 隐藏层权重矩阵 Theta2 = rand(output_layer_size, hidden_layer_size + 1) * 2 - 1; % 输出层权重矩阵 % 定义 sigmoid 函数 function g = sigmoid(z) g = 1 ./ (1 + exp(-z)); end % 定义 sigmoid 函数的导数 function g = sigmoidGradient(z) g = sigmoid(z) .* (1 - sigmoid(z)); end % 定义代价函数 function J = costFunction(X, y, Theta1, Theta2) % 前向传播计算输出值 m = size(X, 1); a1 = [ones(m, 1) X]; z2 = a1 * Theta1'; a2 = [ones(m, 1) sigmoid(z2)]; z3 = a2 * Theta2'; h = sigmoid(z3); % 计算代价函数 J = sum(-y .* log(h) - (1 - y) .* log(1 - h)) / m; end % 定义反向传播算法 function [Theta1_grad, Theta2_grad] = backpropagation(X, y, Theta1, Theta2) % 前向传播计算输出值 m = size(X, 1); a1 = [ones(m, 1) X]; z2 = a1 * Theta1'; a2 = [ones(m, 1) sigmoid(z2)]; z3 = a2 * Theta2'; h = sigmoid(z3); % 计算误差 delta3 = h - y; delta2 = delta3 * Theta2 .* sigmoidGradient([ones(m, 1) z2]); delta2 = delta2(:, 2:end); % 计算梯度 Theta1_grad = delta2' * a1 / m; Theta2_grad = delta3' * a2 / m; end % 定义学习率 learning_rate = 0.1; % 训练模型 epochs = 10000; for i = 1:epochs [Theta1_grad, Theta2_grad] = backpropagation(X, y, Theta1, Theta2); Theta1 = Theta1 - learning_rate * Theta1_grad; Theta2 = Theta2 - learning_rate * Theta2_grad; end % 预测新样本的类别 x_new = [0.5, 0.5]; a1_new = [1 x_new]; z2_new = a1_new * Theta1'; a2_new = [1 sigmoid(z2_new)]; z3_new = a2_new * Theta2'; h_new = sigmoid(z3_new); disp(h_new); ``` 注:此代码展示了采用δ学习算法的反向传播算法的基本思路和实现,但是由于神经网络结构的复杂性和数据集的不同,需要根据具体情况进行参数调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幻风_huanfeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值