在如今数字化时代的浪潮下,机器学习已经成为人工智能领域的璀璨明星。它像一面魔镜,赋予计算机系统学习和改进的能力,让机器能够从海量数据中提取规律、预测未来,甚至做出智能决策。本 专栏 将带您踏上机器学习的奇妙之旅,探索其原理、方法和应用。我们将揭开机器学习背后的神秘面纱,解释监督学习、无监督学习、强化学习等不同类型的机器学习算法。
目录
初识人工智能
机器学习概述
机器学习算法分类
模型评估
深度学习概述
Jupyter Notebook使用
人工智能概述:人工智能发展必备的三要素是:数据、算法、计算力,数据和算法大家可以理解是什么意思,但是计算力是什么呢?计算力与我们电脑的显卡有关,如:CPU、GPU、TPU:
我们个人常用的CPU主要适合I\O密集型任务,以下是适合GPU运行的程序:
1)计算密集型的程序:其大部分运行时间花在了寄存器运算上,寄存器的速度和处理器的速度相当,从寄存器读写数据几乎没有延时。可以做一下对比,读内存的延迟大概是几百个时钟周期;读硬盘的速度就不说了,即便是SSD,也实在是太慢了。
2)易于并行的程序:GPU其实是一种SIMD(Single Instruction Multiple Data)架构,他有成百上千个核,每一个核在同一时间最好能做同样的事情。
以下是人工智能、机器学习与深度学习三者之间的关系(机器学习是人工智能的一个实现途径而深度学习是机器学习的一个方法发展而来):
深度学习作为机器学习的一个分支,更是引起了广泛的关注和热议。它基于多层次神经网络的模型,通过层层非线性变换,实现对数据的高效建模和特征提取。深度学习在计算机视觉、自然语言处理、语音识别等领域的取得的突破,让人们对于机器学习的潜力有了更加深刻的认识。
人工智能的发展阶段:人工智能充满未知的探索道路曲折起伏。如何描述人工智能自1956年以来60余年的发展历程,学术界可谓仁者见仁、智者见智。我们将人工智能的发展历程划分为以下6个阶段:
人工智能主要分支:通讯、感知与行动是现代人工智能的三个关键能力,在这里我们将根据这些能力/应用对这三个技术领域进行介绍:
计算机视觉(CV):
指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。物体检测和人脸识别是其比较成功的研究领域。
当前阶段:
计算机视觉现已有很多应用,这表明了这类技术的成就,也让我们将其归入到应用阶段。随着深度学习的发展,机器甚至能在特定的案例中实现超越人类的表现。但是,这项技术离社会影响阶段还有一定距离,那要等到机器能在所有场景中都达到人类的同等水平才行(感知其环境的所有相关方面)。
计算机视觉的发展历史如下,总体处于一个不错的态势:
其应用场景如下图所示:
语音识别:
指识别语音(说出的语言)并将其转换成对应文本的技术。相反的任务(文本转语音/TTS)也是这一领域内一个类似的研究主题。
当前阶段:
语音识别已经处于应用阶段很长时间了。最近几年,随着大数据和深度学习技术的发展,语音识别进展颇丰,现在已经非常接近社会影响阶段了。但语音识别领域目前仍面临着声纹识别和“鸡尾酒会效应”等一些特殊情况的难题。现代语音识别系统严重依赖于云,在离线时可能就无法取得理想的工作效果。
语音识别的发展历史如下,总体也是处于一个不错的态势:
文本挖掘/分类:
指文本分类,该技术可用于理解、组织和分类结构化或非结构化文本文档。其涵盖的主要任务有句法分析、情绪分析和垃圾信息检测。
当前阶段:
我们将这项技术归类到应用阶段,因为现在有很多应用都已经集成了基于文本挖掘的情绪分析或垃圾信息检测技术。文本挖掘技术也在智能投顾的开发中有所应用,并且提升了用户体验。当然文本挖掘和分类领域的一个瓶颈出现在歧义和有偏差的数据上。
文本挖掘/分类的发展历史如下:
机器翻译(MT):
是利用机器的力量自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)。
当前阶段:
机器翻译是一个见证了大量发展历程的应用领域。该领域最近由于神经机器翻译而取得了非常显著的进展,但仍然没有全面达到专业译者的水平;但是,我们相信在大数据、云计算和深度学习技术的帮助下,机器翻译很快就将进入社会影响阶段。在某些情况下,俚语和行话等内容的翻译会比较困难(受限词表问题)。专业领域的机器翻译(比如医疗领域)表现通常不好。
机器翻译的发展历史如下:
机器人(Robotics):
机器人学研究的是机器人的设计、制造、运作和应用,以及控制它们的计算机系统、传感反馈和信息处理。机器人可以分成两大类:固定机器人和移动机器人。固定机器人通常被用于工业生产(比如用于装配线)。常见的移动机器人应用有货运机器人、空中机器人和自动载具。机器人需要不同部件和系统的协作才能实现最优的作业。其中在硬件上包含传感器、反应器和控制器;另外还有能够实现感知能力的软件,比如定位、地图测绘和目标识别。
当前阶段:
自上世纪「Robot」一词诞生以来,人们已经为工业制造业设计了很多机器人。工业机器人是增长最快的应用领域,它们在20世纪80年代将这一领域带入了应用阶段。在安川电机、Fanuc、ABB、库卡等公司的努力下,我们认为进入21世纪之后,机器人领域就已经进入了社会影响阶段,此时各种工业机器人已经主宰了装配生产线。此外,软体机器人在很多领域也有广泛的应用,比如在医疗行业协助手术或在金融行业自动执行承销过程。但是,法律法规和「机器人威胁论」可能会妨碍机器人领域的发展。还有设计和制造机器人需要相对较高的投资。
机器人的发展历史如下:
总的来说,人工智能领域的研究前沿正逐渐从搜索、知识和推理领域转向机器学习、深度学习、计算机视觉和机器人领域。大多数早期技术至少已经处于应用阶段了,而且其中一些已经显现出了社会影响力。一些新开发的技术可能仍处于工程甚至研究阶段,但是我们可以看到不同阶段之间转移的速度变得越来越快。
机器学习是一门令人着迷的学科,它通过模仿人类的学习过程,赋予计算机自主学习的能力。与传统的编程方式不同,机器学习允许计算机通过大量的数据进行训练,从而自动发现其中的模式和规律。这种自主学习的能力使得机器能够应对复杂、高维度的问题,解决传统方法难以解决的挑战。
机器学习是从数据中自动分析获得模型,并利用模型对未知数据进行预测:
机器学习的工作流程大致如下:
总结流程就是(结果达到要求上线服务,结果没有达到要求重复下面流程):
1)获取数据 ——> 2)数据基本处理 ——> 3)特征工程 ——> 4)机器学习(模型训练) ——> 5)模型评估
接下来对流程中的五个步骤概念进行一个简单的讲解:
获取数据(数据集分析):下面我们就下面这张图片进行数据的分析,以及解释一下相关名词:
数据简介:
在数据集当中一般:一行数据我们称为一个样本;一列数据我们称为一个特征。有些数据有目标值(标签值),有些数据没有目标值。
数据类型构成:
数据类型一:征值+目标值(目标值是连续的和离散的)
数据类型二:只有特征值,没有目标值
数据分割:
机器学习一般的数据集会划分为两个部分:
训练数据:用于训练,构建模型;测试数据:在模型检验时使用,用于评估模型是否有效。
划分比例:训练集:70% 80% 75%;测试集:30% 20% 25%
数据基本处理:即对数据进行缺失值、去除异常值等处理。
特征工程:特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。其意义会直接影响机器学习的效果。特征工程包含如下内容:
特征提取:任意数据(如文本或图像)转换为可用于机器学习的数字特征。
特征预处理:通过一些转换函数将特征数据转换成更加适合算法模型的特征数据过程。
特征降维:在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关"主变量的过程。
机器学习:选择合适的算法对模型进行训练。
模型评估:对训练好的模型进行评估。
根据数据集组成不同,可以把机器学习算法分为以下几种情况:
监督学习:输入数据是由输入特征值和目标值所组成。函数的输出可以是一个连续的值(称为回归)或是输出是有限个离散值(称作分类)。
回归问题,例如:预测房价,根据样本集拟合出一条连续曲线。
分类问题,例如:根据肿瘤特征判断良性还是恶性,得到的结果是”良性“或者”恶性“,是离散的。
无监督学习:输入数据是由输入特征值组成,没有目标值。输入数据没有被标记,也没有确定的结果。样本数据类别未知;需要根据样本间的相似性对样本集进行类别划分。
关于有监督和无监督学习之间的区别主要有以下情况:
半监督学习:训练集同时包含有标记样本数据和未标记样本数据。
监督学习的训练方式:
半监督学习的训练方式:
强化学习:实质是makedecisions问题,即自动进行决策,并且可以做连续决策。强化学习的目标就是获得最多的累计奖励。
例如:小孩想要走路,但在这之前,他需要先站起来,站起来之后还要保持平衡,接下来还要先迈出一条腿,是左腿还是右腿,迈出一步后还要迈出下一步。
小孩就是agent,他试图通过采取行动(即行走)来操纵环境(行走的表面),并且从一个状态转变到另一个状态(即他走的每一步),当他完成任务的子任务(即走了几步)时,孩子得到奖励(给巧克力吃),并且当他不能走路时,就不会给巧克力。主要包含五个元素:
agent、action、reward、environment、observation
监督学习和强化学习两者之间的对比如下:
描述 | 监督学习 | 强化学习 |
---|---|---|
反馈映射 | 输入的是之间的关系,可以告诉算法什么样的输入对应着什么样的输出。 | 输出的是给机器的反馈 reward function,即用来判断这个行为是好是坏。 |
反馈时间 | 做了比较坏的选择会立刻反馈给算法。 | 结果反馈有延时,有时候可能需要走了很多步以后才知道以前的某一步的选择是好还是坏。 |
输入特征 | 输入是独立同分布的。 | 面对的输入总是在变化,每当算法做出一个行为,它影响下一次决策的输入。 |
对于上面着四种机器学习的算法分类,进行如下表格的总结:
描述 | In | Out | 目的 | 案例 |
---|---|---|---|---|
监督学习 | 有标签 | 有反馈 | 预测结果 | 猫狗分类,房价预测 |
无监督学习 | 无标签 | 无反馈 | 发现潜在结构 | 物以类聚,人以群分 |
半监督学习 | 部分有标签,部分无标签 | 有反馈 | 降低数据标记的难度 | |
强化学习 | 决策流程及激励系统 | 一系列行动 | 长期利益最大化 | 学下棋 |
模型评估是模型开发过程不可或缺的一部分。它有助于发现表达数据的最佳模型和所选模型将来工作的性能如何。按照数据集的目标值不同,可以把模型评估分为如下两种模型评估:
分类模型评估:
准确率:预测正确的数占样本总数的比例。
其他评价指标:精确率、召回率、F1-score、AUC指标等。
回归模型评估:
均方根误差(Root MeanSquaredError,RMSE):RMSE是一个衡量回归模型误差率的常用公式。不过,它仅能比较误差是相同单位的模型。
假设上面的房价预测,只有五个样本,对应的:
真实值为:100,120,125,230,400;预测值为:105,119,120,230,410
那么使用均方根误差求解得:
其他评价指标:
相对平方误差(RelativeSquaredError,RSE)
平均绝对误差(MeanAbsoluteError,MAE)
相对绝对误差(RelativeAbsoluteError,RAE)
拟合:模型评估用于评价训练好的的模型的表现效果,其表现效果大致可以分为两类:过拟合、欠拟合。在训练过程中,你可能会遇到如下问题:训练数据训练的很好啊,误差也不大,为什么在测试集上面有问题呢?当算法在某个数据集当中出现这种情况,可能就出现了拟合问题。
欠拟合(under-fitting):模型学习的太过粗糙,连训练集中的样本数据特征关系都没有学出来。
因为机器学习到的天鹅特征太少了,导致区分标准太粗糙,不能准确识别出天鹅。
过拟合(over-fitting):所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在测试数据集中表现不佳。
机器已经基本能区别天鹅和其他动物了。然后,很不巧已有的天鹅图片全是白天鹅的,于是机器经过学习后,会认为天鹅的羽毛都是白的,以后看到羽毛是黑的天鹅就会认为那不是天鹅。
深度学习(DeepLearning)(也称为深度结构学习【DeepStructuredLearning】、层次学习【HierarchicalLearning】或者是深度机器学习【DeepMachineLearning】)是一类算法集合,是机器学习的一个分支。
深度学习方法近年来,在会话识别、图像识别和对象侦测等领域表现出了惊人的准确性。但是,“深度学习"这个词语很古老,它在1986年由Dechter在机器学习领域提出,然后在2000年有Aizenberg等人引入到人工神经网络中。而现在,由于AlexKrizhevsky在2012年使用卷积网络结构赢得了ImageNet比赛之后受到大家的瞩目。
以下是深度学习演示的参考,网址为 playground.tensorflow.org/ 大家自行体验:
Jupyter项目是一个非盈利的开源项目,源于2014年的ipython项目,因为它逐渐发展为支持跨所有编程语言的交互式数据科学和科学计算。pyterNotebook,原名IPythonNotbook,是IPython的加强网页版,一个开源Web应用程序。名字源自Julia、Python和R(数据科学的三种开源语言),是一款程序员和科学工作者的编程/文档/笔记/展示软件,ipynb文件格式是用于计算型叙述的JSON文档格式的正式规范。
为什么使用JupyterNotebook?
传统软件开发:工程/目标明确
需求分析,设计架构,开发模块,测试
数据挖掘:艺术/目标不明确。
目的是具体的洞察目标,而不是机械的完成任务。通过执行代码来理解问题。迭代式地改进代码来改进解决方法,实时运行的代码、叙事性的文本和可视化被整合在一起,方便使用代码和数据来讲述故事
对于Jupyter Notebook的使用可以参考我之前的文章:Jupyter Notebook安装使用教程 ,这里不再赘述。