深度学习笔记(2) 神经网络基础

深度学习笔记(2) 神经网络基础


1. 二分类

逻辑回归是一个用于二分类(binary classification)的算法
这里有一个二分类问题的例子:假如有一张图片作为输入,比如这只猫
如果识别这张图片为猫,则输出标签1作为结果
如果识别出不是猫,那么输出标签0作为结果
用字母y来表示输出的结果标签

计算机中为了保存一张图片,需要保存三个矩阵,它们分别对应图片中的红、绿、蓝三种颜色通道
如果图片大小为64x64像素,那么就有三个规模为64x64的矩阵,分别对应图片中红、绿、蓝三种像素的强度值
为了把这些像素值转换为特征向量 x,需要像下面这样定义特征向量 x 来表示这张图片,把所有像素都取出来
那么向量 x 的总维度= 64 x 64 x 3 = 12288,用nx = 12,288,来表示输入特征向量的维度(一般直接用n)
在这里插入图片描述
在二分类问题中,目标就是学习得一个分类器,以图片的特征向量作为输入
然后预测输出结果y为1还是0,也就是预测图片中是否有猫:

符号定义 :

  • x :表示一个nx维数据,为输入数据,维度为(nx,1)
  • y :表示输出结果,取值为(0,1)
  • (x(i),y(i)) :表示第 i 组数据,样本的输入和输出
  • X = [x(1),x(2),…,x(m)] :表示所有的训练数据集的输入值,放在一个 nx×m的矩阵中,其中m表示样本数目
  • Y = [y(1),y(2),…,y(m)] :对应表示所有训练数据集的输出值,维度为1×m

在Python实现神经网络时,为了让整个实现的过程变得更加简单,需保证X.shape=(nx,m),即X =X.T
同样地使用Python保证 Y.shape=(1,m)


2. 逻辑回归

对于二元分类问题来讲,给定一个输入特征向量X,它可能对应一张图片
想识别这张图片识别看它是否是一只猫或者不是一只猫的图片,需要一个算法能够输出预测 (对实际值 y 的估计)
更正式地来说,让 y 等于1的一种可能性或者是机会,前提条件是给定了输入特征X
换句话来说,如果X是看到的图片,想让

y ^ \hat{y}

y^ 来告诉这是一只猫的图片的概率P有多大

w 来表示逻辑回归的参数,这也是一个nx维向量
因为w实际上是特征权重,维度与特征向量相同
参数里面还有 b ,这是一个实数,类似截距,表示偏差

所以,给出输入x以及参数w和b之后,产生输出预测值

y^ \hat{y}

y^
一件可以尝试却不可行的事是让

y ^ \hat{y}

y^ =wT x+b
这时候得到的是一个关于输入x的线性函数,实际上这是在做线性回归时所用到的

但是这对于二元分类问题来讲不是一个非常好的算法
因为

y ^ \hat{y}

y^ 应该在0到1之间来表示实际值y等于1的概率
因此在逻辑回归中,输出应该是

y ^ \hat{y}

y^ 等于由上面得到的线性函数式子作为自变量的 sigmoid 函数在这里插入图片描述
公式如下图sigmoid函数的图像最上面所示,将线性函数转换为非线性函数
在这里插入图片描述
把水平轴作为z轴,那么关于z的 sigmoid 函数是平滑地从0走向1
通常都使用z来表示 wT x+b的值

如果 z 非常大,那么 e(-z) 将会接近于0,关于 z 的 sigmoid 函数将会近似等于1
相反地,如果 z 非常小或者说是一个绝对值很大的负数,那么 e(-z) 会变成一个很大的数, sigmoid 函数就接近于0

在实现逻辑回归时,就是去让机器学习参数w以及b这样才使得

y ^ \hat{y}

y^ 成为对 y = 1 这一情况的概率的一个很好的估计


3. 逻辑回归的代价函数

损失函数又叫做误差函数,用来衡量算法的运行情况,Loss function:

L L

L(

y^ \hat{y}

y^,y).
通过这个

L L

L称为的损失函数,来衡量预测输出值和实际值有多接近
一般用预测值和实际值的平方差或者它们平方差的一半
但是,通常在逻辑回归中不这么做,因为它的优化目标不是凸优化,只能找到多个局部最优值

对于逻辑回归的概率 :p(y|x) =

y ^ \hat{y}

