神经网络基础
前言
Logistic 回归是一种广泛应用于统计学和机器学习领域的广义线性回归模型,主要用于解决二分类问题。尽管名字中包含“回归”二字,但它实际上是一种分类方法。Logistic 回归通过使用logistic函数(或者称为sigmoid函数)来预测一个事件发生的概率。
备注:本系列文章基于B站课程: 122集付费!CNN、RNN、GAN、GNN、DQN、Transformer、LSTM等八大深度学习神经网络一口气全部学完!学习整理得到。
1、Logistic 回归
逻辑回归是一个主要用于解决二分类问题的算法。那么逻辑回归是给定一个 x,输出一个该样本属于 1 对应类别的预测概率 ŷ=P(y=1|x)
Logistic 回归中使用的参数如下:
例如:
2、逻辑回归损失函数
损失函数(loss function)用于衡量预测结果与真实值之间的误差。最简单的损失函数定义方式为平方差损失:
3、梯度下降算法
目的:使损失函数的值找到最小值
方式:梯度下降
函数的梯度(gradient)指出了函数的最陡增长方向。梯度的方向走,函数增长得就越快。那么按照梯度的负方向走,函数值自然就降低得最快了。模型的训练目标即是寻找合适的 w 与 b 以最小化代价函数值。假设 w 与 b 都是一维实数,那么可以得到如下的 J 关于 w 与 b 的图:
可以看到,成本函数 J 是一个凸函数,与非凸函数的区别在于其不含有多个局部最低。
参数 w 与 b 的更新公式为:
注:其中 α 表示学习速率,即每次更新的 w 的步伐长度。当 w 大于最优解 w’ 时,导数大于0,那就是向更小的方向更新。反之当 w 小于最优解 w’ 时,导数小于0,那么 w 就会向更大的方向更新迭代直到收敛。
通过平面来理解梯度下降过程:
4、导数
理解梯度下降的过程之后,通过例子来说明梯度下降在计算导数意义或者说这个导数的意义。
导数也可以理解成某一点处的斜率。
-
各点处的导数值一样
我们看到这里有一条直线,这条直线的斜率为4,我们来计算一个例子:
取一点为 a=2,那么 y 的值为8,我们稍微增加 a =2.001,那么 y 的值为 8.004,也就是当 a 增加了 0.001,随后 y 增加了 0.004,即4倍
那么我们这个斜率可以理解为当一个点偏移一个不可估量的小的值,所增加的为 4 倍,可以记作:
- 各点处的导数值不全一致
例:
取一点为 a=2,那么 y 的值为4,我们稍微增加 a 的值为 a=2.001,那么 y 的值约等于 4.004(4.004001)就是当 a 增加了 0.001,随后 y 增加了 4 倍;
取一点为 a=5,那么 y 的值为25,我们稍微增加 a 的值为 a=5.001,那么 y 的值约等于 25.01(25.010001)就是当 a 增加了 0.001,随后 y 增加了 10 倍;
可以得出该函数的导数为 2a
5、导数计算图
那么接下来我们来看看含有多个变量的到导数流程图,假设 J(a,b,c) = 3(a+bc)
我们以下面的流程图代替:
这样就相当于从左到右计算出结果,然后从后往前计算出导数
导数计算:
这里涉及到链式法则
6、链式法则
链式法则(Chain Rule)是微积分中用于计算复合函数导数的一个基本法则。当你有一个复合函数,即一个函数的输出是另一个函数的输入时,链式法则允许你通过计算各个函数的导数并将它们相乘来找到复合函数的导数。
假设有两个函数 f 和 g,其中 g 的定义域和 f 的值域相同,我们可以构成一个复合函数 f(g(x))。链式法则表明复合函数 f(g(x)) 对 x 的导数可以通过以下方式计算:
这里:
- f′(g(x)) 是外函数 f 在 g(x) 处的导数;
- g′(x) 是内函数 g 在 x 处的导数
例如:
假设我们有以下复合函数:
7、逻辑回归的梯度下降
逻辑回归的梯度下降过程计算图,首先从前往后的计算图得出如下:
那么计算图从前向过程为,假设样本有两个特征
问题:计算出 J 关于 z 的导数
所以我们这样可以求出总损失相对于 w1 w2 b 参数的某一点导数,从而可以更新参数:
所以当我们计算损失函数的某个点相对于 w1 w2 b 的导数之后,就可以更新这次优化后的结果: