Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iTeaTime(技术清谈)【-005期】【代号:赤壁】 #14

Open
ChenYilong opened this issue Jul 16, 2019 · 0 comments
Open

iTeaTime(技术清谈)【-005期】【代号:赤壁】 #14

ChenYilong opened this issue Jul 16, 2019 · 0 comments
Assignees

Comments

@ChenYilong
Copy link
Member

ChenYilong commented Jul 16, 2019

iTeaTime(技术清谈)【-005期】【代号:赤壁】





--------------------------------------------

大话人工智能:从赤壁之战到神经网络

⚠️⚠️⚠️warning:本文涉及“开车”内容,部分内容可能令你不适,更适合22岁以上具有独立思考的男性阅读。

本文也是《深度学习的数学》的读后感,后文也会介绍这本书。

这是 iTeaTime(读作:IT Time,中文名:技术清谈) 第一次涉及人工智能的话题,所以谈得比较浅,后续还有有人工智能相关的话题,会谈得深一点。

引言

如果你问女朋友“是否听过神经网络、深度学习”,她可能会说”没有“。

但是当你问她“是否听过人工智能”,她八成说听过。如果还说没有,那就拿出大杀器--”围棋人机大战“。

人工智能的一个特点便是:

人工智能一旦在某一个领域超越人类,人类将永远无法反超。

人工智能之所以能如此智能,便完全来自于7乘24小时的深度学习。深度学习灵感最初是来自于仿生学,仿的是大脑的运作规律。在人工智能中,堪比大脑的部分正是神经网络。

本文将从赤壁之战讲到神经网络,带你打开人工智能的大门,一睹深度学习的真容。

从赤壁之战到简单神经网络结构

话说,赤壁之战激战正酣,然而有趣的是:我们故事里的三位男主--魏蜀吴三国统帅却都在一个微信群中,也没人退群。似乎这个群里正在进行着某种不可告人的交易。

下图就是这个“赤壁之战微信群”的群关系。

群里还埋伏有两名战地记者,同时也是当代著名的战略家: Tom 和 Jerry ,这对欢喜冤家,他们都想挖掘赤壁里两性相关故事,但就是这样一个细分领域,他们俩儿研究的题材却“截然不同”:一个是爱情、一个是基情。

群里有12位草民,他们并不属于魏蜀吴任何一个阵营,却“唯钱是从”,他们最感兴趣的是领赏、抢红包。他们可以是魏蜀吴三家任意一家的手下。

但12人中也分为三类,他们各自打听到了魏蜀吴三国统帅其中一位的兴趣,于是默默记下并格外关注此类型佳人。

魏蜀吴三国统帅在群里,一直想悬赏寻找一个佳人晚上来临幸。要求草民们随时留意。

此时群里新来了一个神秘人,没人知道神秘人身份,随着12名手下在群里的欢迎词,还有魏蜀吴三国统帅的上线,以及三位男主各自的活跃程度,群里炸了锅。

Tom 和 Jerry 两位八卦记者,马上嗅到了新闻的味道。马上炮制10w+网文。

而本文的读者,作为吃瓜群众,你最想知道的可能就是神秘人的性别,所以从 Tom 和 Jerry 的网文中你就可以清晰地判断出。

上面出现的种种人物,可谓是“各怀鬼胎”,下图描述了每个人的兴趣点:

神秘人出现时,12位手下“盲人摸象”猜测神秘人的身份:

12位手下每个人描述的都是同一个人,说的都是“部分正确的”,但是他们的描述全都是出于自己的猜测,
同时也存有侥幸心理,他们也在赌自己描述的关键词,能命中某一位男主,以此来邀功拿到赏赐。这几个手下含糊其辞,却煞有介事的描述,非常类似“谁是卧底 (快乐大本营游戏)”的规则。

上图也描述了典型的三层神经网络的基本构成为:Layer L1是输入层,Layer L2是隐含层,Layer L3是输出层。

当我们不考虑对内部结构进行细化,我们可以称这种为简单神经网络结构。

我在这里构建的场景,左侧列出了简单神经网络结构,右侧为了能形象说明各个层级的作用,我拿赤壁之战的三个男主进行了类比。

这个类比,可能比较荒诞不经,那么我们就举一个正经的例子,比如:让神经网络判断一个在12格中手写的数字是0还是1。

这时

故事 神经网络概念对应
输入层的12个手下 与手写输入的12格一一对应,主要负责进行信息录入。
12位手下盲人摸象 指对0或1的局部特征进行匹配,一旦局部特征匹配成功就会变得兴奋。
隐藏层,三位男主静静等待12位手下各自兴奋,然后观察关系比较好的手下的表现,激发自己的兴趣。 就对应于12格特征匹配率中,看哪一个数字的特征匹配度更高,隐藏层的对应的神经单元就被激活。
输出层观察男主,写男主与美女的爱情故事,或者写男主的基情故事。 就对应于输出层的神经单元被隐藏层的某一个数字对应的神经单元激活。

注:简单神经网络结构示意图的探讨还未涉及卷积神经网络,卷积的概念后文会进行讨论。

简单神经网络结构中,输入层主要作用就是盲人摸象,隐藏层主要作用就是静静等待输入层的信息。

从赤壁之战到卷积神经网络结构

