Datawhale《深度学习-NLP》Task5- 神经网络基础

本文详细介绍了神经网络的基础概念,包括前馈神经网络、网络结构、激活函数及其性质、梯度下降法等。通过实例探讨了模型训练过程,如DropOut正则化策略,以及Tensorflow实现基本神经网络的步骤。此外,还讨论了激活函数的选择,如sigmoid、tanh和ReLU,以及深度学习中的正则化方法,以防止过拟合。最后,简述了深度模型优化中的基本算法和策略。
摘要由CSDN通过智能技术生成

 

基本概念

前馈神经网络,网络层数,输入层,隐藏层,输出层,隐藏单元,激活函数

前馈神经网络(Feedforward Neural Network)

网络结构(一般分两种)

1. Back Propagation Networks - 反向传播网络

2. RBF networks - 径向基函数神经网络

BP网络是所有的神经网络中结构最为简单的一种网络。一般我们习惯把网络画成左边输入右边输出层的结构。

640?wx_fmt=png

一个向量从输入层进入,经过网络作用,在输出层产生输出结果。BP神经网络的网络结构是不固定的。

640?wx_fmt=png

第二个神经网络有三层,两个隐藏层。

前馈神经网络,不要求对称,在不同的网络结构下产生不同的训练效果和运行特点。

最简单的BP网络:

640?wx_fmt=png

总共有两层,有一个隐藏层和一个输出层,一共两层。从第二层开始算一层。

输入x最简单化,x一维是一个实数。隐藏层h和输出层o结构。

640?wx_fmt=png

由这两个函数所组成。一旦这里输入x,y之后就可以开始训练了。

网络结构

前馈神经网络的结构不固定,一般神经网络包括输入层、隐层和输出层,下面的图一的神经网络由两层,每层4个节点。第二个神经网络有两个隐层,第一层5个节点,第二层3个节点,最后一层输出层只有一个节点。神经网络有很多种设计模式,并在不同的模式下产生不同的效果

神经网络的复杂之处在于他的组成结构爱太复杂,神经元太多,为了方便简介,我们设计一个最简单的BP网络结构,如下图所示。

这是一个只有两层的神经网络,x我们也让他最简化,就一个实数,我们规定隐层h和输出层o这两层都是$z=wx+b$和$f(z)=\frac{1}{1+e^{-z}}$的组合,一旦输入样本x和标签y之后,模型就开始训练了。那么我们的问题就变成了求隐层的w、b和输出层的w、b四个参数的过程。
 

开始训练

  我们想要得到$y=wx+b$中的w和b,我们有众多的样本x和标签y,在这里写作y和x的关系,假设拟合的过程中有这样的一个参数$e$代表error,表示误差的意思,$y=wx+b+e$

当我们有n对x和y那么就有n个$e$,我们试着把n个$e$都加起来表示一个误差总量,为了不让残差正负抵消我们取平方或者取绝对值,本文取平方。这种误差我们称为“残差”,也就是我们建模之后进行拟合出的结果和真实结果之间的差值。损失函数Loss还有一种称呼叫做“代价函数Cost”,

$$Loss=\sum_{i=1}^{n}e_i^2=\sum_{i=1}^{n}(y_i-(wx_i+b))^2$$

现在我们要做的就是找到一个比较好的w和b,使得整个Loss尽可能的小,越小说明我们训练出来的模型越好。

梯度下降法

  老规矩,求最小值我们一般中梯度下降算法,通过迭代不断的优化待定系数w和b。我们的残差到底是一个怎样的函数呢,他的图形到底长什么样子呢?到底该怎么求他的最小值呢?OK,为了方便读者理解,我把Loss函数给你们画出来。

我们初始化一个$w_o$和$b_0$,带到Loss里面去,这个点($w_o,b_o,Loss_o$)会出现在碗壁的某个位置,而我们的目标位置是碗底,那就慢慢的一点一点的往底部挪吧。

$\eta$是学习率,也就是每次挪动的步长,$\eta$大每次迭代的脚步就大,$\eta$小每次迭代的脚步就小,我们只有取到合适的$\eta$才能尽可能的接近最小值而不会因为步子太大越过了最小值。到后面每次移动的水平距离实在逐步减小的,原因就是因为整个函数圆乎乎的底部斜率在降低,吃个栗子:

 

如图所示,当$x_n=3$时,$-\eta\frac{f(x)}{dx}$为负数,更新后$x_{n+1}$会减小;当$x_n=-3$时,$-\eta\frac{f(x)}{dx}$为正数,更新后$x_{n+1}$还是会减小。这总函数其实就是凸函数。满足$f(\frac{x_i+x_2}{2})=\frac{f(x_i)+f(x_2)}{2}$都是凸函数。沿着梯度的方向是下降最快的。
-我们初始化$(w_0,b_0,Loss_o)$后下一步就水到渠成了,

有了梯度和学习率的$\eta$乘积之后,当这个点逐渐接近“碗底”的时候,偏导也随之下降,移动步伐也会慢慢变小,收敛会更为平缓,不会轻易出现“步子太大”而越过最低的情况。一轮一轮迭代,直到每次更新的值非常小,损失值不在减小就可以判断为训练结束,此时得到的(w,b)就是我们要求的模型。

神经网络的训练

  哈哈哈,是不是发现我刚才讲的明明是线性回归模型的训练,和大家想知道的神经网络的训练有毛线关系呀!你们说的没错,就是有一毛钱的关系,嘿嘿[笑脸]!

这个网络用函数表达式写的话如下所示:

第一层(隐藏层)  $

第二层(输出层) 

接下来的工作就是把$w_h、b_h、w_o、b_o$参数利用梯度下降算法求出来,把损失函数降低到最小,那么我们的模型就训练出来呢。

第一步:准备样本,每一个样本$x_i$对应标签$y_i$。

第二步:清洗数据,清洗数据的目的是为了帮助网络更高效、更准确地做好分类。

第三步:开始训练,

$Loss=\sum_{i=1}^{n}(y_{oi}-y_i)^2$

我们用这四个表达式,来更新参数。

问题来了,$\frac{\partial Loss}{\partial w_h}$、$\frac{\partial Loss}{\partial b_h}$、$\frac{\partial Loss}{\partial w_o}$、$\frac{\partial Loss}{\partial b_o}$这4个值怎么求呢?

配一个$\frac{1}{2}$出来,为了后面方便化简。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值