神经网络(吴恩达机器学习系列课程)

神经网络

引入:例子

假如现在我们已知了一组房子规模-价格数据:
在这里插入图片描述

如果我们要对其进行一个预测,很明显这就是一个简单的线性回归(以2维空间为例)的问题:

  1. 我们首先随机给定一个w,b,那么就可以确定一条“可能满足这几个点的需求”的直线:
    y = ω x + b y=\omega x +b y=ωx+b

  2. 然后利用最小二乘法作为我们的评判指标——也就是损失函数loss,
    j ( θ ) = 1 n ∑ i = 1 n ( f ( x i ) − y i ) 2 j ( θ ) 是 损 失 值 x i 就 是 样 本 y i 就 是 真 实 标 签 值 f ( x i ) 是 预 测 标 签 值 j(\theta)=\frac{1}{n}\sum^{n}_{i=1}(f(x_i)-y_i)^2\\ j(\theta)是损失值\quad x_i就是样本\quad y_i就是真实标签值\quad f(x_i)是预测标签值 j(θ)=n1i=1n(f(xi)yi)2j(θ)xiyif(xi)
    通过loss函数,我们就可以得到每一个预测值的成绩——总损失值

  3. 但是在现实生活中,我们一般是一组预测值对应一组样本,所以我们只能在得到第一次的成绩的基础上,对我们的预测值进行一个修正——目的就是让我们的loss最小,从而更好地去让直线去拟合这一堆数据,那么就引入了梯度下降算法。(更详细介绍请看后面)

  4. 梯度下降算法是什么呢?简单来说,根据梯度的数学意义——就是表示函数在某一点的最为陡峭的一个向量,如果我给定的是loss与某一个甚至是多个变量的关系函数,那么就可以通过这个**“最为陡峭的向量”将我们的这个点移动到下一个更为接近最低点的点**(但是注意这个点不是我们说的样本点哦,它是loss值与n个变量组成的点)。如此迭代多次,便可以找到这个最低点,从而得到满足loss最小的点,在这个过程中不断地更新权重omega偏置b(机器学习中习惯这样称呼omega和b)。

从而就可以得到一个可以比较好地拟合数据的直线了。
在这里插入图片描述

但是在这个预测-修正的过程中我们发现y肯定是不能为0的,所以如果我们假设拟合直线与x轴交点为
( x 0 , 0 ) (x_0,0) (x0,0)
在这里插入图片描述

![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/b6b27f0b217a8d6771f35970d9383b23.png
那么我们就得对
f ( x ) f(x) f(x)
这个函数进行一定的修改——让他**呈非线性(non-linear)输出,从而满足我们的不同需求**。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M23mqrCd-1626912213201)(D:\Python\机器学习\吴恩达机器学习系列课程\神经网络\img\image-20210722053449398.png)]

像这种f(x),我们称之为**relu激活函数(rectified linear unit activation function)**

一.神经网络(neural network)

​ 在上面的引例中,将一个样本x输入到修正单元当中,然后再进行线性回归并得到最后的房价关系拟合直线的过程:
y = f ( x ) = r e l u ( x ) y=f(x)=relu(x) y=f(x)=relu(x)
在这个过程中,修正线性单元其实就相当于一个很小、很简单的神经网络了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y0d4kNKd-1626912213203)(D:\Python\机器学习\吴恩达机器学习系列课程\神经网络\img\image-20210722071724709.png)]

​ 这几乎就是最简单的神经网络了,但是针对大一点的、比较复杂的神经网络,我们其实是先对其进行一个堆叠。比较大的神经网络,就是由无数个神经元堆叠起来的。
在这里插入图片描述

二.较为复杂的神经网络

引入:假如说,我们现在的任务是需要根据用户财政收入情况、地区邮政编码、户型大小以及寝室数目来综合预测某个情况下的户型价格,那么应该怎么做呢?

​ 显然,我们现在的x是一个大小为[1,4]的张量,而输出是一个数字,那么显然如果要从这个输入提取出特征,并使得神经网络的输出为一个数字的话,我们中间就需要使用到不止一个神经元。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WlGVhYdo-1626912213204)(D:\Python\机器学习\吴恩达机器学习系列课程\神经网络\img\image-20210722073104919.png)]

​ 那么我们就可以使用上面的图来进行一个特征信息的提取。但是需要注意的是:

  1. 如果训练所使用的数据集够大,那么在一定程度上,神经网络就能够构建足够精准的映射
  2. 在上方的图中,其实我可以对其进行一些更改或者说是创新。就比如,如果我现在想有多个输出,其中的两个除了上面的综合考虑4个方面的输出外,我们还可以设定一个神经元,但只让其中的3个方面的信息或者其相关特征对其进行输入。其次类推,我们就可以有

4 × 3 × 2 × 1 4\times 3\times 2\times 1 4×3×2×1

种输出,以此就可以实现满足不同用户对不同信息尺度的考虑。

三.关于梯度下降算法那些事

类别:如果要类比一下的话,用现在进化算法的类比方法就是说,我滑雪选手要找到一个“函数山”上坡度最大的地方进行滑雪,以此来达到位于极值点的最低点。

1.梯度

​ 梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率(为该梯度的模)最大。

2.具体实现过程

(1)已知数学公式

之前我们以及知道了loss函数:
J ( θ ) J(\theta) J(θ)
是一个关于theta的函数,那么我们就设定最初的滑雪起点为:
θ 0 \theta_0 θ0
(2)选手就位以后,我们就要出发了,经过第一次的loss后,他就得通过滑行一段距离来减少与极值点的差距,那么这个距离怎么定合适呢?毕竟我们的梯度只是给他指定了一个方向(向量是有方向的),但是具体要走多远,还是得要我们自己来设定,所以我们引入一个参数
α ( l r ) \alpha(lr) α(lr)
又称作**学习率(learning rate)**,顾名思义就是说我不断迭代的这个过程中,我到底要根据正确的方向,学多少、走多远。
θ 1 = θ 0 − α ∗ g r a d 0 \theta_1=\theta_0-\alpha*grad_0 θ1=θ0αgrad0
如果是在下降的过程中,梯度是小于零的,起始点是小于终止点的;

如果是在上升的过程中,梯度是大于零的,起始点是大于终止点的,

符合实际要求。

(3)如此迭代以后,最终就达或者说几近达到到了“山谷”,也就是最终点。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nLE5CkVo-1626912213205)(D:\Python\机器学习\吴恩达机器学习系列课程\神经网络\img\image-20210722080159284.png)]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值