目录
► 前言
之前写了一篇“Python深度学习2:Python基础语法介绍”介绍基本语法,看完大概了解一些程式码,而接下来本篇为大家介绍一下深度学习。
► 何谓深度学习
深度学习是机器学习的分支,以人工神经网路(Artificial Neural Network,ANN)为架构,对资料进行特徵学习的演算法,模型根据非结构化、未标记的资料及已标记的资料来学习和做出决策,让CPU或MCU向人类一样,可进行複杂的运算,展现拟人的判断及行为。
► 何谓神经网路
神经网路(Neural Network,NN)是一种模仿生物神经网路的结构和功能的数学模型或计算模型,类似于充满数位神经的大脑,可以处理大量非线性资料,帮助人解决複杂的问题。
神经网路由神经元(节点)组成,区分为输入层(Input Layers)、(Hidden Layers)及输出层 (Output Layers):
输入层:接收非线性输入向量,例如眼睛、鼻子、嘴巴。
输出层:神经元链结中传输、分析、权衡,最终形成结果。
隐藏层:为输入层和输出层之间众多神经元和链结组成的各个层面,可以有一层或多层。
图片来源:Regional Mapping of the Geoid Using GNSS (GPS) Measurements and an Artificial Neural Network
► 激活函数
激活函数(Activation functions)是帮助网路学习数据中的增加非线性因素,因为线性模型表达能力不够无法准确推论结果。激活函数区分为四种,以下描述特点:
Threshold Function:模型修正能力较差,因为输出不是0就是1,没有中间值可以参考调整。
Sigmoid Function:一个在生物学中常见的S型函数,常被用作神经网路的阈值函数,将变量映射到0,1之间,但容易发生梯度消失的问题,且中心点不为0。
Tangent Function:和 sigmoid 函数的曲线相对相似,但比Sigmoid函数收敛速度更快,输出以0为中心,不过容易发生梯度消失的问题。
ReLU Function:深度学习中较爲流行的一种激活函数,快速收敛,解决梯度消失问题,但会发生神经元会死亡的问题。
► 偏移值(Bias)
不增加Bias推论出的分类线就会通过原点,无法灵活使用,因此增加Bias就可以上下左右移动分类线。当然Bias可以充当阀值调整激活难度,但是Bias对最终结果没有显著的影响,因为Bias可以看作Weight的一部分,大致算式如下图:
► 卷积神经网路
卷积神经网路(Convolutional Neural Network, CNN ),为目前深度学习领域的发展主力之一,在图片辨识上能做到堪比人类的准确度。CNN 模仿人类大脑的认知方式,判断一样图,看出物体的颜色及特徵,例如:树叶、树干和树枝...等等,这种抽象化的过程就是CNN演算法建立模型的方式。透过一块块的特徵研判,逐步堆叠综合比对结果,就可以得到较好的辨识结果。
图片来源:CS231n Convolutional Neural Networks for Visual Recognition
卷积层(Convolution layer):卷积网络的核心构建块,使用Filter遮罩进行提取特徵。
ReLu:激活函数,快速收敛,且不会造成梯度消失。
池化层(Pooling layer):取得遮罩内的最大值,以减少资料特徵维度,保留重要特徵,减少模型参数,防止过度拟合。
摊平(Flatten):衔接CNN层与全连接层,将多维输入,摊平为一维输出。
全连接层(Fully connected layer):类似分类器的功能。
►小结
透过以上讲解,因该已经对于神经网路有初步的了解,当跟朋友讨论时能够大概想像得出基本图形,本篇博客到这裡,期待下一篇博客吧!