Neuron network

时间:2022-12-26 00:15:14

关于神经网络你不能不知道的一切

作者|Kailash Ahirwar 
编译|Sambodhi 
编辑|Vincent

AI前线导语:理解什么是人工智能,以及机器学习和深度学习是如何影响人工智能的,这是一种荡气回肠的体验。最近,MateLabs联合创始人兼CTO Kailash Ahirwar在Mudium发布了一篇博文《关于神经网络你不能不知道的一切》[1]Everything you need to know about Neural Networks)。

本文涵盖了从神经元到训练轮数,介绍了神经网络的关键名词术语,AI前线也做了一些批注、解释,以飨读者进一步理解、掌握。


神经元(节点)(Neuron(Node)):是神经网络的基本单元,包含一定数量的输入和一个偏置值。当输入一个信号(值),它就乘以一个权重值。如果一个神经元有四个输入,那么它在训练中有四个可调节的权重值。

Neuron network

Neuron network

神经网络中一个神经元的运算

Neuron network

连接(Connections):用于连接两层之间或同层的两个神经元。每个连接总带有一个权重值。训练的目标是更新这个权重值来减少损失(误差)。

Neuron network

偏置(偏移)(Bias(offset)):是神经元的一个额外的输入,其值始终为1,有自己的连接权。这就确保即使所有的输入为0时神经元也会有一个激活函数。

AI前线:注意不要和预测偏差混淆。


激活函数(传递函数)(Activation Function(Transfer Function)):激活函数为神经网络引入非线性特征。它将值压缩到一个更小的范围。一个Sigmoid激活函数的值区间为[0,1]。在深度学习中有很多激活函数,如ReLU、SeLU、TanH等,都比Sigmoid激活函数更为常用。要了解更多激活函数,请参阅MateLabs的《概览深度学习中的激活函数》[2](Secret Sauce behind the beauty of Deep Learning:Beginners guide to Activation Functions)。

AI前线:即将前一层所有神经元激活值的加权和输入到一个非线性函数中,然后向下一层传递该函数的输出值(典型的非线性)。

Neuron network

各种激活函数

Neuron network

基本的神经网络设计

输入层(Input Layer):神经网络的第一层,用于接受输入信号(值)并传递到下一层,对其输入的信号(值)并不执行任何运算,没有自己的权重值和偏置值。在我们的网络中,有四个输入信号为x1、x2、x3、x4。

隐藏层(Hidden Layers):隐藏层的神经元(节点)通过不同的转换方式输入数据。一个隐藏层是一个垂直堆栈神经元集。在上图所示中,有五个隐藏层,第一个隐藏层有四个神经元(节点),第二个有五个神经元,第三个有六个神经元,第四个有四个神经元,第五个有三个神经元,最后一个隐藏层将值传递给输出层。隐藏层中所有的神经元彼此互联,下一层的神经元也是如此,因此我们就有了一个全连接的隐藏层。

AI前线:神经网络中位于输入层(即特征)和输出层(即预测)之间的合成层。一个神经网络包含一个或多个隐藏层。

输出层(Output Layer):是神经网络的最后一层,接收最后一个隐藏层的输入。通过这一层我们可以得到理想范围内的期望数目的值。如上图所示,这个神经网络中的输出层有三个神经元,分别输出为y1、y2、y3。

AI前线:这一层包含整个模型所寻求的答案。


输入形状(Input Shape):指传递给输入层的输入矩阵的形状。我们的神经网络的输入层有四个神经元,预计一个样本的四个值。如果我们一次馈送这个神经网络一个样本,那么它的理想输入形状应该是(1,4,1)。如果我们馈送一百个样本,那么输入形状将是(100,4,1)。不同的库预计有不同格式的形状。

权重(参数)(Weights(Parameters)):表示单元之间连接的强度。如果从节点1到节点2的权重幅度更大,则说明神经元1对神经元2的影响更大。权重降低了输入值的重要性。权重接近0意味着改变这个输入将不会改变输出。负权重意味着增加这个输入将会降低输出。权重决定输入对输出的影响程度。

AI前线:线性模型中的特征系数,或者深度网络中的边缘。线性模型的训练目标是为每个特征确定一个完美的权重。如果权重为0,则对应的特征对模型而言是无用的。


Neuron network

前向传播

前向传播(Forward Propagation):是指将输入值馈送到神经网络的过程,并获得一个我们称之为预测值的输出。前向传播有时亦称为推理。当我们将输入值馈送到神经网络的第一层时,不执行任何运算。第二层从第一层获取值,然后执行乘法、加法和激活运算,并将该值传递给下一层。后续的层重复同样的过程,最终,我们将在最后一层得到输出值。

Neuron network

反向转播

