分享

暑期追剧学AI (三) | 10分钟搞定机器学习数学思维:向量和它的朋友们

 yazhongwang 2017-08-06

后台回复“字幕组”加入我们!


人工智能中的数学概念一网打尽!欢迎来到YouTube网红小哥Siraj的系列栏目“The Math of Intelligence”,本视频是该系列的第三集,讲解与向量、矩阵等相关的概念,及在机器学习中的运作机理。后续系列视频大数据文摘字幕组会持续跟进,陆续汉化推出喔!

  • 全部课表详见:

https://github.com/llSourcell/The_Math_of_Intelligence


  • 本集代码挑战:

https://github.com/llSourcell/Vectors_Linear_Algebra/tree/master


期视频时长11分钟,来不及看视频的小伙伴,可以先拉到视频下方看文字部分。



嗨大家好!我是Siraj!


今天我们来处理向量问题。在机器学习中你会经常看到这个词,这也是我们需要理解的最重要概念之一。


常用向量相关概念

机器学习很大一部分是在寻求一种合适的方法,将数据集以编程的形式表现出来。


假设你是特斯拉的一位经理,你拿到了一些测量数据,这些数据来自于上周生产的所有车辆。每种车有三项测量数据,这些数据表示其长宽高,因此每一辆给定的汽车在三维坐标系中都可以表示成一个点。三维坐标系中每一个维度的数值,都与我们测量到的特征值一一对应。


同理,这也适用于具有300个特征值的数据点,300维空间内,尽管这不像三维尺度那样容易理解,不过机器可以很好地处理这一多维问题。


我们可以把如图所示的这个数据点x看成一个向量,一个向量就是一个一维数组,你可以把它看成一列数值或者表中的一行数值,n个元素的向量就是n维向量。其中每个元素都是一维,因此对于一个4维数据,我们用一个1*4数组就能表示出其四个特征值,并且因为它表示的是一组特征,我们称之为特征向量。


比向量大一点的范畴是矩阵,矩阵是由数字组成的矩形数组,向量则是矩阵中的一行或者一列,因此矩阵中的每一行都可以代表一个不同的数据点,相应的每一列数值则是该数据点的各个特征值。


比向量小一点的范畴则是标量,只有一个单一数字。



这几个概念也都可以统一称之为张量。张量是多维数组,一阶张量就是向量,二阶张量就是矩阵,三阶以及更高阶张量则叫做高阶张量。你可以把一个包括朋友,朋友的朋友,朋友的朋友的朋友的社会关系谱用一个高阶向量来表示。


张量的迁移运用

基于此谷歌建立了一个库叫做TensorFlow。你可以利用它创建一个计算图谱。


首先通过数据得到张量,再利用张量通过一系列数学运算去优化一个目标。同时他们还制造了一种全新的芯片,叫做TPU 即张量处理单元。随着计算能力和数据量的增加,我们也越来越有能力处理多维数据。



向量通常可以以多种方式表示,它们被广泛应用于科学的各个领域,尤其是物理学领域,向量通常被用作记录工具来跟踪记录两个不同的信息。


向量通常是表示物理量的大小和方向。例如,在爱因斯坦的广义相对论中,时空曲率引起重力就被表示为Riemann曲率张量。该张量是一个四阶张量,好家伙,因此我们不仅可以用这种方法来表示实际问题;还可以表示优化问题中的梯度,在一阶优化法中,我们的模型的权重随着每次通过训练样本集逐步更新,给定一个误差函数,如方差之和,通过在误差梯度相反方向操作,我们可以计算出权重变化的大小和方向。


这一切都是运用线性代数得到,代数基本就是在说关系,是对未知数之间的关系的探索。线性代数基本意味着线性关系,它是对矢量空间的信息的规整。而矢量空间使得同时控制不同组的数据变得容易,它对类似以矢量和矩阵控制数据的结构进行了定义,并引入了加、减、乘、除的新规则。


给定两个阵列,使之相乘的代数方式如上所示,而线性代数使之相乘则是这样——我们进行点积计算,而非像这样使每个数字相乘。


这个例子中,线性代数的方法,较之要快上三倍。任何的数据都能以适量方式显示,图像、影音、股票指数、文字、声音信号,还有dougie舞(某种嘻哈舞)……无论何种数据,都能被分解为一系列的数字。


