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. ...
随机推荐
- 小甲鱼-002用python设计第一个游戏
第一个游戏 示例1: #/usr/bin/env python3 # -*-coding:utf-8 -*- print("-----我是自恋狂-----") temp = inp ...
- [UE4]产生开枪特效
- jquery拖动分页
scrollpagination.js /* ** Anderson Ferminiano ** contato@andersonferminiano.com -- feel free to cont ...
- numpy的flat、flatten、ravel
import numpy as np dt = np.arange(10).reshape(5,2) # =============================================== ...
- 关于javascript的cookie的封装
/******************cookie*********************/ /* cookie的组成部分: 名称:唯一值,不区分大小写,必须经过URL编码 值:必须经过URL编码 ...
- 6.15-初识JSP、javaweb
一.javaweb web服务器 tomcat C/S 客户端/服务器 B/S 浏览器/服务器 URL: http协议 https 加密的协议 localhost 127.0.0.1 常用web服务器 ...
- ffmpeg 播放音频
播放音频,设置好SDL_AudioSpec播放参数,然后由SDL回调函数进行解码和数据的拷贝,解码播放音频无需设置延迟,因为声卡播放音频是阻塞的 int audio_decode_frame(AVCo ...
- css3选择符
常用的选择符 1.元素选择符 2.id选择符 3.class选择符 4.通配符 5.群组选择符 6.包含选择符 7.伪类选择符(伪类选择符CSS中已经定义好的选择器,不能随便取名) 8.伪对象选择符( ...
- Python之模块(二)
1.subprocess模块 2.loggin模块 很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日 ...
- CUDA C Programming Guide 在线教程学习笔记 Part 4
▶ 图形互操作性,OpenGL 与 Direct3D 相关.(没学过,等待填坑) ▶ 版本号与计算能力 ● 计算能力(Compute Capability)表征了硬件规格,CUDA版本号表征了驱动接口 ...


