《计算思维与算法入门》 —2.3 矩阵与深度学习

举报
华章计算机 发表于 2019/12/09 17:27:30 2019/12/09
【摘要】 本节书摘来自华章计算机《计算思维与算法入门》一书中第2章,第2.3.1节,作者是赵军 等。

2.3    矩阵与深度学习

从数学的角度来看,对于m × n矩阵(Matrix)的形式,可以用计算机中的  A(m, n) 二维数组来描述,因此许多矩阵的相关运算与应用都是使用计算机中的数组结构来解决的。如图2-12所示的矩阵A,我们是否可以立即想到就是一个声明为A(1:3, 1:3) 的二维数组?

 image.png

图2-12  用矩阵的方式来描述二维数组

在三维图形学中也经常使用矩阵,因为矩阵可以清楚地表示模型数据的投影、扩大、缩小、平移、偏斜与旋转等运算,如图2-13所示。

 image.png

图2-13  矩阵平移是物体在三维世界向着某一个向量的方向移动

提  示

在三维空间中,向量用(a, b, c)来表示,其中a、b、c分别表示向量在x、y、z轴的分量。在图2-14中的向量A是一个从原点出发指向三维空间中的一个点(a, b, c),也就是说,向量同时包含大小及方向两种特性。所谓单位向量(Unit Vector),指的是向量长度为1的向量。通常在向量计算时,为了降低计算上的复杂度,会以单位向量进行运算,所以使用向量表示法就可以指明某变量的大小与方向。

 image.png

图2-14  向量A在三维空间中表示的大小与方向

深度学习(Deep Learning,DL)是目前最热门的话题之一,它是人工智能的一个分支,也可以看成是具有层次性的机器学习法(Machine Learning,ML),将人工智能推向类似人类学习模式的更深层次。在深度学习中,线性代数是一个强大的数学工具,常常需要使用大量矩阵运算来提高深度学习的效率。

 

提  示

机器学习是大数据与人工智能发展相当重要的一环,机器通过算法来分析数据,在大数据中找到规则。机器学习是大数据发展的下一个阶段,可以发掘出多种数据变动因素之间的关联性,充分利用大数据和算法来训练机器,其应用范围相当广泛,从健康监控、自动驾驶、机台自动控制、医疗成像诊断工具、工厂控制系统、检测用机器人到网络营销领域。

拥有超多核心的GPU(Graphics Processing Unit,图形处理器)问世之后,这种含有数千个微型且更高效率的运算单元的GPU就被用于并行计算(Parallel Computing),因而大幅地提高了计算机的运算性能。加上GPU内部本来就是以向量和矩阵运算为基础的,大量的矩阵运算可以分配给为数众多的内核同步进行处理,使得人工智能领域正式进入实用阶段,进而成为未来各个学科不可或缺的技术之一。

提  示

人工智能的概念最早是由美国科学家John McCarthy于1955年提出的,目标是使计算机具有类似人类学习解决复杂问题与进行思考等能力,凡是模拟人类的听、说、读、写、看、动作等的计算机技术,都被归类为人工智能的可能范围。简单地说,人工智能就是由计算机仿真或执行的具有类似人类智慧或思考的行为,例如推理、规划、问题解决及学习等能力。

深度学习源自于类神经网络(Artificial Neural Network)模型,并且结合了神经网络架构与大量的运算资源,目的在于让机器建立模拟人脑进行学习的神经网络,以解读大数据中图像、声音和文字等多种数据或信息。最为人津津乐道的深度学习应用当属Google Deepmind开发的人工智能围棋程序AlphaGo,它接连打败欧洲和韩国的围棋棋王。AlphaGo设计的核心思路是输入大量的棋谱数据,让AlphaGo通过深度学习掌握更抽象的概念来学习下围棋的方法,后来它创下了连胜60局的佳绩,并且还在不断反复跟自己的对弈中持续调整神经网络,即提高自己的棋艺。AlphaGo官方网站的首页如图2-15所示。

 image.png

图2-15  AlphaGo官方网站的首页

提  示

类神经网络是模仿生物神经网络的运行模式,取材于人类大脑的结构,基础研究的方向是:使用大量简单且相连的人工神经元来模拟生物神经细胞受到特定程度的刺激而反应刺激。通过神经网络模型建立出系统模型,便可用于推理、预测、评估、决策、诊断的相关应用。要使得类神经网络能正确地运行,必须通过训练的方式让类神经网络反复学习,经过一段时间学习获得经验值,才能有效学习到初步运行的模式。由于神经网络将权重存储在矩阵中,矩阵多半是多维模式,要考虑各种参数的组合,因此会牵涉到“矩阵”的大量运算。

类神经网络的原理也可以应用到计算机游戏中,如图2-16所示。

  image.png

图2-16  类神经网络的原理也可以应用到计算机游戏中

2.3.1  稀疏矩阵

对于抽象数据类型而言,我们希望阐述的是在计算机应用中具备某种意义的特殊概念,例如稀疏矩阵(Sparse Matrix)就是一个很好的例子。什么是稀疏矩阵呢?简单地说,如果一个矩阵中的大部分元素为零,就被称为稀疏矩阵。图2-17所示的矩阵就是一种典型的稀疏矩阵。

 image.png

图2-17  稀疏矩阵

对于稀疏矩阵而言,实际存储的数据项很少,如果在计算机中使用传统的二维数组方式来存储稀疏矩阵,就会十分浪费计算机的内存空间。特别是当矩阵很大时,例如存储一个1000 × 1000的稀疏矩阵,因为大部分元素都是零,所以这样的空间利用率确实不高。提高内存空间利用率的方法是使用三项式(3-Tuple)的数据结构。

我们把每一个非零项以(i, j, item-value)来表示,就是假如一个稀疏矩阵有n个非零项,那么可以使用一个A(0:n, 1:3) 的二维数组来存储这些非零项,我们把这样存储的矩阵叫压缩矩阵。

其中,A(0, 1) 存储这个稀疏矩阵的行数,A(0, 2) 存储这个稀疏矩阵的列数,A(0, 3) 存储此稀疏矩阵非零项的总数。另外,每一个非零项以 (i, j, item-value) 来表示。其中,i为这个矩阵非零项所在的行数,j为这个矩阵非零项所在的列数,item-value为这个矩阵非零的值。以图2-17所示的6 × 6稀疏矩阵为例,可以用图2-18所示的方式来表示。

 image.png

图2-18  三项式表示稀疏矩阵的方式

A(0, 1)表示此矩阵的行数,A(0, 2)表示此矩阵的列数,A(0, 3)表示此矩阵非零项的总数。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。