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 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 从零实现深度学习框架——逻辑回归简介 -> 正文阅读

[Python知识库]从零实现深度学习框架——逻辑回归简介

引言

本着“凡我不能创造的,我就不能理解”的思想,本系列文章会基于纯Python以及NumPy从零创建自己的深度学习框架,该框架类似PyTorch能实现自动求导。

要深入理解深度学习,从零开始创建的经验非常重要,从自己可以理解的角度出发,尽量不适用外部完备的框架前提下,实现我们想要的模型。本系列文章的宗旨就是通过这样的过程,让大家切实掌握深度学习底层实现,而不是仅做一个调包侠。
本系列文章首发于微信公众号:JavaNLP

关注公众号

本文对逻辑回归的原理进行简单的介绍,包含公式推导。逻辑回归是可以作为分类任务的基准,也是神经网络的基石。一个神经网络可以看成是一系列的逻辑回归组成。所以掌握逻辑回归就相当重要。

回归与分类

我们前面学习的线性回归属于回归问题,今天介绍的逻辑回归属于分类问题。

回归:预测一个连续值;

分类:预测一个离散值;

逻辑回归虽然名字中包含回归,实际上处理的是分类问题,为啥名字这么奇怪呢,有历史原因,这里就不深究了。

逻辑回归用于处理二分类问题,所谓二分类问题,就是分类的类别只有两个的问题。比如判断邮件是否为垃圾、情绪分析中的情绪是正向的还是负向的等。

那么逻辑回归是如何处理二分类问题的呢?答案就是通过Sigmoid函数。

机器学习分类器的核心组件

逻辑回归是一种基于监督学习的分类器。机器学习分类器需要一个训练集,包含 m m m个输入/输出对 ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i))。一个分类机器学习系统有四个组件:

  1. 输入的特征表示 对于每个输入样本 x ( i ) x^{(i)} x(i),可以表示为特征向量 [ x 1 , x 2 , ? ? , x n ] [x_1,x_2,\cdots,x_n] [x1?,x2?,?,xn?] x i ( j ) x^{(j)}_i xi(j)?表示输入 x ( j ) x^{(j)} x(j)的第 i i i个特征,有时简记为 x i x_i xi?
  2. 计算估计类别 y ^ \hat y y^?的分类函数,通过 p ( y ∣ x ) p(y|x) p(yx)
  3. 一个学习的目标函数,通过计算训练样本上的最小化误差
  4. 一个优化目标函数的算法,常用的是随机梯度下降法

Sigmoid函数

我们先来看下输入的表示,通常我们有很多个输入样本。对于第 i i i个样本 x ( i ) x^{(i)} x(i),可以表示为特征向量 [ x 1 ( i ) , x 2 ( i ) , ? ? , x n ( i ) ] [x_1^{(i)},x_2^{(i)},\cdots,x_n^{(i)}] [x1(i)?,x2(i)?,?,xn(i)?],这里假设有 n n n?个特征。

考虑一个输入样本 x x x,表示为特征向量 [ x 1 , x 2 , ? ? , x n ] [x_1,x_2,\cdots,x_n] [x1?,x2?,?,xn?],输出 y y y可能是 1 1 1 0 0 0,其中 1 1 1表示属于某个类别的话,那么 0 0 0就表示不属于那个类别。

逻辑回归从一个训练集中学习权重向量和一个偏置。每个权重 w i w_i wi?与输入样本中的一个特征 x i x_i xi?绑定,最后加上偏置项 b b b。权重和偏置项都是实数。

为了判断类别,首先让每个特征乘上对应的权重,然后加上 b b b,得到一个实数 z z z,表示属于该类别的依据。
z = ( ∑ i = 1 n w i x i ) + b (1) z = \left( \sum_{i=1}^n w_ix_i \right) + b \tag{1} z=(i=1n?wi?xi?)+b(1)
实数 z z z越大,表示该特征对属于该类别的贡献度越大。我们也可以通过线性代数中的点乘的方式来简化这个公式:
z = w ? x + b (2) z = w \cdot x + b \tag{2} z=w?x+b(2)
但是,这样得到的 z z z显然不是一个概率值,如果细心的童鞋可能回发现,这不就是线性回归的公式吗。没错,但是逻辑回归需要利用一个函数来把一个属于 ? ∞ -\infty ? + ∞ +\infty +的实数值转换为 [ 0 , 1 ] [0,1] [0,1]之间的概率值。

