Neuron network
关于神经网络你不能不知道的一切
作者|Kailash Ahirwar
编译|Sambodhi
编辑|Vincent
AI前线导语:理解什么是人工智能,以及机器学习和深度学习是如何影响人工智能的,这是一种荡气回肠的体验。最近,MateLabs联合创始人兼CTO Kailash Ahirwar在Mudium发布了一篇博文《关于神经网络你不能不知道的一切》[1](Everything you need to know about Neural Networks)。
本文涵盖了从神经元到训练轮数,介绍了神经网络的关键名词术语,AI前线也做了一些批注、解释,以飨读者进一步理解、掌握。
神经元(节点)(Neuron(Node)):是神经网络的基本单元,包含一定数量的输入和一个偏置值。当输入一个信号(值),它就乘以一个权重值。如果一个神经元有四个输入,那么它在训练中有四个可调节的权重值。
神经网络中一个神经元的运算
连接(Connections):用于连接两层之间或同层的两个神经元。每个连接总带有一个权重值。训练的目标是更新这个权重值来减少损失(误差)。
偏置(偏移)(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前线:即将前一层所有神经元激活值的加权和输入到一个非线性函数中,然后向下一层传递该函数的输出值(典型的非线性)。
各种激活函数
基本的神经网络设计
输入层(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,则对应的特征对模型而言是无用的。
前向传播
前向传播(Forward Propagation):是指将输入值馈送到神经网络的过程,并获得一个我们称之为预测值的输出。前向传播有时亦称为推理。当我们将输入值馈送到神经网络的第一层时,不执行任何运算。第二层从第一层获取值,然后执行乘法、加法和激活运算,并将该值传递给下一层。后续的层重复同样的过程,最终,我们将在最后一层得到输出值。
反向转播
反向传播(Back-Propagation):我们在前向传播之后得到一个输出值,这就是预测值。为计算误差,我们将预测值与真实输出值进行比较。我们使用一个损失函数(下文将提到)来计算误差值。然后我们计算每个误差值的导数和神经网络的每个权重。反向传播应用微分学的链式法则。在链式法则中,首先计算最后一层中每个误差值的导数。我们调用这些导数、梯度,使用这些梯度值计算导数第二层的梯度,重复这一过程,直至获得梯度及神经网络中的每个权重。然后从权重值中减去这个梯度值来降低误差。这样,我们就能不断逼近局部最小值(即最小损失)。
AI前线:神经网络中完成梯度下降的重要算法。首先,在前向传播的过程中计算每个节点的输出值。然后,在反向传播的过程中计算与每个参数对应的误差的偏导数。
学习率(Learning rate):训练神经网络时,通常使用梯度下降优化权重。在每一次迭代中,使用反向传播计算损失函数对每一个权重的导数,并中当前权重减去导数和学习率的乘积。学习率决定了更新权重(参数)值的频率。学习率应该尽可能高,这样就不会耗费太久就可达到收敛,而且也应该尽可能低,从而找到局部最优。
AI前线:学习率是一个重要的超参数。它是通过梯度下降训练模型时使用的一个标量。每次迭代中,梯度下降算法使学习率乘以梯度,乘积叫作gradient step。
精度和召回率
准确率(Accuracy):指测量值对标准值或已知值的接近程度。
AI前线:可以理解为分类模型预测准确的比例。
在多类别分类中,准确率定义如下:
在二分类中,准确率定义如下:
精度(Precision):指两个测试值之间的接近程度,表示测量的可重复性或可再现性。
AI前线:分类模型的一种指标。准确率指模型预测正类时预测正确的频率。即:
召回(灵敏度)(Recall(Sensitivity)):指全部相关实例中被恢复的相关实例的比率。
Ai前线注:分类模型的一个指标,即:
混淆矩阵(Confusion Matrix):Wikipedia[3]解释如下:
机器学习领域和统计分类问题中,混淆矩阵(亦称误差矩阵(error matrix)),是一个算法性能的可视化表格,通常在监督学习中使用(在无监督学习中通常被称为匹配矩阵(matching matrix))。矩阵的每一行表示预测类,每一列表示一个真实类(反之亦然)。采用这个名字是因为易于解读,能很容易地看出系统对两个类别的混淆程度(即将一个类别错误标记为另一个)。
混淆矩阵
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层所有节点连接时,那么这些层就是全连接层。
全连接层
损失函数/成本函数(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的更多相关文章
- 提高神经网络的学习方式Improving the way neural networks learn
When a golf player is first learning to play golf, they usually spend most of their time developing ...
- Unsupervised Feature Learning and Deep Learning(UFLDL) Exercise 总结
7.27 暑假开始后,稍有时间,“搞完”金融项目,便开始跑跑 Deep Learning的程序 Hinton 在Nature上文章的代码 跑了3天 也没跑完 后来Debug 把batch 从200改到 ...
- 《转》循环神经网络(RNN, Recurrent Neural Networks)学习笔记:基础理论
转自 http://blog.csdn.net/xingzhedai/article/details/53144126 更多参考:http://blog.csdn.net/mafeiyu80/arti ...
- matlab toolboxes 大全
MATLAB Toolboxes top (Top) Audio - Astronomy - BiomedicalInformatics - Chemometrics - Chaos - Chemi ...
- 使用神经网络识别手写数字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 ...
- 深度学习:又一次推动AI梦想(Marr理论、语义鸿沟、视觉神经网络、神经形态学)
几乎每一次神经网络的再流行,都会出现:推进人工智能的梦想之说. 前言: Marr视觉分层理论 Marr视觉分层理论(百度百科):理论框架主要由视觉所建立.保持.并予以解释的三级表象结构组成,这就是: ...
- [C6] Andrew Ng - Convolutional Neural Networks
About this Course This course will teach you how to build convolutional neural networks and apply it ...
- [C2P2] Andrew Ng - Machine Learning
##Linear Regression with One Variable Linear regression predicts a real-valued output based on an in ...
- 《Machine Learning - 李宏毅》视频笔记(完结)
https://www.youtube.com/watch?v=CXgbekl66jc&list=PLJV_el3uVTsPy9oCRY30oBPNLCo89yu49 https://www. ...
随机推荐
- ASP.NET Web Pages:帮助器
ylbtech-.Net-ASP.NET Web Pages:帮助器 1.返回顶部 1. ASP.NET Web Pages - 帮助器 Web 帮助器大大简化了 Web 开发和常见的编程任务. AS ...
- 【转载】 java利用snmp4j包来读取snmp协议数据(Manager端)
https://www.cnblogs.com/xdp-gacl/p/4187089.html http://doc.okbase.net/yuanfy008/archive/265663.html ...
- 在VM克隆CENTOS以后,网卡的处理过程
会发现克隆CENTOS以后,网卡eth0无法启动.处理步骤如下:1. vi /etc/sysconfig/network-scripts/ifcfg-eth0删除HWADDR地址那行删除UUID的那行 ...
- [UE4]场景光照改进PostProcessVolume
PostProcessVolume可以做的效果很多,其中就可以实现太阳光斑效果. Unbound勾上上,就表示不受“PostProcessVolume”组件的大小限制,直接应用到整个世界.如果不勾选, ...
- [UE4]移动设备贴图消失
pc版本是支持直接使用psd文件作为贴图文件,但移动设备就不支持了.
- 手贱,写个call玩玩.
今天在睡觉醒时,突然感觉对call和apply有了点理解,但是又不好表达出来.就随便写几个例子. function say() { return this.role; } function Fathe ...
- SpringJdbc之queryForXXX大全解读
一.查询单个字段 Object queryForObject(String sql, Object[] args, Class requiredType) 其中Class requiredTy ...
- 《opencv学习》 之 几何变换
图像平移: 1.不改变图像大小 2.改变图像大小 编程按照目标图像的角度去编写 不改变大小的平移 1 void imageTranslation1(Mat& src, Mat& dst ...
- 服务器对cookie信息加密
通过redis的seesion对cookie信息加密 --- 防止cookie记录的用户信息泄露 import tornado.ioloop import tornado.web from data ...
- uva-10344
题意: 枚举23点,注意,数字也是可以枚举的,wa了一次 #include<stdio.h> #include<iostream> #include<sstream> ...