y^(y) (1 - KaTeX parse error: Got function '\hat' with no arguments as superscript at position 8: y ^ \̲h̲a̲t̲{y}

y^)(1-y)
log 函数是严格单调递增的函数
最大化

log\log

log(p(y|x)) 等价于最大化 p(y|x)

并且计算 p(y|x) 的

log \log

log 对数,就是计算

log \log

log(

y ^ \hat{y}

y^(y) (1 -

y ^ \hat{y}

y^)(1-y))
对数函数化简为:y

log \log

log

y ^ \hat{y}

y^+(1 - y)

log \log

log(1 -

y ^ \hat{y}

y^ )
再加上负号,原因是 log 函数当在输入接近0时,输出接近负无穷;在输入接近1时,输出接近0
而训练学习算法时需要算法输出值的概率是最大的,代价最小
所以,在逻辑回归中用到的损失函数是:

在这里插入图片描述
当 y = 1 时损失函数

L L

L = -

log \log

log(

y ^ \hat{y}

y^),想要

L L

L尽可能得小,那么

y ^ \hat{y}

y^就要尽可能大,所以

y ^ \hat{y}

y^ 会无限接近于1
当 y = 0 时损失函数

L L

L = -

log \log

log(1 -

y ^ \hat{y}

y^ ),想要

L L

L尽可能得小,那么

y ^ \hat{y}

y^ 就要尽可能小,所以

y ^ \hat{y}

y^ 会无限接近于0

损失函数是在单个训练样本中定义的,它衡量的是算法在单个训练样本中表现如何
为了衡量算法在全部训练样本上的表现,需要定义一个算法的代价函数是对m个样本的损失函数求和然后除以m:

在这里插入图片描述
在训练逻辑回归模型时候,需要找到合适的w和b,来让代价函数

J J

J 的总代价降到最低


4. 梯度下降

梯度下降法的形象化说明:
找到使得代价函数(成本函数)

J J

J(w,b)函数值是最小值,对应的参数w和b
在这里插入图片描述
迭代就是不断重复做如图的公式:
在这里插入图片描述

α \alpha

α 表示学习率(learning rate),用来控制步长(step),即向下走一步的长度

d J ( w ) / d w dJ(w)/dw

dJ(w)/dw 就是函数

J J

J(w)对w 求导(derivative)

以如图点为初始化点,该点处的斜率的符号是负的,即

d J ( w ) / d w dJ(w)/dw

dJ(w)/dw < 0,所以接下来会向右走一步
在这里插入图片描述
整个梯度下降法的迭代过程就是不断地向右走,即朝着最小值点方向走
逻辑回归的代价函数(成本函数)

J ( w , b ) J(w,b)

J(w,b)是含有两个参数的
在这里插入图片描述
∂ 表示求偏导符号(partial derivative),读作round
小写字母 d 用在求导数(derivative),即函数只有一个参数
∂ J ( w , b ) / ∂ w ∂ J ( w , b ) / ∂ w ∂ J ( w , b ) / ∂ w ∂J(w,b)/∂w J(w,b)/wJ(w,b)/w

J(w,b)/w 就是函数

J ( w , b ) J(w,b)

J(w,b) 对 w 求偏导
∂ J ( w , b ) / ∂ b ∂ J ( w , b ) / ∂ b ∂ J ( w , b ) / ∂ b ∂J(w,b)/∂b J(w,b)/bJ(w,b)/b

J(w,b)/b 就是函数

J ( w ,b ) J(w,b)

J(w,b) 对 b 求偏导


5. 逻辑回归中的梯度下降

逻辑回归的公式定义如下:
在这里插入图片描述损失函数:在这里插入图片描述代价函数:在这里插入图片描述
w , b 的修正量:在这里插入图片描述
假设现在只考虑单个样本的情况,单个样本的代价函数定义如下:
在这里插入图片描述
而逻辑函数的导数 d a / d z d a / d z d a /d z da/dz da/dzda/dz

da/dz
在这里插入图片描述

根据上面的推导结果,对权重求导
在这里插入图片描述
权重更新
在这里插入图片描述


6. 简化的代价函数

如果不分w和b,值用θ表示权重
代价函数,利用上面的结果,借助复合函数求导公式等,可得:
在这里插入图片描述在这里插入图片描述
向量化形式:
在这里插入图片描述
此时权重更新
在这里插入图片描述


参考:

《神经网络和深度学习》视频课程


相关推荐:

深度学习笔记(1) 深度学习简介


谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值