这个函数就是Sigmoid函数,记为 σ \sigma σ,也称为逻辑函数。

它的公式如下:
σ ( z ) = 1 1 + e ? z = 1 1 + exp ? ( ? z ) (3) \sigma(z) = \frac{1}{1 + e^{-z}} = \frac{1}{1 + \exp(-z)} \tag{3} σ(z)=1+e?z1?=1+exp(?z)1?(3)

它的函数图像如下:

img

Sigmoid函数的优点是:它可以将任意实数压缩到 [ 0 , 1 ] [0,1] [0,1]之间,这刚好符合概率的定义。同时它是可导的。

为了让Sigmoid函数的输出刚好是一个概率,我们要确保 P ( y = 1 ) + P ( y = 0 ) = 1 P(y=1)+P(y=0)=1 P(y=1)+P(y=0)=1。我们来看是否具有这种性质:
P ( y = 1 ) = σ ( w ? x + b ) = 1 1 + exp ? ( ? ( w ? x + b ) ) P ( y = 0 ) = 1 ? σ ( w ? x + b ) = 1 ? 1 1 + exp ? ( ? ( w ? x + b ) ) = exp ? ( ? ( w ? x + b ) ) 1 + exp ? ( ? ( w ? x + b ) ) = 1 1 + exp ? ( w ? x + b ) = σ ( ? ( w ? x + b ) ) (4) \begin{aligned} P(y=1) &= \sigma(w \cdot x + b) \\ &= \frac{1}{1 + \exp(-(w\cdot x +b))} \\ P(y=0) &= 1 - \sigma(w \cdot x +b)\\ &= 1 - \frac{1}{1 + \exp(-(w\cdot x + b))} \\ &= \frac{\exp(-(w \cdot x + b))}{1 + \exp(-(w\cdot x + b))} \\ &= \frac{1}{1 + \exp(w \cdot x + b)} \\ &= \sigma(-(w \cdot x +b)) \end{aligned} \tag{4} P(y=1)P(y=0)?=σ(w?x+b)=1+exp(?(w?x+b))1?=1?σ(w?x+b)=1?1+exp(?(w?x+b))1?=1+exp(?(w?x+b))exp(?(w?x+b))?=1+exp(w?x+b)1?=σ(?(w?x+b))?(4)
也就是说,Sigmoid函数还有以下性质:
1 ? σ ( x ) = σ ( ? x ) (5) 1 - \sigma(x) = \sigma(-x) \tag{5} 1?σ(x)=σ(?x)(5)
所以有 P ( y = 0 ) = σ ( ? ( w ? x + b ) ) P(y=0)=\sigma(-(w\cdot x + b)) P(y=0)=σ(?(w?x+b))

决策边界

给定输入 x x x,我们已经知道了如何取计算属于类别 y y y的概率 P ( y = 1 ∣ x ) P(y=1|x) P(y=1x)