反向传播(Back-Propagation):我们在前向传播之后得到一个输出值,这就是预测值。为计算误差,我们将预测值与真实输出值进行比较。我们使用一个损失函数(下文将提到)来计算误差值。然后我们计算每个误差值的导数和神经网络的每个权重。反向传播应用微分学的链式法则。在链式法则中,首先计算最后一层中每个误差值的导数。我们调用这些导数、梯度,使用这些梯度值计算导数第二层的梯度,重复这一过程,直至获得梯度及神经网络中的每个权重。然后从权重值中减去这个梯度值来降低误差。这样,我们就能不断逼近局部最小值(即最小损失)。

AI前线:神经网络中完成梯度下降的重要算法。首先,在前向传播的过程中计算每个节点的输出值。然后,在反向传播的过程中计算与每个参数对应的误差的偏导数。

Neuron network

学习率(Learning rate):训练神经网络时,通常使用梯度下降优化权重。在每一次迭代中,使用反向传播计算损失函数对每一个权重的导数,并中当前权重减去导数和学习率的乘积。学习率决定了更新权重(参数)值的频率。学习率应该尽可能高,这样就不会耗费太久就可达到收敛,而且也应该尽可能低,从而找到局部最优。

AI前线:学习率是一个重要的超参数。它是通过梯度下降训练模型时使用的一个标量。每次迭代中,梯度下降算法使学习率乘以梯度,乘积叫作gradient step。


Neuron network

精度和召回率

准确率(Accuracy):指测量值对标准值或已知值的接近程度。

AI前线:可以理解为分类模型预测准确的比例。 
在多类别分类中,准确率定义如下: 
Neuron network 
在二分类中,准确率定义如下: 
Neuron network

精度(Precision):指两个测试值之间的接近程度,表示测量的可重复性或可再现性。

AI前线:分类模型的一种指标。准确率指模型预测正类时预测正确的频率。即: 
Neuron network

召回(灵敏度)(Recall(Sensitivity)):指全部相关实例中被恢复的相关实例的比率。

Ai前线注:分类模型的一个指标,即: 
Neuron network

混淆矩阵(Confusion Matrix):Wikipedia[3]解释如下:

机器学习领域和统计分类问题中,混淆矩阵(亦称误差矩阵(error matrix)),是一个算法性能的可视化表格,通常在监督学习中使用(在无监督学习中通常被称为匹配矩阵(matching matrix))。矩阵的每一行表示预测类,每一列表示一个真实类(反之亦然)。采用这个名字是因为易于解读,能很容易地看出系统对两个类别的混淆程度(即将一个类别错误标记为另一个)。

Neuron network

混淆矩阵

AI前线:总结分类模型的预测结果的表现水平(即,标签和模型分类的匹配程度)的NxN表格。混淆矩阵的一个轴列出模型预测的标签,另一个轴列出实际的标签。N表示类别的数量。


收敛(Convergence):指随着迭代的进行,输出越来越接近具体的值。

AI前线:训练过程达到的某种状态,其中训练损失和验证损失在经过了确定的迭代次数后,在每一次迭代中,改变很小或完全不变。换句话说就是,当对当前数据继续训练而无法再提升模型的表现水平的时候,就称模型已经收敛。在深度学习中,损失值下降之前,有时候经过多次迭代仍保持常量或者接近常量,会造成模型已经收敛的错觉。

正则化(Regularization):用于解决过拟合的问题。正则化过程中通过添加一个L1(LASSO)或L2(Ridge)规范到权重向量w(通过给定算法学习到的参数)上,来“惩罚”损失项:

L(损失函数)+λN(w): 
此处λ为正则项,N(w)是L1或L2规范。

L(损失函数)+λN(w)-此处λ是正则项,N(w)是L1或L2规范。

归一化(Normalisation):指将一个或多个属性的值缩放到0~1的范围的过程。当尚未知晓数据分布或者分布不是高斯分布(呈钟形曲线)时,规范化就很有用,可加快学习进程。

AI前线:假设某个特征的自然区间是800~6000。通过减法和分割,你可以把那些值标准化到区间-1到+1。参见缩放。


全连接层(Fully Connected Layers):一个层所有节点的激活函数值传递到下一层的每个节点。当第L层所有的节点都与第L+1层所有节点连接时,那么这些层就是全连接层。

Neuron network

全连接层

损失函数/成本函数(Loss Function/Cost Function):损失函数计算单个训练样本的错误,成本函数是整个训练集的损失函数的平均。

-‘mse’:均方误差(Mean Squared Error) 
-‘binary_crossentropy’:二分类对数损失(logloss) 
-‘categorical_crossentropy’:多分类对数损失(logloss)

模型优化器(ModelOptimizers):优化器是一种搜索技术,用于更新模型的权重。

-SGD:随机梯度下降,支持动量算法。 
-RMSprop:自适应学习率的优化法,Geoff Hinton提出。 
-Adam:自适应矩估计(Adam)也使用自适应学习率。


