神经网络 - 1.原理介绍

以下内容来自于对吴恩达深度学习的个人总结,有兴趣的小伙伴可自行前往学习该课程。

神经网络分两篇,第一篇是原理介绍,第二篇是python实现神经网络。

1. 相关知识点:深度学习的兴起、sigmoid函数、梯度下降

在此文中,由于神经网络涉及到激活函数和梯度下降,我只在这里做一个简单介绍。如想了解更多信息,请自行查阅相关文章。

由下图可以看出,规模驱动着深度学习的发展

(1)随着训练数据的增加,神经网络比传统的机器学习表现出更优异的性能;

(2)随着神经网络规模的增加,性能也会得到很大提升。

接下来,我们介绍激活函数 - sigmoid函数。除了sigmoid函数,激活函数还有tanh函数、ReLu函数。

在神经元网络中,每个神经元都通过激活函数将线性假设变成非线性假设。

最后,我们在介绍梯度下降。在神经网络中,我们通过梯度下降算法来求解网络中的各参数。

梯度下降算法的核心思想:只要沿着梯度(斜率)的方向一直走,就能走到局部的最低点,在凸函数中为全局最优解。

2.神经元网络的结构

一个神经网络的典型结构分为以下三层:输入层、隐藏层和输出层。隐藏层的层数可以为1层、2层.....,它决定了神经网络的大小和规模。其中输入层的x1、x2、x3表示一个训练数据的三个特征。

下图中的每一个圆圈表示一个神经元,我们要牢记它执行了以下两步的操作

(1)线性计算:z=wx+b

(2)非线性计算:对z使用激活函数,a=σ(z)

大家可以思考一个问题,为什么要使用激活函数。如果不使用激活函数,那么无论有多少层神经网络,输出都是各输入特征的线性函数。即z=wX+b,a=wz+b=w(wx+b)+b. (因为两个线性函数的组合本身就是线性函数)

3.神经网络的计算

下图中,先求z,再求a。最后计算出隐藏层四个神经单元a的值。(有兴趣的小伙伴可以自行测试。)为了便于理解,我这边也简单写了一个,同样的计算,for循环花费时间36秒,而向量矩阵运算仅需要0.05秒。怎么样,是不是被惊呆了。

在python中,for循环计算的时间远远大于向量矩阵的计算时间。

所以我们的目标是将下图中每个公式转换为向量矩阵计算。

故转换为以下表达,在这里为了简单表达,每一个向量其实对应的是上图中的这三个值:

上图中的均为一个输入样本的计算,在实际训练中,我们通常有很多个训练样本,接下来我们就看看在m个训练样本中的神经网络计算。我们先注意每一个标记符号的意义:

(1)[ ]表示第几层神经网络

(2)( )表示第几个训练样本

所以m个训练样本中的神经网络就是一个训练样本神经网络的横向延展。

输入层原本为3*1维矩阵(1个样本具有3个特征),转变维3*m维矩阵(m个样本,每个样本具有3个特征)

隐藏层的神经元原本为4*1维矩阵,转变成4*m维矩阵。小z也变成了大Z,小a也变成了大A。

最后总结一下,每个参数的矩阵维数,这样子也更容易去理解神经网络。

4.神经网络的正向传播和反向传播

正向传播:已知输入,求输出预测值

反向传播:通过正向传播求得的预测值与真实值比较,再反向传播调整各参数值,只到输出的预测值越来越逼近于真实值。

最后通过梯度下降求解出来的结果如下图所示:过程太复杂,就不进行推算了,只需记得该结果即可。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值