但我们如何判断 x x x是否属于类别 y y y呢?直观地,如果概率 P ( y = 1 ∣ x ) > 0.5 P(y=1|x) > 0.5 P(y=1x)>0.5,我们就说它属于该类别,否则不属于该类别。那么 0.5 0.5 0.5就是决策边界
decision ( x ) = { 1 , if? P ( y = 1 ∣ x ) > 0.5 0 , otherwise (6) \text{decision}(x)= \begin{cases} 1, & \text {if $P(y=1|x) > 0.5$}\\ 0, & \text{otherwise} \end{cases} \tag{6} decision(x)={1,0,?if?P(y=1∣x)>0.5otherwise?(6)

逻辑回归中的损失函数

我们知道每个样本 x x x对应的正确标签 y y y。根据公式 ( 4 ) (4) (4)计算的是对真实 y y y的估计 y ^ \hat y y^?,我们想让估计 y ^ \hat y y^?和真实 y y y越接近越好。这里的“接近”衡量的是距离,我们称这种距离为损失(loss)或者代价(cost)。计算损失或代价的函数为损失函数或代价函数。

给定样本 x x x,我们需要一个损失函数来衡量类器的输出( y ^ = σ ( w ? x + b ) \hat y= \sigma(w \cdot x + b) y^?=σ(w?x+b))与真实输出 y ( 0 或 1 ) y(0或1) y(01)有多近。可以记为:
L ( y ^ , y ) = y ^ 与真实 y 有多不同 (7) L(\hat y, y) = \hat y\text{与真实}y\text{有多不同} \tag{7} L(y^?,y)=y^?与真实y有多不同(7)
该函数倾向于模型更可能将训练样本分类成正确的类别。这称为条件最大似然估计:我们选择参数 w , b w,b w,b来最大化训练数据中给定样本 x x x属于真实标签 y y y的对数概率。此时对应的损失函数为负对数似然损失,通常称为交叉熵损失。

对于单个样本 x x x,我们希望学到权重能最大化正确类别概率 p ( y ∣ x ) p(y|x) p(yx)。由于只有两个离散的输出(0或1),这是一个伯努利分布,我们可以将分类器为一个样本产生的概率 p ( y ∣ x ) p(y|x) p(yx)表示为如下:
p ( y ∣ x ) = y ^ y ( 1 ? y ^ ) 1 ? y (8) p(y|x) = \hat y ^y(1 -\hat y)^{1-y} \tag{8} p(yx)=y^?y(1?y^?)1?y(8)
如果正确类别 y = 1 y=1 y=1,那么上式右边简化为 y ^ \hat y y^?;如果 y = 0 y=0 y=0,那么简化为 1 ? y ^ 1 - \hat y 1?y^?

我们把等式两端取对数,取对数并不会改变单调性:
log ? p ( y ∣ x ) = log ? [ y ^ y ( 1 ? y ^ ) 1 ? y ] = y log ? y ^ + ( 1 ? y ) log ? ( 1 ? y ^ ) (9) \begin{aligned} \log p(y|x) &= \log {[ \hat y ^y(1-\hat y)^{1-y}]} \\ &= y \log \hat y + (1-y) \log (1 -\hat y) \end{aligned} \tag{9} logp(yx)?=log[y^?y(1?y^?)1?y]=ylogy^?+(1?y)log(1?y^?)?(9)
上式描述了一个应该最大化的对数似然。为了让它变成损失函数,我们增加一个负号,变成了交叉熵损失 L C E L_{CE} LCE?(loss of cross entropy):
L C E ( y ^ , y ) = ? log ? p ( y ∣ x ) = ? [ y log ? y ^ + ( 1 ? y ) log ? ( 1 ? y ^ ) ] (10) L_{CE}(\hat y,y) = - \log p(y|x) = - [y\log \hat y + (1-y)\log (1 - \hat y)] \tag{10} LCE?(y^?,y)=?logp(yx)=?[ylogy^?+(1?y)log(1?y^?)](10)
最终,我们代入 y ^ = σ ( w ? x + b ) \hat y =\sigma(w \cdot x + b) y^?=σ(w?x+b):
L C E ( y ^ , y ) = ? [ y log ? σ ( w ? x + b ) + ( 1 ? y ) log ? ( 1 ? σ ( w ? x + b ) ) ] (11) L_{CE}(\hat y,y) = - [y\log \sigma(w \cdot x + b) + (1-y)\log (1 - \sigma(w \cdot x + b))] \tag{11} LCE?(y^?,y)=?[ylogσ(w?x+b)+(1?y)log(1?σ(w?x+b))](11)
为什么最小化这个负对数似然就能实现我们想要的结果?一个完美的分类器会将正确的输出标记为1,错误的输出标记为0。意味着,如果 y = 1 y=1 y=1,输出 y ^ \hat y y^?越高,分类器越好,输出的 y ^ \hat y y^?越低,分类器越差;如果 y = 0 y=0 y=0 1 ? y ^ 1-\hat y 1?y^?越大,分类器越好。

y ^ \hat y y^?的负对数(真实 y = 1 y=1 y=1)或 1 ? y ^ 1 - \hat y 1?y^?的负对数(真实 y = 0 y=0 y=0?)是一个方便的损失指标,因为它可以是从0( ? log ? 1 = 0 -\log 1 =0 ?log1=0,代表没有损失)到无穷大( ? log ? 0 = ∞ - \log 0 = \infty ?log0=?)。该损失函数也确保正确答案的概率最大化,错误答案的概率最小化;由于它们之和等于1,正确答案概率的任何增加都是以减少错误答案为代价的。

梯度下降

使用梯度下降的目的是找到最优的权重:最小化损失函数。在下面的公式中,我们看到损失函数 L L L由权重参数化的,我们将在机器学习中将其称为 θ \theta θ(在逻辑回归中 θ = w , b \theta = w,b θ=w,b)。所以目标是找到权重集能最小化损失函数,平均所有的样本就是:
θ ^ = arg ? min ? θ 1 m ∑ i = 1 m L C E ( f ( x ( i ) ; θ ) , y ( i ) ) (12) \hat \theta = \arg \min_{\theta} \frac{1}{m} \sum_{i=1}^m L_{CE} (f(x^{(i)};\theta),y^{(i)}) \tag{12} θ^=argθmin?m1?i=1m?LCE?(f(x(i);θ),y(i))(12)
我们如何找到这个损失函数的最小值呢?梯度下降是一种方法,通过计算函数的斜率向哪个方向(在参数θ的空间)上升得最陡峭,并朝着相反的方向移动来找到函数的最小值。

对于逻辑回归,损失函数是一个凸函数,即只有一个最小值,所以梯度下降能保证从任意点都能达到最小值。而多层神经网络的损失函数时非凸的,可能受困于局部极小值。

在一个真实的逻辑回归中,参数向量 w w w的元素个数可能很多,即每个特征 x i x_i xi?都有对应的权重 w i w_i wi?。对于 w w w中的每个维度/变量 w i w_i wi?(加上偏置 b b b),梯度将告诉我们该变量的斜率的部分。在每个维度 w i w_i wi?,我们描述斜率为损失函数的偏导 ? ? w \frac{\partial}{\partial w} ?w??。本质上我们想知道:在变量 w i w_i wi?上的一个小改变会影响总损失函数 L L L多少?

因此,在形式上,多变量函数 f f f的梯度是一个向量,其中每个元素都表示 f f f相对于对应变量的偏导。我们将使用 ? \nabla ?来指梯度,并将 y ^ \hat y y^?表示为 f ( x ; θ ) f(x;\theta) f(x;θ):

? L ( f ( x ; θ ) , y ) = [ ? ? w 1 L ( f ( x ; θ ) , y ) ? ? w 2 L ( f ( x ; θ ) , y ) ? ? ? w n L ( f ( x ; θ ) , y ) ? ? b L ( f ( x ; θ ) , y ) ] (13) \nabla L(f(x;\theta),y) = \begin{bmatrix} \frac{\partial}{\partial w_1}L(f(x;\theta),y) \\ \frac{\partial}{\partial w_2}L(f(x;\theta),y) \\ \vdots\\ \frac{\partial}{\partial w_n}L(f(x;\theta),y) \\ \frac{\partial}{\partial b}L(f(x;\theta),y) \end{bmatrix} \tag{13} ?L(f(x;θ),y)=?????????w1???L(f(x;θ),y)?w2???L(f(x;θ),y)??wn???L(f(x;θ),y)?b??L(f(x;θ),y)?????????(13)
基于梯度更新参数 θ \theta θ 的式子为:
θ t + 1 = θ t ? η ? L ( f ( x ; θ ) , y ) (14) \theta_{t+1} = \theta_t - \eta \nabla L(f(x;\theta),y) \tag{14} θt+1?=θt??η?L(f(x;θ),y)(14)

逻辑回归的梯度

为了更新参数 θ \theta θ,我们需要梯度 ? L ( f ( x ; θ ) , y ) \nabla L(f(x;\theta),y) ?L(f(x;θ),y)?的定义,我们知道逻辑回归的交叉熵损失函数为:
L C E ( y ^ , y ) = ? [ y log ? σ ( w ? x + b ) + ( 1 ? y ) log ? ( 1 ? σ ( w ? x + b ) ) ] L_{CE}(\hat y,y) = - [y\log \sigma(w \cdot x + b) + (1-y)\log (1 - \sigma(w \cdot x + b))] LCE?(y^?,y)=?[ylogσ(w?x+b)+(1?y)log(1?σ(w?x+b))]

要求上式对某个参数的导数,我们回顾一下:
( log ? x ) ′ = 1 x ( u v ) ′ = u ′ v ? u v ′ v 2 (\log x)^\prime = \frac{1}{x} \\ (\frac{u}{v})^\prime = \frac{u^\prime v - u v^\prime}{v^2} (logx)=x1?(vu?)=v2uv?uv?

我们知道, σ ( z ) = 1 1 + e ? z \sigma(z) = \frac{1}{1+ e^{-z}} σ(z)=1+e?z1?。我们先计算 ? σ ( z ) ? z \frac{\partial \sigma(z)}{\partial z} ?z?σ(z)?,令 u = 1 , v = 1 + e ? z u=1,v=1+e^{-z} u=1,v=1+e?z:

? σ ( z ) ? z = ( 1 1 + e ? z ) ′ = 0 × ( 1 + e ? z ) ? 1 × ( 1 + e ? z ) ′ ( 1 + e ? z ) 2 = ? ( ? e ? z ) ( 1 + e ? z ) 2 = 1 + e ? z ? 1 ( 1 + e ? z ) 2 = 1 1 + e ? z ? 1 ( 1 + e ? z ) 2 = 1 1 + e ? z ( 1 ? 1 1 + e ? z ) = σ ( z ) ( 1 ? σ ( z ) ) \begin{aligned} \frac{\partial \sigma(z)}{\partial z} &= (\frac{1}{1 + e^{-z}})^\prime \\ &= \frac{0 \times (1+e^{-z}) - 1\times (1+e^{-z})^\prime}{(1 + e^{-z})^2} \\ &= \frac{- (-e^{-z})}{(1+e^{-z})^2} \\ &= \frac{1 + e^{-z} - 1}{(1+e^{-z})^2} \\ &= \frac{1}{1 + e^{-z}} - \frac{1}{(1 + e^{-z})^2} \\ &= \frac{1}{1 + e^{-z}} \left( 1 - \frac{1}{1 + e^{-z}} \right) \\ &= \sigma(z)(1 - \sigma(z)) \end{aligned} ?z?σ(z)??=(1+e?z1?)=(1+e?z)20×(1+e?z)?1×(1+e?z)?=(1+e?z)2?(?e?z)?=(1+e?z)21+e?z?1?=1+e?z1??(1+e?z)21?=1+e?z1?(1?1+e?z1?)=σ(z)(1?σ(z))?

我们计算损失函数对某个权重 w j w_j wj?的梯度:

? L C E ? w j = ? ? w j ? [ y log ? σ ( w ? x + b ) + ( 1 ? y ) log ? ( 1 ? σ ( w ? x + b ) ) ] = ? [ ? ? w j y log ? σ ( w ? x + b ) + ? ? w j ( 1 ? y ) log ? ( 1 ? σ ( w ? x + b ) ) ] = ? y σ ( w ? x + b ) ? w j σ ( w ? x + b ) ? 1 ? y 1 ? σ ( w ? x + b ) ? w j ( 1 ? σ ( w ? x + b ) ) = ? y σ ( w ? x + b ) ? w j σ ( w ? x + b ) ? 1 ? y 1 ? σ ( w ? x + b ) ? w j ? σ ( w ? x + b ) = [ 1 ? y 1 ? σ ( w ? x + b ) ? y σ ( w ? x + b ) ] ? w j σ ( w ? x + b ) = [ σ ( w ? x + b ) ( 1 ? y ) ? y [ 1 ? σ ( w ? x + b ) ] σ ( w ? x + b ) [ 1 ? σ ( w ? x + b ) ] ] ? w j σ ( w ? x + b ) = [ σ ( w ? x + b ) ? y σ ( w ? x + b ) [ 1 ? σ ( w ? x + b ) ] ] ? w j σ ( w ? x + b ) = [ σ ( w ? x + b ) ? y σ ( w ? x + b ) [ 1 ? σ ( w ? x + b ) ] ] σ ( w ? x + b ) [ 1 ? σ ( w ? x + b ) ] ? ( w ? x + b ) ? w j = [ σ ( w ? x + b ) ? y σ ( w ? x + b ) [ 1 ? σ ( w ? x + b ) ] ] σ ( w ? x + b ) [ 1 ? σ ( w ? x + b ) ] x j = [ σ ( w ? x + b ) ? y ] x j = ( y ^ ? y ) x j (15) \begin{aligned} \frac{\partial L_{CE}}{\partial w_j} &=\frac{\partial }{\partial w_j} - [y\log \sigma(w \cdot x + b) + (1-y)\log (1 - \sigma(w \cdot x + b))] \\ &= -\left [ \frac{\partial }{\partial w_j}y\log \sigma(w \cdot x + b) + \frac{\partial }{\partial w_j} (1-y)\log (1 - \sigma(w \cdot x + b)) \right] \\ &= - \frac{y}{\sigma(w \cdot x + b) }\frac{\partial}{w_j}\sigma(w \cdot x + b) - \frac{1-y}{1 - \sigma(w \cdot x + b) }\frac{\partial}{w_j}(1 - \sigma(w \cdot x + b) ) \\ &= - \frac{y}{\sigma(w \cdot x + b) }\frac{\partial}{w_j}\sigma(w \cdot x + b) - \frac{1-y}{1 - \sigma(w \cdot x + b) }\frac{\partial}{w_j}-\sigma(w \cdot x + b) \\ &= \left[ \frac{1-y}{1 - \sigma(w \cdot x + b) } - \frac{y}{\sigma(w \cdot x + b) }\right]\frac{\partial}{w_j}\sigma(w \cdot x + b) \\ &= \left[\frac{\sigma(w \cdot x + b)(1-y) - y[1 - \sigma(w \cdot x + b) ]}{\sigma(w \cdot x + b)[1 - \sigma(w \cdot x + b)]} \right]\frac{\partial}{w_j}\sigma(w \cdot x + b) \\ &= \left[\frac{\sigma(w \cdot x + b) - y}{\sigma(w \cdot x + b)[1 - \sigma(w \cdot x + b)]} \right]\frac{\partial}{w_j}\sigma(w \cdot x + b) \\ &= \left[\frac{\sigma(w \cdot x + b) - y}{\sigma(w \cdot x + b)[1 - \sigma(w \cdot x + b)]} \right]\sigma(w \cdot x + b)[1-\sigma(w \cdot x + b)]\frac{\partial (w\cdot x + b)}{\partial w_j}\\ &= \left[\frac{\sigma(w \cdot x + b) - y}{\sigma(w \cdot x + b)[1 - \sigma(w \cdot x + b)]} \right]\sigma(w \cdot x + b)[1-\sigma(w \cdot x + b)]x_j \\ &= [\sigma(w \cdot x + b) - y]x_j \\ &= (\hat y - y)x_j \end{aligned} \tag{15} ?wj??LCE???=?wj????[ylogσ(w?x+b)+(1?y)log(1?σ(w?x+b))]=?[?wj???ylogσ(w?x+b)+?wj???(1?y)log(1?σ(w?x+b))]=?σ(w?x+b)y?wj???σ(w?x+b)?1?σ(w?x+b)1?y?wj???(1?σ(w?x+b))=?σ(w?x+b)y?wj???σ(w?x+b)?1?σ(w?x+b)1?y?wj????σ(w?x+b)=[1?σ(w?x+b)1?y??σ(w?x+b)y?]wj???σ(w?x+b)=[σ(w?x+b)[1?σ(w?x+b)]σ(w?x+b)(1?y)?y[1?σ(w?x+b)]?]wj???σ(w?x+b)=[σ(w?x+b)[1?σ(w?x+b)]σ(w?x+b)?y?]wj???σ(w?x+b)=[σ(w?x+b)[1?σ(w?x+b)]σ(w?x+b)?y?]σ(w?x+b)[1?σ(w?x+b)]?wj??(w?x+b)?=[σ(w?x+b)[1?σ(w?x+b)]σ(w?x+b)?y?]σ(w?x+b)[1?σ(w?x+b)]xj?=[σ(w?x+b)?y]xj?=(y^??y)xj??(15)
最后得到的结果很简单,描述的就是预测值减去真实值乘上对应的输出。

总结

本文我们了解了逻辑回归的原理,下篇文章就来实现它。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-01-14 01:55:36  更:2022-01-14 01:56:24 
 
开发: 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/16 4:30:58-

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