【学习周报】深度学习笔记

学习目标:

  • 吴恩达深度学习课程week1

学习内容:

  1. 什么是神经网络?(What is a Neural Network)
  2. 二分类(Binary Classification)

学习时间:

  • 9.28~10-1

学习产出:

1.什么是神经网络?

1.1 深度学习与神经网络的关系:

我们常常用深度学习这个术语来指训练神经网络的过程。有时它指的是特别大规模的神经网络训练。

1.2 神经元

神经元是组成神经网络的基本单位,因此想要理解神经网络必须先理解神经元。比方说最常见的一个例子,通过房间的大小来预测房价,一个线性回归方程。从 x(房间大小)到 y(价格)的映射可以用一个函数来表示,那么这个函数就可以看做是一个神经元。

这几乎可能是最简单的神经网络实例。我们把房屋的面积作为神经网络的输入(我们称之为x),通过一个节点(一个小圆圈),最终输出了价格(我们用y表示)。

 值得一提的是上面的神经元构成的函数:从趋近于零开始,然后变成一条直线。这个函数被称作ReLU激活函数,它的全称是Rectified Linear Unit

1.3 神经网络的定义

笔者搜索到的普遍定义:神经网络就是按照一定规则将多个
神经元连接起来的网络。神经元是最小的神经网络。

同时我们设想,影响房间价格的因素不仅仅只有面积,可能也包括面积、卧室数目、地理位置、富裕水平等,面积和房间数目可以告诉我们这个房子能住几口人邮编和收入水平可以让我们衡量房子周边情况的好坏,然后再由这些来预测房价。因此,预想设计一个能够考虑到以上各种因素的神经网络,从而达到能够更好地预测房屋价格的目的。

最后,总结对神经网络的理解:神经网络类似于一种通过电脑模仿人脑进行思考的网络,通过提取现实世界的数据特征,通过大量数据训练,得到一个符合预期结果的神经网络用于解决某些问题。

2.二分类(Binary Classification)

 二分类:分类中的特殊情况,即结果只有两种(是/否、0/1)。

一个二分类问题的例子:假如你有一张图片作为输入,比如这只猫,如果识别这张图片为猫,则输出标签1作为结果;如果识别出不是猫,那么输出标签0作为结果。现在我们可以用字母 y来 表示输出的结果标签,如下图所示:

前期准备:

为了解决上面的“识猫问题”,我们需要将输入的图片进行数字化处理,即将输入变成计算机可以识别的数据。

假设图片大小是64*64像素,每个像素点使用RGB表示,那么每张照片的数据规模:64*64*3 = 12288。

注意这里的图片实例数据规模为:5*4*3

那么将每张图片使用 x = 【255、231 ... 202(Red),255、134 ... 94(Green),255、134 ... 142(Blue)】 来表示。

符号定义 :

x:表示一个n维数据,为输入数据,维度为(n​,1);

y​​:表示输出结果,取值为(0,1)​;

(x(i),y(i)):表示第ii组数据,可能是训练数据,也可能是测试数据,此处默认为训练数据;

X=[x^(1),x^(2),...,x^(m)]:表示所有的训练数据集的输入值,放在一个 n​×m的矩阵中,其中m表示样本数目;

Y=[y(1),y(2),...,y(m)]:对应表示所有训练数据集的输出值,维度为1×m。

下面我们尝试使用逻辑回归算法解决猫的分类问题。

 2.1 逻辑回归(Logistic Regression)

逻辑回归定义:也称作logistic回归分析,是一种广义的线性回归分析模型,属于机器学习中的监督学习。其推导过程与计算方式类似于回归的过程,但实际上主要是用来解决二分类问题(也可以解决多分类问题)。通过给定的n组数据(训练集)来训练模型,并在训练结束后对给定的一组或多组数据(测试集)进行分类。

问题

给定一个输入特征向量X,它可能对应一张图片,你想识别这张图片识别看它是否是一只猫或者不是一只猫的图片,你想要一个算法能够输出预测,你称之为y^​,也就是你对实际值 y 的估计。

搭建模型

思路:尝试构建函数:y^​=wTx+b。其中我们用w来表示逻辑回归的参数,这也是一个n​维向量(因为w实际上是特征权重,维度与特征向量相同),参数里面还有b,这是一个实数(表示偏差)。

 由于二分类问题中预测的 y^ 应当在0与1之间,所以我们需要对y^​=wTx+b进行处理,这里引入sigmod函数

下图是sigmoid函数的图像,如果我把水平轴作为z轴,那么关于z的sigmoid函数是这样的,它是平滑地从0走向1,让我在这里标记纵轴,这是0,曲线与纵轴相交的截距是0.5,这就是关于z的sigmoid函数的图像。我们通常都使用z来表示wTx+b的值。

关于sigmoid函数的公式是这样的:σ(z)=1/(1+e−z),我们很熟悉指数函数的性质,感兴趣的读者可以自行计算σ(z)随z从负无穷到正无穷过程中的取值性质。

这里给出结果:σ(z)可以将z从负无穷到正无穷的取值映射到0~1上。

通过sigmod函数,很容易就可以实现将y^的值映射到0~1上,即:y^​=σ(wTx+b)

对于“识猫问题”的计算模型就搭建好了,那么我们应该如何训练该模型呢。

训练模型

为了训练逻辑回归模型的参数参数w和参数b我们,需要一个代价函数,通过训练代价函数来得到参数w和参数b。先看一下逻辑回归的输出函数:

给出m个样本的训练集【(x1,y1),...,(xm,ym)】通过训练集的训练得到较为精确的w、b,即确定最终的训练模型参数。如何使用m个样本对模型进行训练是接下来需要讨论的。

损失函数:

    损失函数又叫做误差函数,用来衡量算法的运行情况,Loss function:L(y^​,y).

    我们通过这个L称为的损失函数,来衡量预测输出值和实际值有多接近。一般我们用预测值和实际值的平方差或者它们平方差的一半,但是通常在逻辑回归中我们不这么做,因为当我们在学习逻辑回归参数的时候,会发现我们的优化目标不是凸优化,只能找到多个局部最优值,梯度下降法很可能找不到全局最优值,虽然平方差是一个不错的损失函数,但是我们在逻辑回归模型中会定义另外一个损失函数。在多个极值点的情况下,逻辑回归可能造成认为某个极值点就是最值点的情况,从而计算错误(我们需要找的是极值点)。

    我们在逻辑回归中用到的损失函数是:L(y^​,y)=−ylog(y^​)−(1−y)log(1−y^​)

    当我们使用平方误差作为损失函数的时候,你会想要让这个误差尽可能地小,对于这个逻辑回归损失函数,我们也想让它尽可能地小。

     当y=1时损失函数L=−log(y^​),如果想要损失函数L尽可能得小,那么y^​就要尽可能大,因为sigmoid函数取值[0,1],所以y^​会无限接近于1。

     当y=0时损失函数L=−log(1−y^​),如果想要损失函数L尽可能得小,那么y^​就要尽可能小,因为sigmoid函数取值[0,1],所以y^​会无限接近于0。

算法的代价函数是对m个样本的损失函数求和然后除以m,如下图中的J函数即代价函数: 

综上所述,只需要将总代价函数的值降到最低,即y与y^的误差最小,即可调整合适的w、b训练出相应的模型。

今天的学习就到这里。关于如何实现不断调整w、b使得代价函数最小的问题,将在下周继续学习方法:梯度下降法。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值