[深度学习回顾] How Deep Would You Learn?

前言

不知不觉,铁人赛的赛程已经来进行了一半,每天发文使得生活过得非常充实。也感谢这里的许多高手发表优质文章,让第一次参赛又是跨IT领域的自己感到无比热血。大家都辛苦了,一起撑过这三十天吧!回归正题,在前十五天我们将焦点围绕在自然语言处理的基础上,从 rule-based 的前处理,到 statistical approach 的语言模型,接着使用类神经网络架构来建造 word embedding 赋予降低词汇维度编码的同时又能记录语意距离的资讯。由於比赛後半部分的规划着重在基於神经网络架构机器翻译系统的开发实务,因此在比赛进行到中点时,花一天的时间来回顾深度学习的概念以及整理在自然语言处理任务中经常被使用的深度学习网络。

深度学习 v.s. 机器学习

深度学习( deep learning )与机器学习( machine learning )同属人工智慧( artificial intelligence, AI )的范畴,机器学习的概念涵盖了深度学习。两者的差别在於传统的机器学习必须仰赖人工进行降低资料维度(例如非结构化的影像或声音讯号原始资料维度非常高)的特徵筛选,使用例如 PCA、ICA、LDA 等技术;而深度学习则是藉由一层又一层的神经网络撷取出关键资料特徵,实现特徵提取( feature extraction )自动化。

Feature engineering is the process of transforming raw data into features that better represent the underlying problem to the predictive models, resulting in improved model accuracy on unseen data.

文字来源:machinelearningmastery.com

深度类神经网络(Deep Neural Networks, DNN)

人类的大脑中互相连结的神经元,接收到输入讯号的刺激,并在刺激跨越阈值之後做出反应。类神经网络( artificial neural networks, ANN )由多层神经元( neuron )所构成,接收资料特徵的称为输入层,位於网络最末端输出向量直的称为输出层,而中间的单层或多层神经元是为隐藏层。每个神经元会接收前一层神经元传来的讯号,经过加权( weight )再加上偏置向量( bias)将各个讯号汇总起来,再经由激活函数( activation function )决定是否要做出反应,也就是将讯号继续往下一层神经元传播。一般来说,当隐层藏的层数仅有一至两层,该类神经网络被认为是浅层网络,而当隐藏层更多时,则是为深度神经网络,深度学习正是得名於之。
习惯上我们将资料的特徵记为 X ,标签则为 y 。机器学习的目标乃是找出自变数 X 与应变数 y 之间的函数 f 关系,只是这个函数关系 f 可能极其复杂,甚至无法直接以封闭形式被写出来。因此找寻函数 f 的其手法为最小化训练资料标签 ground truth label y 减去预测标签 predictive label y之间的误差( error )所定义的损失函数( loss function )。在藉由梯度递减( gradient descent )演算法求出损失函数的最小值的同时,会不断修正构成函数 f 的参数。而对於神经网络来说,模型的学习也是寻找特徵向量 X 与标签 y 的过程,在训练的过程中神经元上的weight以及bias会藉由反向传播( backpropagation )会不断被调整,直到损失函数足够小或是精确度够高。

图片来源:Prediction of wind pressure coefficients on building surfaces using Artificial Neural Networks

相较於传统的机器学习,深度学习藉由神经网提取出资料的特徵:

图片来源:towardsdatascience.com

卷积神经网络(Convoulutional Neural Networks, CNN)

静态的图像资料为一种分别由长、宽及通道数所构成的三阶张量( rank-3 tensor ),其原始资料特徵众多,藉由过滤器神经元与图像进行卷积运算( convolution ),萃取出图像特徵的同时也降低图像的维度,达到 feature extraction 。随着图像经过愈多卷积层,愈细微的特徵会被抽取出来(通常该特徵人类已经无法辨识),传入全连接层汇整起来後再经过分类器激活函数 softmax 输出属於各个类别的机率值。

CNN的一般架构:

图片来源:A Deep Similarity Metric Method Based on Incomplete Data for Traffic Anomaly Detection in IoT

CNN中一层又一层的卷积层将数字图像的特徵由粗略到细致被提取出来:

图片来源:2D Visualization of a Convolutional Neural Network

递归神经网络(Recurrent Neural Networks, RNN)

当今天要处理的资料具有次序性,例如由文字序列组成的句子、由一帧帧图像形成的影片、或是声音讯号等,无法借助CNN来提取特徵,这时具有接收序列资料的递归神经网络就展现其威力了。RNN由每个cell所串连起来,每个cell将会依照顺序记录输入特徵与输出的标签的对应关系,记忆在内部状态( hidden state ),再将内部状态的权重传递至下一个cell。
类神经网络有效率地处理次序性的资料,在自然语言处理中广泛被使用来进行建构自动翻译器、图像描述( image captioning )或是建构语言模型等任务。

图片来源:What is not where: the challenge of integrating spatial representations into deep learning architectures

传统的RNN会有梯度消失( vanishing gradient )的问题,使得反向传播无法持续学习,因此又诞生了其改良版本的长短期记忆(LSTM)与门控循环单元(GRU)等次序性类神经网络模型,被广泛用於解决自然语言处理任务。

结语

今天只针对深度学习的概念进行简介,由於时间关系并未着墨於细部的运算原理。明天我们将主题锁定在自然语言处理的翻译任务,它是运用RNN衍生模型的好实例。期待明天的到来,晚安!

阅读更多

  1. Representation: Feature Engineering
  2. Structured vs Unstructured Data: Compared and Explained
  3. What is backpropagation really doing?
  4. Vanishing and Exploding Gradients (YouTube Video)

<<:  DAY24 - [React hook] component 零组件

>>:  [day-9] 认识Python的基本资料型别!

Microsoft Azure Machine Learning - Day 1

Chap.O 基础 & 简介: Prat1. Azure Machine Learning ...

如何才能完全删除Mac app以及档案--2022〖必学〗

如何卸载 Mac 软件? 当许多用户购买新的 Macbook/iMac 时,他们会在 Mac 上下载...

Day 28:Ansible Vault

昨天写完 playbook 之後,有其中一个问题是需要手动输入 root 的密码,但若是所有机敏资料...

Day01-系列文介绍、规划

前言 Hello 大家好我是 Larry,去年休息一次後今年决定再度参战,这也是我第三次参加铁人赛了...

[Day. 28] Codeigniter 登出

昨天,我们透过session成功让使用者不用重复登入 可是有可能有人需要切换帐户之类的。 所以今天我...