程序员的AI书:从代码开始 - (EPUB全文下载)
文件大小:0.19 mb。
文件格式:epub 格式。
书籍内容:
程序员的AI书:从代码开始
第1章 机器学习的Hello World
第2章 手工实现神经网络
第3章 上手Keras
第4章 预测与分类:简单的机器学习应用
下篇
第5章 推荐系统基础
第6章 项目实战:聊天机器人
第7章 图像分类实战
第8章 目标识别
第9章 模型部署与服务
第1章 机器学习的Hello World
机器学习作为近年来的热点技术,不但是汇集传统统计学、数据挖掘、并行计算、大数据等多个领域的交叉学科,也对传统的编程开发方式形成了一定冲击,整个开发的模式、过程及思考角度与传统的代码实现有相当大的差别。从某个角度来说,很多软件工程师在接触机器学习时,所面临的最大困难并不是对其概念和原理无法理解,而是难以转换自己的编程思维方式,从传统的面向具体逻辑流程的实现,变为面向数据和结果拟合的实现。因此,我们在这里改变传统的机器学习入门方式,先从机器学习代码的开发和使用入手,让读者对如何用机器学习的方式解决问题有直观的了解。
本章作为入门级的内容,内容精简。读者应备好电脑,尝试运行自己的第1个机器学习程序。
1.1 机器学习简介
机器学习主要有三大类别:监督学习(Supervised Learning)、无监督学习(Unsupervised Learning)、增强学习(Reinforcement Learning),下面对这三大类别进行简要介绍。
1.监督学习
监督学习是机器学习中应用最广泛也最可靠的技术。简单来说,监督学习的目的就是通过标注好的数据进行模型训练,从而期望利用训练好的模型对新的数据进行预测或分类。在这里,“监督”(Supervised)这个词意味着我们已经有标注好的已知数据集。
监督学习的应用场景非常广泛,常见的垃圾邮件过滤、房价预测、图片分类等都是适合它的领域,但其最大弱点就是需要大量标注数据,前期投入成本极高。
2.无监督学习
相对于需要大量标注数据的监督学习,无监督学习无须标注数据就能达到某个目标。注意,并不是所有场景都适合采用无监督学习,无监督学习经常被用于以下两方面。
◎ 聚类(Clustering):在聚类场景下使用无监督学习的频率可能是最高的。例如给出一堆图片,把相似的图片划分在一起。我们既可以预设一个类别总数进行自动划分(即半监督学习,Semi-supervised);也可以预设一个差异阈值,然后对所有图片进行自动聚类。
◎ 降维(Dimensionality Reduction):在数据特征过多、维度过高时,我们通常需要把高维数据降到合理的低维空间处理,并期望保留最重要的特征数据。主成分分析(Principal Component Analysis,PCA)就是其中最为常见的算法应用。
3.增强学习
无论是监督学习还是无监督学习,其训练基础都来源于数据本身。而增强学习最大的特点就是需要与环境有某种互动关系,这也促使人们在增强学习的研究中利用类似电子游戏的环境来模拟互动并进行AI训练。例如,DeepMind在2015年提出的利用DQN学习ATARI游戏的操作,以及OpenAI的Gym等。
增强学习的实现和应用场景比较特殊,尽管某些大型公司已经在推荐系统、动态定价等场景中尝试应用增强学习,但仍只限于实验性质,有兴趣的读者可以自行阅读其他资料进行学习,在本书中不对增强学习进行讲解。
1.2 机器学习应用的核心开发流程
我们经常听到机器学习的研究人员开口“特征”,闭口“模型”,也听过他们调侃自己是“调参”师,然而,他们口中的这些术语到底指什么呢?若想了解这些术语,就先要清楚机器学习应用开发的核心流程。
图1-1把机器学习应用的核心开发流程划分为4个阶段,实际上,基本上所有机器学习项目的开发流程都是按照这4个阶段来划分和实施的。
图1-1 机器学习的基本流程
下面对图1-1所示的4个阶段进行解释。
1.数据预处理(Preprocessing)
机器学习的第1阶段就是处理原始数据。从图1-1可以看出,我们需要处理带有标签的原始数据,形成用于模型训练的训练数据集和用于验证模型效果的测试数据集,包含如下两项核心工作。
(1)特征提取。我们要处理的原始数据往往是以多种形式存在的,可以是来自MySQL 数据库的不同字段,也可以是原始的文本文件或图像、视频、音频等多媒体文件。然而,绝大部分机器学习算法的输入通常是某种浮点数矩阵形式或者向量形式的。把这些多样化的原始数据转化为符合算法数据的数据格式,是工作的第1步,我们通常可以把这一步称为“特征提取”。而从原始数据中挑选出来进行转换,并最终用于机器学习的数值就被称为“特征值”。例如,我们要识别花的种类,从花的图片中将花瓣颜色、花瓣形状、花瓣长度、花瓣宽度、叶片长度、叶片形状等属性数值化,这些数值就被定义为花的“特征”。注意,我们在这里是通过经验去选取我们觉得重要且有用的特征值的,因为在现实场景下可能会有成百上千种数据类型(例如一个业务中所有数据表的字段)备选,我们不太可能将它们全部用于机器学习,必须有所取舍,这就是特征工程的目的。然而,依赖经验选择并不是100%可靠的。在实际工作中,我们需要和业务专家一起不断讨论和尝试验证,直到确认我们选取的特征值的确能达到业务要求。
(2)数据清洗。有时,我们哪怕是把数据转化为符合算法输入的形式,也会出现很多问题,例如,需要输入的某些特征可能不存在、不同特征的数值区间差别太大、某些特征可能是文字形式等,这时我们需要根据情况处理这些不规范的特征值。例如,将不存在的特征设为0或取平均值,对文字形式的特征进行编码,或者对数值区间较大的特征进行归一化(Normalization)等。数据清洗的目的是让算法训练所用的数据集尽量理想化,不包含不必要的干扰数值,从而提高模型训练的精度。
在数据集处理完成后,我们通常需要把数据集划分为训练数据集和测试数据集,这样的划分通常是随机的,随机挑选 80%的数据用于训练,将剩下的 20%用于测试验证。数据集其实在不同的机器学习框架中均有对应的API进行快速划分,这里不做详述。
2. ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » 程序员的AI书:从代码开始 - (EPUB全文下载)