性能指标(Performance Metrics):性能指标用于衡量神经网络的性能,包括准确率、损失、验证准确性、验证损失、平均绝对误差、精度、召回率和f1分数等。

批量大小(Batch Size):一次前向/反向传播中的训练样本数。批量越大,则占用的内存量也越大。

AI前线:一个批量中样本的数量。例如,SGD的批量大小为1,而mini-batch的批量大小通常在10-1000之间。批量大小通常在训练与推理的过程中确定,然而TensorFlow不允许动态批量大小。

训练轮数(Training Epochs):指模型在训练数据集上重复训练的次数。

一个轮数就是全部训练示例的一次前向传播和一次反向传播

Neuron network的更多相关文章

  1. 提高神经网络的学习方式Improving the way neural networks learn

    When a golf player is first learning to play golf, they usually spend most of their time developing ...

  2. Unsupervised Feature Learning and Deep Learning(UFLDL) Exercise 总结

    7.27 暑假开始后,稍有时间,“搞完”金融项目,便开始跑跑 Deep Learning的程序 Hinton 在Nature上文章的代码 跑了3天 也没跑完 后来Debug 把batch 从200改到 ...

  3. 《转》循环神经网络(RNN, Recurrent Neural Networks)学习笔记:基础理论

    转自 http://blog.csdn.net/xingzhedai/article/details/53144126 更多参考:http://blog.csdn.net/mafeiyu80/arti ...

  4. matlab toolboxes 大全

    MATLAB Toolboxes top (Top) Audio - Astronomy - BiomedicalInformatics - Chemometrics  - Chaos - Chemi ...

  5. 使用神经网络识别手写数字Using neural nets to recognize handwritten digits

    The human visual system is one of the wonders of the world. Consider the following sequence of handw ...

  6. 深度学习:又一次推动AI梦想(Marr理论、语义鸿沟、视觉神经网络、神经形态学)

    几乎每一次神经网络的再流行,都会出现:推进人工智能的梦想之说. 前言: Marr视觉分层理论 Marr视觉分层理论(百度百科):理论框架主要由视觉所建立.保持.并予以解释的三级表象结构组成,这就是: ...

  7. [C6] Andrew Ng - Convolutional Neural Networks

    About this Course This course will teach you how to build convolutional neural networks and apply it ...

  8. [C2P2] Andrew Ng - Machine Learning

    ##Linear Regression with One Variable Linear regression predicts a real-valued output based on an in ...

  9. 《Machine Learning - 李宏毅》视频笔记(完结)

    https://www.youtube.com/watch?v=CXgbekl66jc&list=PLJV_el3uVTsPy9oCRY30oBPNLCo89yu49 https://www. ...

随机推荐

  1. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  2. python学习笔记-(十二)scoket编程基础

    socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Un ...

  3. numpy函数fromfunction分析

    从函数规则创建数组是非常方便的方法.在numpy中我们常用fromfunction函数来实现这个功能. 在numpy的官网有这么一个例子. >>> def f(x,y): ... r ...

  4. Storm系列之二——Guaranteeing Message Processing

    Storm保证每跳离开spout的消息都会被完全处理.本文介绍Storm是怎么保证每条消息都被完全处理并且作为用户该怎么做才能从Storm的可靠性保证受益. 1.什么叫消息被完全处理? 一个tuple ...

  5. as3判断XML是否合法

    XML是否合法 在我认为 XML的标签成对 并且根标签外边没有其他东西 以下是合法的 <?xml version="1.0" encoding="utf-8&quo ...

  6. NUnit单元测试资料汇总

    NUnit单元测试资料汇总 从安装到配置 首先到官网http://www.nunit.org/下载如下图的资料,安装NUnit-2.6.1.msi包. 然后挂在VS2010外部工具这个地方来使用,工具 ...

  7. Fish Shell

    今天看到阮一峰同学的一篇博客(Fish shell 入门教程),讲述的非常详细.清楚,有兴趣的可以直接转去查看此文,本文仅提供一下个人使用心得. 一.fish shell 想必接触过类unix(包括w ...

  8. ORACLE导入梗

    1.Oracle版数据库的安装及初始化 1.1安装oracle数据库(10g或11g) 1.2以用户system账号登陆oralcle数据库的sqlplus,执行以下语句 1.3创建表空间语句: cr ...

  9. 【poj3693】 Maximum repetition substring

    http://poj.org/problem?id=3693 (题目链接) 题意 给定一个字符串,求重复次数最多的连续重复子串,若存在多组解,输出字典序最小的. Solution 后缀数组论文题,就是 ...

  10. Python 2&period;7&period;6 安装lxml模块&lbrack;ubuntu14&period;04 LTS&rsqb;

    lxml --->首字母是字母l,不是数字1 lxml 2.x : https://pypi.python.org/pypi/lxml/2.3 1xml官网:http://lxml.de/ 一 ...