随着时代的变迁,封建制度更加完善,帝王的帮手也越来越多,他们已经不满足于守株待兔,而是组织人力主动出击。于是就有了更加细化的“卷积神经网络结构”。

而且似乎上个故事里只捕风捉影操作信息还是不太形象,为了让类比更形象,这个故事里我们就开始直接用“抓人”来代替“捕获信息”的设定。

下图描述了该结构的特点:

我们可以看到,主要是隐藏层发生了变化,由简单的一层,变为了 ”卷积操作+卷积层+池化层“的架构,
同时我在图里把输入层的作用也弱化了。

以猴哥为首的锦衣卫,凭借自己”火眼金睛“的特异功能,主动出击。主动在输入层中开启人脸扫描,马上把潜在的群友,按照”宁可错杀不可放过“的原则统统抓起来,押往东厂。

东厂会对锦衣卫押送过来的人进行精选,精选的方式有很多,比如挑选最符合帝王喜好的那一位,直接押送铜雀台。

后续流程和简单神经网络就保持一致。唯一的区别就是,Tom 和 Jerry 不再需要看各位男主的兴奋程度来推测,而是直接从铜雀台进行判断就可以了。

在这个故事中我们引出了“卷积神经网络结构”,如果说简单神经网络结构中输入层主要作用就是盲人摸象,隐藏层主要作用就是静静等待输入层的信息。

那么卷积神经网络结构中,隐藏层就要更为活跃,隐藏层成立了卷积层和池化层,并有个卷积操作用来主动出击。

故事 神经网络概念对应
锦衣卫的火眼金睛扫描 对应于卷积操作
东厂 对应于卷积层,用来存放卷积操作的结果。
铜雀台 对应于池化层,用来对卷积层的结果进行进一步提炼,提炼的方法有很多种,最常见的是最大池化。
挑选最符合帝王喜好的那一位,直接押送铜雀台 最大池化

深度学习的数学读后感

以上的故事是《深度学习的数学》这本书里我提炼出来并进一步演绎的故事。

对应的示意图:

参考: 《这本书让我摆脱了被数学支配的恐惧!》

下面也介绍也这本书。

本书介绍

本书属于计算机类图书:

  • 划分类别:科普类

  • 易读性:五星

  • 专业性:三星

  • 观点创新性:三星

  • 实体图书质量:四星

  • 综合推荐等级:四星

  • 个人推荐等级:三星半

本文是一篇“《深度学习的数学》读后感”,书籍作者毕业于数学系,对数学研究颇深,全书虽然是深度学习,却没有一行代码,读完不禁让人手痒,无处施展,于是作者独辟蹊径,给了一种使用 Excel 来“体验”的途径,不过整体体验欠佳,本来以为会使用复杂的函数,结果均为简单的加减乘除。但是也能从侧面进行理论验证,也算一种动手实践途径。作用和示意图一样,是理论文字版本的另一种演绎。如果理论你已经完全掌握,那么 Excel 的环节可能有点鸡肋。如果理论你根本读不下去,那么 Excel 的环节会很有帮助。

作者文中涉及计算机知识非常少,几乎没有深入探讨,每次提到都是浅尝辄止,只起到注解作用。所以本文会添加很多计算机相关的延伸阐述。

本文术语一览:

缩写 术语 含义
dl / DL deep learning 深度学习
DP BackPropagation 反向传播算法

深度学习概念

如果给你下面几个关键词,你会怎么造句?

  • 学习
  • 预测
  • 误差
  • 代价

我先来一个:

学习,比如学开车漂移,终极目标就是人车合一。
所谓人车合一,就是开车前的预想与实际操作的误差最小。所有的误差积累起来就是代价,比如翻车。
所谓漂移出神入化,就是零误差,无代价。

上面造句的内容,其实也引出了《深度学习的数学》这本书里的核心概念。

误差反向传播法的必要性

递推在计算机上的复杂度优势造就了误差反向传播法

学习过深度学习一定绕不开 BP(反向传播法)的概念,那么为什么是?

选择反向传播而非前向传播,用一句话来总结原因:

计算机擅长递推关系式。(见2-2节)

我们说一个算法“性能”优越,大部分场景讲的是时间复杂度。说计算机擅长递推关系式,是因为通常这个算法时间复杂度更低。

参考 “求斐波那契数列之和” 这个问题,实现方法中,可以分为for in 循环累加和递推关系式等几种方式。
使用递推关系式进行计算的时间复杂度明显优于其他方式,是比较典型的用空间换取时间的策略。

正是递推在计算机上的复杂度优势,造就了误差反向传播法。

激活函数

Q:激活函数不就是一个函数吗?激活一词怎么理解?

A:因为该函数的作用就是用他的取值来决定是否能激活神经元。

内积外积

外积 wedge product 音译
内积 comer/scalar product

神经单元误差

神经单元误差是误差反向传播法的基础。

实际的含义为:

回归分析平方误差与加权输入的关系。

那么问题来了。

误差反向传播法的特点就是将繁杂的导数计算替换为数列的递推。

Q:为什么用导数来表示神经单元误差?导数与误差是什么关系?

A: 导数能表示曲线的斜率,而误差的最小值就是斜率为0时。所以用导数来表示误差,可以方便表示:
当值越大,那么误差就越大。当导数为零时,误差也为零。


One more thing...

【非礼勿视】以下为彩蛋部分,建议28岁以上男性观看


enter image description here

//one more thing

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant