通过变分自编码器提取一张图片的特征信息,再根据另一张图片的特征信息还原出来
上面每三个图中,最左边是川普的脸,而最右边则是尼古拉的脸,通过自编码器提取特征进行生成。通过这个甚至可以对视频进行以假乱真,这是个深度学习的应用,对这个项目有兴趣的可以看其相关文章。
正文首先声明,正文部分可能没有你们想象的那么多,这篇文章并不妄想将所有的机器学习和深度学习的知识概括并整理出来,没有什么意义。因为,一是机器学习涉及到的公式算法很多很多,写那么多公式对初学者并不友好,本来是入门很简单的一件事情没有必要复杂化,二是这篇文章的定位不是机器学习也不是深度学习教材,当然也不是科普文,这篇文章是以大学生的角度来谈一谈这个话题,把我的一些经验跟大家分享分享。
开始说正事,不论你之前干什么学什么,在什么专业什么领域,不用担心。有一些编程基础(C/C++),还有一些数学的基本知识(高数、线性代数、概率统计)就可以了,另外,机器学习主要使用的语言是python。python(派森),想必大家不管熟悉不熟悉总归是听说过,对,这个语言很火,很强大,很牛逼,无所不能,机器学习和python有着很紧密的联系。很多的深度学习库都是使用python语言进行编程的,所以学习这门语言也是有必要的。
机器学习首先说明机器学习和深度学习的关系:深度学习是机器学习的子集,深度学习是机器学习中的一个领域,一小块部分,想要了解深度学习,首先要了解机器学习。
通过上面这张图可以看出人工智能、机器学习和深度学习的关系,人工智能的范围很广,当然不止包括机器学习,而深度学习只是机器学习的一个比较重要的子集。刚开始看很容易搞混,虽然理论上深度学习属于机器学习的一部分,但机器学习和深度学习主要定位目标还是可以区分出来的,机器学习主要是对文本数据进行处理(表格中的数据),而深度学习则主要对图像和语音这些方面进行处理。
关于机器学习的历史,这里不多说,网上一抓一大把,自行查阅即可。也以看看机器学习西瓜书(就是上文图片中摆出的)上面对机器学习历史的介绍。
那到底什么是机器学习,本质上就是利用一些数学算法来解决实际问题。并且这些数学算法我们都学过一些。做过数学建模的同学们或多或少接触过机器学习的知识,当你使用matlab在对一个函数进行线性拟合的时候,你已经在用机器学习了。
机器学习的一般过程大致分为:
获取你需要的数据(获取数据,整理数据,数据增强)
对数据进行分析(数据预处理)
使用相应的算法,对数据进行处理(机器学习算法)
然后得出结果的过程。(输出结果)
直白点,假如我们把算法想象成一个简单的函数(这个函数就是你设计的算法): y = x + 2。x就是输入也就是数据,y就是输出也就是你要得到的结果,x + 2这个过程就是你算法的过程。
简单吧,再来个稍微复杂点的函数: 5 = w*x + 4。
这个函数不是方程吗?对,这是个方程,如果我们得到了x的值,相应地我们就可以求出w。但我们现在不以方程的角度去想他,让我们以机器学习的角度去想它。
假设,上面那个函数我们现在不能一眼看出结果。上面的函数是我们设计的一个机器学习算法,使这个算法通过输入我们给的数据x然后得到一个结果(假设我们要得到的结果是5),于是,上面这个机器学习算法(函数)是我们自己设计的,我们想要通过输入x来得到输出5。
于是我们设计了: 5 = w*x + 4。
然后怎么办呢,机器学习,就是机器进行学习的过程。在机器学习中,我们想要我们设计的这个算法能够逐渐学习如何去得到最终结果,这个过程就是通过训练来得到的。
训练肯定和实战是不一样的,一般在我们机器学习的过程中,我们数据集分为两个部分,训练集和测试集,相当于练习和实战了。当然训练这个过程是针对有监督学习的,什么是有监督学习,简单来说就是有label,有标记。比如给你一张图,上面画有一只猫,这张图对应的标记就是1,如果这张图上面是一条狗,那么这张图对应的标记是2,我们让机器学习去判断一系列上面有猫和狗的图片,在训练过程中我们给予其正确的图和相应标记。可以理解为给一个几岁小孩让它认图,给他猫的图他说1,给他狗的图他说2,如果错了让这个小孩记住狗的特征,下次可能就不会认错了。这种学习过程就是有监督,在学习过程中知道自个儿做出判断是否正确,或者说有人监督你,告诉你哪些你的判断错了。