从逻辑回归开始入门深度学习

本文介绍了从逻辑回归开始学习深度学习的过程,详细讲解了逻辑回归的原理、损失函数、梯度下降以及计算图。通过单个样本和多样本的计算,展示了逻辑回归的优化过程。接着讨论了浅层神经网络(2层)的前向传播和反向传播,并扩展到深层神经网络。文章总结了神经网络的计算流程,强调了向量化计算在提高效率方面的重要性。
摘要由CSDN通过智能技术生成

从逻辑回归开始入门深度学习

本文主要来源于吴恩达《深度学习与神经网络》。本文根据课程内容做一个串联。

本文内容安排如下:

  • 符号定义
  • 逻辑回归LR:定义、实现、高效实现
  • 浅层神经网络(2层):实现、优化
  • 深度神经网络:实现、优化、应用

我们以一个分类问题作为研究背景。研究问题为判断输入图片是否为猫咪的二分类。

符号定义

在解决问题之前,我们先对使用的数学符号做一个定义:

  • (x, y): 输入样本; x ∈ R n x R^{n_x} Rnx, y ∈ {0, 1}
  • { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) . . . ( x ( m ) , y ( m ) ) (x^{(1)}, y^{(1)}), (x^{(2)}, y^{(2)})... (x^{(m)}, y^{(m)}) (x(1),y(1)),(x(2),y(2))...(x(m),y(m))}: 训练数据集,包含m个训练样本
  • [a,b,c,…,z].T: 向量,默认情况下,向量指的是列向量
  • m = m t r a i n m = m_{train} m=mtrain, m t e s t m_{test} mtest=#test examples
  • $X \in R^{n_x * m} : 训 练 集 , 训 练 样 本 以 ∗ ∗ 列 的 方 式 ∗ ∗ 进 行 堆 叠 , 换 言 之 , X 矩 阵 的 每 一 列 是 一 个 样 本 , 而 不 是 行 ; X . s h a p e = ( : 训练集,训练样本以**列的方式**进行堆叠,换言之,X矩阵的每一列是一个样本,而不是行; X.shape = ( :XX.shape=(n_x$, m)
  • Y ∈ R 1 ∗ m Y \in R^{1*m} YR1m: 训练标签,标签以列的方式进行堆叠, Y . s h a p e = ( 1 , m ) Y.shape = (1,m) Y.shape=(1,m)

逻辑回归

在介绍逻辑回顾处理图片分类。我们处理的问题是二分类,输入一张图片判断图片中是否有猫。输入图片格式为RGB三色图,像素取值为0~255。

img

原理介绍

逻辑回归用于处理二分类问题。逻辑回归中 h ^ = P ( y = 1 ∣ x ) \hat{h} = P(y=1|x) h^=P(y=1x)用于计算输入样本为1的概率。以单个样本为例,其计算公式为
y ^ = s i g m o i d ( w T x + b ) \hat{y} = sigmoid(w^Tx+b) y^=sigmoid(wTx+b)
其中, x ∈ R n x x \in R^{n_x} xRnx, w ∈ R n x w \in R^{n_x} wRnx , b ∈ R b \in R bR。输出结果的取值范围为[0, 1]。

逻辑回归其实是线性回归的进一步加工,线性回归计算结果的取值范围为 ( − ∞ , + ∞ ) (-\infty, +\infty) (,+),我们将线性回归的计算结果使用sigmoid将范围压缩到[0, 1].

Sigmoid是一种非线性的S型函数,取值范围在[0, 1],这种输出值可以别理解为概率表示。Sigmoid函数的计算公式和曲线如下。
S i g m o i d ( z ) = 1 1 + e − z Sigmoid(z) = \frac{1}{1+e^{-z}} Sigmoid(z)=1+ez1
Sigmoid

从上图可以看出,sigmoid取值范围为[0, 1],当自变量z非常小时,sigmoid趋近于0;当z非常大时,sigmoid趋近于1(实际上当z=10时,输出值为0.9999,非常趋近于1)。

Loss function

我们现在知道了如何使用逻辑回归计算一个样本为正例的概率,那么如何评估模型的好坏呢?这就依赖于损失函数。

给定一个样本 ( x ( i ) , y ( i ) ) (x^{(i)}, y^{(i)}) (x(i),y(i)),使用逻辑回归计算这个样本为正例的概率P(y=1|x),
y ^ ( i ) = σ ( w T x ( i ) + b ) , w h e r e   σ ( z ) = 1 1 + e − z \hat{y}^{(i)} = \sigma(w^Tx^{(i)} + b), where \ \sigma(z)=\frac{1}{1+e^{-z}} y^(i)=σ(wTx(i)+b),where σ(z)=1+ez1
理想情况下,输出结果 y ^ \hat y y^应该和样本标签y尽可能相等,即 y ^ ( i ) ≈ y ( i ) \hat y^{(i)} \approx y^{(i)} y^(i)y(i)
L ( y ^ , y ) = − ( y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) ) L(\hat y, y) = -(ylog\hat y + (1-y)log(1-\hat y)) L(y^,y)=(ylogy^+(1y)log(1y^))
当y=1时, L ( y ^ , y ) = − l o g y ^ L(\hat y, y)=-log\hat y L(y^,y)=logy^;当y=0时, L ( y ^ , y ) = − l o g ( 1 − y ^ ) L(\hat y, y) = -log(1-\hat y) L(y^,y)=log(1y^).

在全部训练样本上,损失函数cost function为
J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ , y ) = − 1 m ∑ i = 1 m [ y ( i ) l o g y ^ ( i ) + ( 1 − y ( i ) ) l o g ( 1 − y ^ ( i ) ) ] J(w, b) = \frac1{m}\sum_{i=1}^m L(\hat y, y) = -\frac1{m}\sum_{i=1}^m[y^{(i)}log\hat y^{(i)} + (1-y^{(i)})log(1-\hat y^{(i)})] J(w,b)=m1i=1mL(y^,y)=m1i=1m[y(i)logy^(i)+(1y(i))log(1y^(i))]
损失函数是参数w,b的函数,我们想要通过最小化损失函数找到最佳的参数w,b,最后用于样本的预测[通过最小化损失函数,我们可以保证预测结果与真实样本标签之间差距尽可能小,进而保证预测结果的准确性]。

LR损失函数可以使用最大似然估计来进行推导。

Gradient Descent

知道了模型的损失函数,接下来就是通过最小化损失函数得到最终的参数w,b。常用的方法是使用梯度下降法,使用当前位置的偏导数对参数进行更新,反复多次后,损失函数到达最低点,此时w,b即为最终结果。

Gradient Descent

使用梯度下降算法,w,b的更新公式如下:
w = w − α ∂ J ( w , b ) ∂ w b = b − α ∂ J ( w , b ) ∂ b w = w - \alpha \frac{\partial J(w, b)}{\partial w} \\b = b - \alpha \frac{\partial J(w, b)}{\partial b} w=wαwJ(w,b)b=bαbJ(w,b)
其中, α \alpha α为学习率,含义是每次参数更新的步幅;如果 α \alpha α过大,导致参数更新幅度过大,可能会错过模型的最优值;如果 α \alpha α过下,导致每次更新幅度很小,模型需要更多的迭代次数才能收敛。在程序代码中,我们使用dw表示 ∂ J ( w , b ) ∂ w \frac{\partial J(w, b)}{\partial w} wJ(w,b), db表示 ∂ J ( w , b ) ∂ b \frac{\partial J(w, b)}{\partial b} b

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值