这模型貌似不接收数据输入,不停地在报错。貌似得使之矢量化。这个模型里,输入值是一定大小的张量,所以我们基本得重组输入数据,这样它才在正确的矢量空间里。这样,我们就能计算数据点和矢量坐标之间的余弦值之类的。


机器学习中的矢量化

有没有Python程序库可以实现这个?你一定会爱上NumPy的!矢量化实质就是一个矩阵操作,我一行代码就能搞定。


一个叫McCullough的研究者,弄了个叫神经网络的机器学习模型,来把词语打成矢量数据,也即WORD2VEC。给些语料库里的文本,比如成千上万的新闻稿,它就能预测给定词语的下一个词语。所以给定的词语被编码成了矢量数据,模型再试图预测下一个词语,如果预测词与实际词语不同,那么就调整词语的矢量值。


所有语料库里的字词,都像一个老师那样,返回错误信号,从而调教矢量值,根据语境测算出的矢量值接近的词。因调整矢量数据的数量迭代反复地靠在一起,模型因而学习了成千上万个矢量词语,给它一个新词语,模型就能找到这个词语相关的矢量词汇,这又叫做嵌埋词汇。



矢量也不仅仅只展现数据,它们也帮助展示我们的模型。很多机器学习模型都以矢量来展示自己的学习过程,所有类型的神经网都是如此,给定一些数据,他就能学习这些数据中的密集式表示,这些表示式实质上是种类的划分,类似于你有一系列不同颜色的眼睛彩图。模型就要学习所有眼睛颜色的,大致表示法,这样,给出一个未贴标签(表示是眼睛)的眼睛图片,它也能认出,这是眼睛。


一旦数据矢量化,我们可以做很多事情了。一个经过训练的”单词对向量”模型可以将“单词“转化成“向量”,然后我们可以对这些向量,进行数学计算。我们可以看出单词之间有多密切的关系。通过计算单词向量之间的距离,例如 “瑞典“这个词,其他富裕的北欧国家密切相关。因为它们之间的距离很小,当在图上绘制时,相似的单词,他们的向量,倾向于聚集在一起。比如动物的类型,单词之间的关联关系也可以构造出来,比如,罗马对于意大利的关系,和北京对中国的关系是一样的。


计算“酒店“加上”汽车旅馆“ 可以得出假日酒店,令人难以置信的是,将单词矢量化,可以让我们用数字的形式捕捉单词的语义。


矢量化需要注意的问题

我们计算向量之间距离的方法,是利用向量范数的概念,范数是任何一种函数G,它将向量映射到实数,且满足以下条件

  • 长度总是正值;

  • 零的长度得出零;

  • 标量乘法;

  • 用可预测的方式扩展长度;

  • 并且距离可以合理相加;


因此 在一个基本向量空间中,向量的范数是它的绝对值和两个数字之间的距离;通常,向量的长度,用欧几里德范数来计算。


但这并不是定义长度的唯一方法,还有其他的,你会看到术语和L2范数,广泛地在机器学习中被使用,L2范数是欧氏范数、L1范数又称曼哈顿距离。我们可以用其中任意一个向量来归一化它的单位向量,然后用它来计算距离、计算向量之间的距离。对于显示给用户推荐是非常有用的,这两个术语也正在被使用在规范化的过程中。



我们训练模型以适应一组训练数据,但有时该模型能适应训练数据,导致它没有很好的预测性能。它不能很好地推广到新的数据点。


为了防止这种问题,我们必须规范我们的模型,找到最佳模型的常用方法就是定义一个损失函数,它可以描述模型和数据的拟合程度。概括起来,特征向量是用数学的方法,来表示数据的数字,或符号特征。它们可以在多维向量空间中表示出来,从而我们可以对它们进行计算,比如计算它们的距离并把它们相加,方法是,通过计算向量的向量范数,向量范数描述了向量的大小,防止过度拟合也很有用。


比赛时间

我们这周的行家奖归属是Vishnu Kumar。他实施了梯度下降法,和牛顿模型从而得到一个新模型,用于预测骑自行车一定距离所消耗的卡路里。图形很棒,代码也是非常靠谱,大家可以看看,棒棒哒!


最后一分钟得出的亚军是Hamad Shaikh。非常热爱你如此细致的笔记本!


本周的挑战是——线性回归模型上实现L1和L2正则化。详情戳下方链接:


https://github.com/llSourcell/Vectors_Linear_Algebra/tree/master


赢家将在1周后宣布!



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多