从开始学习深度学习领域到现在,差不多1年了,在自己的学习过程中,遇到了许多问题,开个博记录一些自己对这些问题的一些见解。希望自己能够不断进步,对深度学习更加精通。
机器学习
深度学习是机器学习的一个子领域,想了解深度学习,首先要对机器学习的概念、方法有一定的理解。
机器学习的概念,百度百科中这样写道:机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径。
关于机器学习,有许多优秀的博主写了入门心得,包括机器学习的起源,其概念的通俗解释,工作原理和简单的实现。本人就不自己全面对其描述了,推荐这一篇博客https://blog.csdn.net/qq_28168421/article/details/81351321,其讲解十分通俗易懂。
但在我自己开始学习时,即使是看完这些讲解,依然还是一头雾水。个人感觉,自己以前看过许多有关人工智能的科幻片,在理解人工智能时,总是会想起那些电影中的智能机器人,就像人一样,只是缺少一些情感而已。久而久之,形成了一种,人工智能就是造出一个像电影中一样的机器人,让其拥有自己的思维,像人类一样思考!所以一开始,看到机器学习是人工智能的核心,觉得非常兴奋,以至于学了机器学习的相关基础知识后,我傻了,这和我想的完全不一样。下面这张图很符合我前后的心情。
网上的所有文章,都是直接告诉你机器学习是什么,忽略了讲解机器学习和人工智能的关系,没有说明目前人工智能为什么是通过机器学习实现的,没有告诉初学者,人工智能不是真的造出智能(至少目前并不是)。
在我学习了一年后,我个人理解的人工智能,并不是人工创造的新智能(虽然未来可能真的实现,但目前还无法完成此任务),而是模拟人工的智能,即通过模仿人类思维形成的智能。这两者有着本质的区别,对接下来的理解有着很大的作用。我们知道,自然界中,人类的大脑、智慧是最顶级的,但不是说只有人类拥有智力。打个比方,猩猩也有智力,也有其智能,如果你让人和猩猩同时从香蕉和钻石里选择一个带走,那么猩猩很大概率带走香蕉,人类一定会带走钻石。
在这个例子中,我们可以很好的发现人工创造的新智能和模拟人类的智能的区别,前者面对这个例子,他可能拿走钻石,也可能拿走香蕉,因为它是不同于人类的智能,所采取的行为,有其自己的认知。而如果是模拟人类的智能,一定会做出和人类一样的思考,紧接着,拿走钻石。所以,我不认可许多文章中写的,让机器自己思考问题这句话。人类不是造物主,不能造出自然界其他有智力的生物。我们只是让机器模仿人类,让其做出人类通过自己的经验总结出的行为,并没有让其真正产生其独特的智能。
理解了这之后,一切问题都更好解释了。机器学习,本质上就是一种工具,将人类思考的方式用机器实现,说白了目前十分先进的机器学习模型和最简单的计算器没任何区别。只不过,最简单的计算器,只能帮你实现加减乘除,你输入2-1,它就会给你返回1。而我们现在的机器学习模型,可以帮你识别图片,帮你识别语义等等,你输入一张猫的图片,它就给你返回“这是一只猫”。前者是人类想方设法使计算器明白2减1,会等于1,更复杂点,我们设置一个函数y=x+1,让计算机明白,输出的永远等于输入的加上1。后者则是人类想让计算机明白,尖耳朵,有胡须等等特征的物体,叫做猫。本质上,这两种问题没有任何区别,只不过后者实现比前者复杂的多。
目前,机器学习都是基于数学的,识别图片也是将图片首先转化转换为像素形式,而标签则是使用ONE-HOT化。
所以,图片识别的任务其实就是想办法,把这些像素的数据通过一系列的计算,让计算机最终得到猫的标签的数值(假设是1)。仔细想想,不就是让计算机实现很难的数学运算吗。假设我们输入一张图片,希望计算出此图的面积,我们只需要很简单的设置一个算法,即输出等于图片长X乘图片宽Y。但现在,我们的任务是让计算机识别是不是一只猫,不能简单的长乘宽,而是要通过一些复杂的运算,让输出等于1. 目前机器学习,说白了就是将输入数据通过一系列的数学计算,输出一个值罢了。目前,我们使机器像人类一样学习的方法,就是如此。不同的是,计算面积我们已经给出了具体的参数(长宽的系数都是1),而识别图片,我们需要机器训练后得出参数。
深度学习
深度学习是机器学习的子领域,网上有很多不错的介绍,本人对其概念、模型等等也就不过多解释了。我只想强调一定要理解深度学习模型的可解释性差的原因,可以让你很好的理解深度学习和机器学习的区别。这里推荐一篇文章:https://zhuanlan.zhihu.com/p/58487674
目前,我们使用深度学习完成具体任务,首先进行模型设计,模型设计根据具体问题具体设计,目前也有许多经典模型给予参考。之后训练和测试你自己的模型,其中,使用一些评价参数评价你的模型好坏。
下一篇文章,会使用Keras实现一个最简单的神经网络,来说明如何使用Keras完成一个具体任务。