DL基石-神经网络简易教程

在这篇文章中,咱们将去学习神经网络的基础知识。
本篇文章的学习须要对机器学习有着基本理解,若是你学习过一些机器学习算法,那就更好了。
首先简单介绍一下人工神经网络,也叫ANN。
不少机器学习算法的灵感来自于大天然,而最大的灵感来自咱们的大脑,咱们如何思考、学习和作决定。
有趣的是,当咱们触摸到热的东西时,咱们身体里的神经元会将信号传递给大脑的,而后大脑会产生让咱们从热的区域撤退的反应。咱们能够根据经验来进行训练,根据咱们的经验,咱们开始作出更好的决定。
使用一样的类比,当咱们向神经网络发送一个输入(触摸热物质),而后根据学习(先前的经验),咱们产生一个输出(从热区域退出)。在将来,当咱们获得相似的信号(接触热表面),咱们能够预测输出(从热区退出)。
假设咱们输入了诸如温度、风速、能见度、湿度等信息,以预测将来的天气情况——下雨、多云仍是晴天。
这能够表示为以下所示。
DL基石-神经网络简易教程
让咱们用神经网络来表示它并理解神经网络的组成部分。
神经网络接收输入,经过使用激活函数改变状态从而转换输入信号,进而产生输出。
输出将根据接收到的输入、强度(若是信号由权值表示)和应用于输入参数和权值的激活而改变。
神经网络与咱们神经系统中的神经元很是类似。
DL基石-神经网络简易教程
x一、x二、…xn是神经元向树突的输入信号,在神经元的轴突末端会发生状态改变,产生输出y一、y二、…yn。
以天气预报为例,温度、风速、能见度和湿度是输入参数,而后神经元经过使用激活函数对输入施加权重来处理这些输入,从而产生输出,这里预测的输出是晴天、雨天或阴天的类型。
DL基石-神经网络简易教程
那么,神经网络的组成部分是什么呢
神经网络会有算法

  • 输入层,偏置单元
  • 一个或多个隐藏层,每一个隐藏层将有一个偏置单元
  • 输出层
  • 与每一个链接相关的权重
  • 将节点的输入信号转换为输出信号的激活函数
    输入层、隐含层和输出层一般称为全链接层
    DL基石-神经网络简易教程
    这些权值是什么,什么是激活函数,这些方程是什么?
    让咱们简化一下
    权重是神经网络学习的方式,咱们调整权重来肯定信号的强度。
    权重帮助咱们获得不一样的输出。
    例如,要预测晴天,温度可能介于宜人到炎热之间,晴天的能见度很是好,所以温度和能见度的权重会更高。
    湿度不会过高,不然当天会下雨,因此湿度的重量可能会小一些,也多是负的。
    风速可能与晴天无关,它的强度要么为0,要么很是小。
    咱们随机初始化权重(w)与输入(x)相乘并添加误差项(b),因此对于隐藏层,会先计算z,而后应用激活函数(ɸ)。
    咱们称之为前向传播。方程能够表示以下,其中为层的编号,对于输入层。
    DL基石-神经网络简易教程
    说到激活函数,咱们来了解一下它们的用途
    激活函数帮助咱们决定是否须要激活该神经元,若是咱们须要激活该神经元那么信号的强度是多少。
    激活函数是神经元经过神经网络处理和传递信息的机制。
    让咱们用预测天气的样本数据来理解神经网络
    为了更好地理解,咱们将进行简化,咱们只须要两个输入:有两个隐藏节点的温度和能见度,没有偏置。对于输出,咱们仍然但愿将天气划分为晴天或不晴天
    温度是华氏温度,能见度是英里。
    DL基石-神经网络简易教程
    让咱们看一个温度为50华氏度,能见度为0.01英里的数据。
    步骤1:咱们将权重随机初始化为一个接近于0但不等于0的值。
    步骤2:接下来,咱们用温度和能见度的输入节点获取咱们的单个数据点,并输入到神经网络。
    步骤3:从左到右进行前向传播,将权值乘以输入值,而后使用ReLU做为激活函数。目前ReLU是全链接网络最经常使用的激活函数。
    步骤4:如今咱们预测输出,并将预测输出与实际输出值进行比较。因为这是一个分类问题,咱们使用交叉熵函数
    DL基石-神经网络简易教程
    交叉熵是一个非负的代价函数,取值范围在0和1之间 在咱们的例子中,实际的输出不是晴天,因此y的值为0。若是ŷ是1,那么咱们把值代入成本函数,看看获得什么
    DL基石-神经网络简易教程
    相似地,当实际输出和预测输出相同时,咱们获得成本c=0。
    DL基石-神经网络简易教程
    咱们能够看到,对于交叉熵函数,当预测的输出与实际输出相匹配时,成本为零;当预测的输出与实际输出不匹配时,成本是无穷大的。
    步骤5:从右向左反向传播并调整权重。权重是根据权重对错误负责的程度进行调整的,学习率决定了咱们更新权重的多少。
    反向传播、学习率,咱们将用简单的术语来解释一切。
    反向传播
    把反向传播看做是咱们有时从父母、导师、同伴那里获得的反馈机制,反馈帮助咱们成为一个更好的人。
    反向传播是一种快速的学习算法,它告诉咱们,当咱们改变权重和误差时,成本函数会发生怎样的变化,从而改变了神经网络的行为。
    这里不深刻研究反向传播的详细数学。在反向传播中,咱们计算每一个训练实例的成本对权重的偏导数和成本对误差的偏导数,而后求全部训练样本的偏导数的平均值。
    对于咱们的单个数据点,咱们肯定每一个权值和误差对错误的影响程度,基于这些权值对错误的影响程度,咱们同时调整全部权值。
    对于使用批量梯度降低(GD)算法,全部训练数据更新一次权值;对于使用随机梯度降低(SGD)算法,每个批次训练示例更新一次权值。
    对于不一样的权重,咱们使用GD或SGD重复步骤1到步骤5。
    随着权重的调整,某些节点将根据激活函数进行打开或关闭。
    在咱们的天气例子中,温度与预测多云的相关性较小,由于夏季的温度可能在70度以上,而冬季仍然是多云的,或者冬季的温度可能在30度或更低,但仍然是多云的,在这种状况下,激活函数能够决定关闭负责温度的隐藏节点,只打开可见度节点,以预测输出不是晴天,以下图所示

DL基石-神经网络简易教程
DL基石-神经网络简易教程
Epoch是指用于一次学习,一次正向传播和一次反向传播的完整数据集。
咱们能够重复也就是在多个epoch下前向和反向传播,直到咱们收敛到一个全局极小值。
什么是学习率?
学习率控制着咱们应该在多大程度上根据损失梯度调整权重。
值越低,学习越慢,收敛到全局最小也越慢。
较高的学习率值不会使梯度降低收敛
学习率是随机初始化的。
DL基石-神经网络简易教程
如何肯定隐藏层的数量和每一个隐藏层的节点数量?
随着隐层数目的增长和隐层神经元或节点数目的增长,神经网络的容量也随之增大,神经元能够协做来表达不一样的功能,这经常会致使过拟合,咱们必须当心过拟合。
对于神经网络中隐藏层的最优数量,根据Jeff Heaton提出的下表
DL基石-神经网络简易教程
对于隐藏层中神经元的最佳数目,咱们能够采用下面的方法网络

相关文章
相关标签/搜索