精华内容
下载资源
问答
  • 机器学习在解决非线性问题方面具有很大的优势潜力,结合机器学习算法的可见光通信技术必然具有巨大的研究价值。已有研究表明,传统的机器学习算法如K-means、DBSCAN以及支持向量机(SVM)等在预均衡、后均衡、抗系统...
  • Python数据分析与机器学习实战教程,该课程精心挑选真实的数据集为案例,通过python数据科学库numpy,pandas,matplot结合机器学习库scikit-learn完成一些列的机器学习案例。课程以实战为基础,所有课时都结合代码演示...
  • 无线通信机器学习/深度学习

    千次阅读 2019-06-22 11:18:58
    公开数据集网址:https://www.deepsig.io/publications 里面还有一些相关研究论文。

    公开数据集网址:https://www.deepsig.io/publications

    里面还有一些相关研究论文。

    展开全文
  • EuclidesDB是一个多模型机器学习特征数据库,它与PyTorch紧密结合,并提供后端,用于在模型特征空间中包含查询数据。用C 编写的性能; 使用protobuf进行数据序列化; 使用gRPC进行通信; 用于数据库序列化的...
  • 机器学习实践应用

    万次阅读 多人点赞 2018-04-12 10:04:41
    本书通过对机器学习的背景知识、算法流程、相关工具、实践案例以及知识图谱等内容的讲解,全面介绍了机器学习的理论基础实践应用。书中涉及机器学习领域的多个典型算法,并详细给出了机器学习的算法流程。 本书...

    内容简介

    机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度等多门学科,专门研究计算机怎样模拟或实现人类的学习行为。机器学习是人工智能的核心,是使计算机具有 智能的根本途径。

    本书通过对机器学习的背景知识、算法流程、相关工具、实践案例以及知识图谱等内容的讲解,全面介绍了机器学习的理论基础和实践应用。书中涉及机器学习领域的多个典型算法,并详细给出了机器学习的算法流程。

    本书适合任何有一定数据功底和编程基础的读者阅读。通过阅读本书,读者不仅可以了解机器学习的理论基础,也可以参照一些典型的应用案例拓展自己的专业技能。同时,本书也适合计算机相关专业的学生以及对人工智能和机器学习感兴趣的读者阅读。

    通过阅读本书,你将了解到:

    • 机器学习全流程的串联方式,包括数据预处理、特征工程、算法、模型评估等;
    • 最常用的机器学习算法,包括逻辑回归、随机森林、支持向量机、KMEANS、DBSCAN、K 近邻、马尔科夫决策、LDA、标签传播等;
    • 机器学习算法在实际业务中的应用,涉及金融、医疗、新闻、电商等诸多领域;
    • 机器学习的常用工具:R、Spark-MLib、TensorFlow、PAI 等;
    • 时下最热门的技术领域:深度学习、知识图谱等。

    作者简介

    李博,花名“傲海”。目前任阿里云数据产品经理,主要负责机器学习平台的产品化建设以及对外业务应用。本科、硕士毕业于北京邮电大学,曾就职于索尼和华为(实习),从事数据相关产品的开发。作为 CSDN 博客专家、云栖社区博客专家,长期分享 IT 技术相关文章,内容涉及机器学习算法、Android 应用及源码开发等领域。一直活跃于开发者社区,主导开发了多个 GitHub 百星开源项目,还开发并上线了多款手机 App。

    本书内容

    推荐序

    近年来,在 IT 圈大家谈论最多的就是人工智能。AlphaGo 与围棋选手的人机大战更是让我们领略到人工智能技术巨大潜力的同时,又将人工智能推向了一个新的制高点。

    人工智能的发展得益于云计算和大数据技术的成熟与普及。和人工智能相关的还有两个核心词汇——机器学习和深度学习。这三者有着什么样的关系?所谓人工智能,通俗地讲是指由人工制造出来的系统所表现出来的智能。人工智能研究的核心问题包括推理、知识、交流、感知、移动和操作物体的能力。而机器学习是人工智能的一个分支,很多时候机器学习几乎成为人工智能的代名词。机器学习简单来讲就是通过算法,使机器能从大量历史数据中学习规律,从而对新的样本做出智能识别或对未来做预测。深度学习是机器学习的一个新领域。之所以称为“深度”,是因为前面说的机器学习是浅层的学习,主要基于概率统计、矩阵或图模型而得出的分析结论。深度学习的概念源于人工神经网络的研究,它基于神经网络框架,通过模拟人脑学习的方式来处理数据。在人工智能实践中,数据是载体和基础,智能是追求的目标,而机器学习则是从数据通往智能的技术桥梁。因此,在人工智能领域,机器学习才是核心,是现代人工智能的本质。

    人工智能的火热使市场上对机器学习人才的需求不断提高,很多从事软件开发的程序员纷纷转行投向机器学习领域。但机器学习对人才的技术和理论水平要求都非常高,除了要掌握统计学中各种复杂的机器学习算法的理论推导外,还要懂计算机算法的实现逻辑以及分布式、并行化等架构理论。

    本书是以应用场景为导向,以代码实现为样例贯穿始终,并融入了通俗易懂的理论知识。对于机器学习爱好者和想进入相关领域的从业者来说,是一本值得推荐的好书。

    从2015年开始,我有幸与作者在同一个团队工作,一起设计并研发阿里云的机器学习平台——PAI。作者对机器学习的理解以及产品上的设计思想都在本书中完美地呈现,值得准备进入机器学习领域的爱好者和从业者好好品读。

    感谢作者让我在新书出版之前先睹为快。

    ——刘吉哲
    阿里云高级专家

    致谢

    感谢我的父母这些年对我的鼓励,感谢我的女朋友,家人的支持永远是我的源动力,让你们生活得幸福是我奋斗的目标。感谢我的大学同学,特别是本科宿舍的室友,你们是我心中的一股清流。最后我要特别感谢我的同事,感谢楚巍、不老、吉哲、云郎、贾总、品道等人以及 UED 小团队,感谢你们对我工作上的支持和帮助。在阿里云大家庭中,我工作得很快乐,个人成长也非常迅速。同时,我也非常感谢出版社的编辑胡俊英在本书写作期间为我提供建议和帮助。

    最后对自己这段时间的写作过程做一个总结,最大的感触是,在这样快速紧张的生活和工作节奏下,连续8个月坚持做一件事情是非常需要毅力的。每天下班之后坚持学习和写作2小时,常常熬到凌晨才关灯睡觉,但是这份坚持换来了将近500小时的时间用来“充电”。在这段时间中,写作已经成为我的一种生活方式,在飞机上、在高铁上、在出租车上、在厕所中……很多地方都留下了思考和回忆。无论最终能做到什么程度,都希望自己可以继续把这样的激情保持下去。最后感谢所有在工作和学习中给过我帮助的人,也感谢所有拒绝我、批评过我的人,因为有你们才有了这本书。

    前言

    人工智能是近年来非常火的话题,人们似乎看到了在某些领域内机器智能取代人力的可能性。之所以人们可以得到这样的判断,主要是基于以下几方面原因:随着互联网的发展,人类社会积累了大量的数据可供分析;机器学习的算法不断迭代,特别是近年来随着深度学习的发展,人们从理论层面取得了实质性突破;随着分布式计算的成熟,云计算让计算资源不再成为瓶颈。我们可以把人工智能看作一个数据挖掘体系,在这个体系当中,机器学习的作用主要是学习历史数据中的经验,把这些经验构建成数学模型。人类利用机器学习算法生成的模型,就可以解决日常的一些问题,如商品推荐和对股票涨跌的预测等。

    以上谈到了机器学习的主要作用,我们再来了解机器学习在业务中的应用,其实机器学习算法正在逐步向“平民化”演变。早些时候,只有一些规模比较大的公司会投入资源在智能算法的研究上,因为这些算法需要大量的数据积累以及计算资源,而且整个业务框架跟算法的结合也需要耗费很大人力,所以只有少数数据业务量达到一定规模的公司会在这方面投入。但是随着各种开源算法框架的发展以及计算资源的价格走低,机器学习不再是“奢侈品”,很多规模不大的公司也开始尝试用机器学习算法生成的模型来指导自身业务,用数据来解决业务问题是代价最小的方式,而且效果会随着数据量的积累变得越来越明显。机器学习算法正在帮助越来越多的企业实现转型,从传统的商业智能(Business Intelligence,BI)驱动到人工智能(Artificial Intelligence,AI)驱动。通过平日里与客户打交道,我们可以了解到,现在不只是互联网公司,更多传统行业,如教育、地产和医疗等,也在尝试把自己的业务数据上传到云,通过机器学习算法来提升自己的业务竞争力。

    综上所述,业务与机器学习算法的结合很有可能是下一阶段行业变革的驱动力,如果固守原来的传统技术,不尝试提升业务的数据驱动力,企业很有可能在这一波新的浪潮中被淘汰。本书尝试将算法与实际的业务实战相结合,将对机器学习的全链路逐一进行介绍。在描述算法理论的时候,本书尽可能用更直白易懂的语句和图示来替代公式。另外,为了帮助读者更有成效地理解机器学习算法的使用逻辑,书中不单介绍了算法,还对整个数据挖掘的全流程,包括数据预处理、特征工程、训练以及预测、评估进行了介绍。而且本书还通过真实案例的数据,在各种不同业务场景下对整个数据挖掘流程进行了详细介绍。此外,书中还简单地介绍了深度学习和知识图谱这两个未来可能被更多关注的领域。总之,本书不是一本理论教程,而是一本推动算法与业务实践相结合的指南。

    写作本书的目的

    我从研究生阶段开始接触机器学习算法,在硕士研究生期间主要从事算法的理论研究和代码实现,当时参与了一些开源算法库的开发和算法大赛,那时对机器学习的理解更多的是停留在数学公式推导层面。那时候理解的机器学习就是一门统计科学,需要把公式研究透彻。直到入职阿里云,从事了机器学习平台相关的工作,我对机器学习的看法发生了很大改变。根据平日里与客户的沟通,我认识到,对绝大部分中小企业用户而言,机器学习算法只是帮助大家提升业务成效的工具,很多用户对机器学习的理解还处于比较初级的阶段,与这种现状相矛盾的是目前市面上部分机器学习相关的图书都更偏向于理论研究,而比较缺乏实际应用的场景。

    写这本书的目的就是希望可以提供这样一本素材,能够让渴望了解机器学习的人快速了解整个数据挖掘体系的轮廓,可以用最小的成本帮助用户把算法迁移到机器学习云服务上去。至于算法的精密度和深度的探索,那是数学家需要考虑的事情,对绝大部分的机器学习算法用户而言,这样一本能帮助大家快速理解算法并能够将其在业务上实践的教程可能会更加有效。

    对我而言,本书也是我对自己学习成果的总结。从 2013年起,我陆陆续续在 CSDN、GitHub 和云栖社区上分享过一些自己在 IT 领域的学习笔记和代码,收到了很多朋友的反馈,也有一些出版社的朋友找到我希望可以把这些内容整理成书,但是一直没有特别笃定的想法——什么样的书是有价值的。通过近一年来的机器学习平台产品建设以及与客户的不断接触,我心中的想法逐渐清晰,很多机器学习爱好者最关心的是如何使用算法而不是这些算法背后的推理,于是本书就应运而生了。虽然我才疏学浅,书中内容未免有描述不足之处,但是我真心希望这本书可以在读者探索机器学习的道路上为其提供助力。

    读者对象

    本书的读者对象如下:

    • 有一定数学基础,希望了解机器学习算法的人;
    • 有编程基础,希望自己搭建机器学习服务解决业务场景的工程师;
    • 数据仓库工程师;
    • 与数据挖掘相关的高校学生;
    • 寻求数据驱动业务的企业决策者。

    如何阅读本书

    本书的结构是按照读者对机器学习的认知过程和数据挖掘的算法流程来组织的,一共分为5个部分,共9章内容。

    第1部分是机器学习的背景知识介绍,包括第1章。这一部分主要介绍机器学习的发展历史以及现状,另外,也介绍了机器学习的一些基本概念,为接下来的内容做准备。

    第2部分介绍机器学习的算法流程,包括第2~6章,分别介绍了场景解析、数据预处理、特征工程、机器学习常规算法和深度学习算法。在第5章的算法部分,对常见的分类算法、聚类算法、回归算法、文本分析算法、推荐算法和关系图算法都进行了介绍,从这一章可以了解到不同业务场景下不同算法的区别和用法。第6章对深度学习相关内容进行了讲解,包括常用的3种模型 DNN、CNN 和 RNN 的介绍。

    第3部分介绍机器学习的相关工具,包括第7章的内容。这里的工具是一个广泛的概念,包括了 SPSS 和 R 语言这样的单机统计分析环境,也包括了分布式的算法框架Spark MLib和TensorFlow,还有企业级的云算法服务 AWS ML 和阿里云 PAI。通过阅读这一章,读者可以根据自身的业务特点,选择适合自己的算法工具。

    第4部分介绍机器学习算法的实践案例,包括第8章,帮助读者理解整个数据挖掘流程。这一章针对不同行业和不同场景搭建了实验,分别介绍了如何通过机器学习算法应对心脏病预测、商品推荐、金融风控、新闻分类、贷款预测、雾霾天气预报和图片识别等业务场景,因此也是本书的核心章节。

    第5部分主要针对知识图谱这个热点话题进行介绍,包括第9章,知识图谱的介绍主要是从图谱的概念以及实现的角度来说明。

    尽管读者可以根据自己的侧重点来选择阅读顺序,但我强烈建议读者按照顺序来阅读,这样对理解书中的概念并能够循序渐进地掌握相关知识更有帮助。

    勘误和服务

    虽然花了很多时间去反复检查和核实书中的文字、图片和代码,但是因为认知能力有限,书中难免会有一些纰漏,如果大家发现书中的不足之处,恳请反馈给我,我一定会努力修正问题,我的个人邮箱是 garvin.libo@gmail.com。如果大家在阅读本书的时候遇到什么问题,也欢迎通过各种方式与我取得联系。

    个人网站

    博客地址

    读者也可以到异步社区的页面内提交勘误。因为工作繁忙,可能来不及一一回复,但是我会尽力与读者保持沟通,谢谢大家的支持。

    第01章:机器学习概述(上)

    在本章中,笔者会以对于人工智能发展历史的回顾作为开篇,进而介绍一些人工智能的发展现状,还会引出对于机器学习的基本概念的一些讲解。这一章作为全书的开篇,希望给各位读者一个宏观的概念——什么是机器学习?它会给我们的生活带来哪些改变?

    1.1 背景

    正如爱因斯坦所说:“从希腊哲学到现代物理学的整个科学史中,不断有人试图把表面上极为复杂的自然现象归结为几个简单的基本概念和关系,这就是整个自然哲学的基本原理。”人类进化的发展史,从某种意义上来讲就是不断归纳经验进而演绎的过程。从刀耕火种的新石器时代到近代的工业革命以及现代科技的发展,人类已经积累了大量的经验。这些经验既是“种瓜得瓜,种豆得豆”这样的常识,也是例如相对论这样的定理公式。人类文明正沿着时间这条坐标轴不断前进,如何利用过往的经验来推动人类社会的再一次飞跃,人工智能或许是我们需要的答案。

    人工智能的起源应该可以追溯到17世纪甚至更早,当时人们对于人工智能的定义是基于推理的。人们畅想着如果两个哲学家或者历史学家的观点出现矛盾,两个人不必再进行无休止的争吵,世界上的所有理论会抽象成类似于数学符号的语言,人们只需要拿出笔来计算就可以解决矛盾。这种抽象逻辑给了后人引导,如今,机器学习在行业上的应用也是将业务逻辑抽象成数字来进行计算,从而解决业务问题。但是在远古时代,这些逻辑还只是科学家脑中的想法。实际上,直到有机器的出现,人工智能才真正作为一门学科而受到广泛关注。

    谈到近代人工智能的起源就不得不提到一个名字——图灵(见图1-1)。

    enter image description here

    图1-1 阿兰 · 图灵

    随着第二次世界大战的爆发,越来越多的机械开始替代手工,人们开始幻想什么时候机器能代替人类来进行思考。在20世纪40年代,关于人工智能的讨论开始兴起。但是,机器做到什么程度才算人工智能,这需要一个标准来判定。图灵用了最直白的话语描述了人工智能,这就是图灵测试(见图1-2)。

    enter image description here

    图1-2 图灵测试

    1950年,计算机科学和密码学的先驱阿兰 · 麦席森 · 图灵发表了一篇名为《计算机器与智能》的论文,文中定义了人工智能测试的方法,让被测试人和一个声称自己有人类智力的机器在一起做一个实验。测试时,测试人与被测试人是分开的,测试人只有通过一些装置(如键盘)向被测试人问一些问题,随便是什么问题都可以。问过一些问题后,如果测试人能够正确地分出谁是人、谁是机器,那机器就没有通过图灵测试,如果测试人没有分出谁是机器、谁是人,那这个机器就是有人类智能的。

    人工智能的另一个重要标志是人工智能这一学科的诞生,故事发生在1956年达特茅斯会议。会议上提出了这样的理论:“学习或者智能的任何其他特性都能被精确地描述,使得机器可以对其进行模拟。”这个论调很像机器学习算法在今日的应用,我们需要提取可以表示业务的特征,然后通过算法来训练模型,用这些模型对于未知结果的预测集进行预测。这次会议对于人工智能在更广阔的领域发展起到了推动作用。在之后的20年里,人类在人工智能,特别是相关的一些统计学算法的研究上取得了突破进展,比较有代表性的如神经网络算法,就是在这个时期诞生的。有了这些智能算法作支撑,更多的真实场景才可以在数学层面进行模拟,人类慢慢学会通过数据和算法的结合来进行预测,从而实现某种程度上的智能化应用。

    人工智能在发展过程中也遇到过非常多的挑战。20世纪70年代,随着理论算法的逐步成熟,人工智能的发展遇到了计算资源上的瓶颈。随着计算复杂度的指数性增长,20世纪70年代的大型机器无法负担这一切。同时,当时的互联网还处于发展初期,在数据积累方面也才刚刚起步。科学家往往没有足够的数据去训练模型,以图像印刷文字识别(Optical Character Recognition,OCR)为例。如果想针对某一场景训练一套精度较高的 OCR 模型,需要千万级的数据样本,这样的数据无论从数据获取、存储和计算成本来看,在当时都是不可能实现的。所以人工智能在之后很长的一段时间内都受限于计算能力以及数据量的不足。

    虽然经历了近20年的消沉时期,但是数据科学家对于人工智能的探索从未停止过。在 21 世纪,随着互联网的井喷式发展,越来越多的图像和文本数据被分享到网页上,停留在互联网巨头的服务器中,随之而来的是用户在网上的浏览记录和购物记录的收集。互联网已经变成了一个大数据仓库,许多网络大咖们纷纷将注意力投向数据挖掘领域,数据库成为了一座座金矿,数据科学家们开始用一行行公式和代码挖掘数据背后的价值,越来越多的公司做起了数据买卖。这些代码和公式就是本书的主角——机器学习算法。马云先生在很多年前的公开演讲上就已经明确表示过“阿里巴巴是一家数据公司”。数据的积累就像是一块块肥沃的土地,需要机器学习算法来在上面耕种,云计算就是挥舞在土地上的“锄头”。PB 级数据的积累使得人们不得不将单机计算迁移到多机,并行计算理论开始得到了广泛的应用,这就催生了云计算的概念。云计算,就是分布式计算,简单来讲就是将一个很复杂的任务进行拆解,由成百上千的机器各自执行任务的一个小模块,然后将结果汇总。

    以 Hadoop 为代表的开源分布式计算架构为更多的企业提供了分布式计算的技术支持。随着 Caffe 和 Tensorflow 等高效率的深度学习架构被开源,许多小型企业也具备了自主研发改进算法模型的能力。人工智能的应用开始普及,并且逐渐融入我们的生活当中。人们开始习惯了在 Google 上输入一个词条马上就能返回上千万条信息,通过刷脸或者指纹识别来进行支付,在淘宝购物时获得智能商品推荐。图像识别、文本识别和语音识别的发展给我们的生活带来了颠覆式的影响。2016年,Google关于人工智能的一场秀将人工智能产业带到了一个新高度。机器智能战胜人类围棋选手一直以来被认为是不可能实现的任务,但是 AlphaGo 成功地实现了这一点。AlphaGo 的成功不仅仅验证了深度学习和蒙特卡洛搜索算法的实践性,更加再一次印证了这样的事实,即人类不再是产生智能的唯一载体。任何机器,只要能够进行信息的接收、存储和分析,都是可以产生智能的。而这里面的关键因素是信息的量级以及算法的深度。

    人工智能的发展史,就是对于过往经验的收集和分析方法不断演绎的历史。在机器出现之前,人类只能通过别人的分享和自己的实践在很小的信息量级上来对事物进行判断,这种对于外界事物的认知受限于人的脑力和知识量。不同于人类的脑力,抽象意义上的机器可以被当成一个信息黑洞,吸收所有的信息,而且可以不分昼夜地对这些数据进行大维度的分析、归纳以及演绎,如果人类将这些机器学习后得到的认知进行分享,就形成了人工智能。于是,随着人类社会的发展,数据的积累以及算法的迭代将进一步推动整个人工智能的发展。

    正如前面所提到的,人工智能的发展体现在机器带动人类进行经验归纳以及思考,那么人工智能背后的引擎就是本书要介绍的重点——机器学习算法。机器学习是一种多学科交织的研究型学科,涉及生物学、统计和计算机等多个学科。机器学习算法发展到目前阶段,做的事情主要是将生活中的场景抽象成为数学公式,并且依靠机器的超强计算能力,通过迭代和演绎生成模型,对于新的社会问题进行预测或者分类操作。人工智能的发展史其实伴随着机器学习算法的进化史,正是随着机器学习算法的不断发展以及计算能力的提升,人工智能产业才得到了发展,进而达到了目前这种火热的局面。下面将对于机器学习算法在目前阶段所取得的一些成就进行一个介绍,方便大家了解机器学习算法的用途。

    1.2 发展现状

    上一节中回顾了人工智能的发展历程,不考虑计算能力等硬件条件的限制,当今世界的人工智能可以总结为数据和智能算法的结合。通过对过往经验的分析得到实验模型,并且利用这种模型指导实际的业务。把人工智能看作一个人类大脑的话,里面的血液就是数据,而大脑里面的血管承载着数据的流转,可以看作是相关的机器学习算法。所以在介绍机器学习算法之前,大家不得不先了解一下大数据时代的特性,然后再针对当前数据爆炸的这种情况介绍机器学习算法的一些用途。

    1.2.1 数据现状

    21世纪注定是属于互联网的,在这个数字时代产生了很多新名词,这里边有云计算、电子商务和有共享经济。大数据也是互联网时代的产物,出现在报纸中、电视上、网页里。“大数据”已经成为信息时代的代名词,乃至于好多人还来不及认识它,就已经开始被它支配。什么是数据?客观世界存在的那一刻开始,数据就已经出现了,从宇宙中天体运动的速度、角度及天体的质量,到人类文明的产生、更迭和演进。数据无处不在,但是数据的价值在于如何采集和利用。

    正是受到互联网的驱动,人类开始采集和利用数据。对于大数据时代,我最深切的感触是大数据未来的版图清晰又模糊。清晰的是人们已经开始意识到数据是有价值的,并且已经开始采集数据,看看人们都做了什么?根据存储市场调研的最新报告,目前世界全年的数据保存量约合 50EB,这些数据来源于互联网、医疗健康、通信、公共安全以及军工等行业。接下来,我们来看看这些数据是如何产生的。

    以全球最大的 SNS 服务商 Facebook 为例。Facebook 现在的用户数达到9.5亿,这些用户的每一个行为,包括每一次通知、页面访问、查看朋友的页面,都会被Facebook 的服务器追踪,并且产生历史行为数据。而全世界9.5亿用户平均每个月在 Facebook 上花费的时间超过6.5个小时,产生的数据量大小超出人们的想象。Facebook 上每天可以产生 500TB 左右的数据量,我们来看看这些数据具体包括什么。人们每天分享 25 亿个内容条目,包括状态更新、墙上的帖子、图片、视频和评论,每天有 27 亿个“ like”操作,人们每天上传 3 亿张图片。

    虽然诸如 Facebook、Google 和 Alibaba 这样的国际互联网巨头已经开始积累数据,并且将数据进行分析来反哺业务。但是截止到今天,全世界每年保存下来的数据只占到数据产生总量的百分之一不到,其中可以被标记并且分析的数据更是连百分之十都不到。这种现状造成了两方面的瓶颈,一方面是数据产生和数据收集的瓶颈,另一方面是采集到的数据和能被分析的数据之间的瓶颈。

    针对数据产生和数据采集的瓶颈,其原因一方面是硬件存储成本的限制,但是随着硬盘技术的发展和产能的提升,这方面的缺陷正逐渐弱化。笔者认为,造成目前数据采集与数据生成失衡的主要原因是数据的采集缺乏标准。虽然,互联网公司对数据采集和标准制定方面已经形成了一套成熟的体系,如网站的点击行为、日志的收集等。但是对于更多行业,特别是传统行业来说,数据的采集方式还处于摸索当中,而且从目前来看,这样的摸索还将持续相当长的时间。尽管现在提倡互联网思维以及世界万物联网的思想,但是互联网对于采集数据的经验恐怕很难复制到传统行业。因为互联网行业对于数据采集存在天然的优势,互联网的数据都是托管在数据库里,以二进制的方式记录在硬盘中,只要稍作处理就可以形成一份质量较高的结构化数据。但是在传统行业,以建筑行业为例,数据产生于工地上一砖一瓦的堆砌,产生于工地的施工建设,这样的数据如何转成二进制来存储需要由新的标准来指定,而这种标准更多地受限于技术手段。如果我们的图像识别做得足够智能,拍一张照片就可以将工地的数据量化,这样可能就可以解决这种问题。对于传统行业的数据智能化进程可能还需要耐心的等待。

    数据采集方面还需要制定更多的标准以及技术的支持,但是数据的应用方面也存在不小的缺陷。如果目前世界上采集到的数据能被充分利用是足够颠覆生活的,可惜的是目前可以供分析的数据还只占很小的比例。造成这样的困境主要有两方面因素,一个是目前比较主流的机器学习算法都是监督学习算法,监督学习需要的数据源是打标过的数据,打标数据很多时候是依赖于人工标记。比如我们需要一份数据来训练模型进行电影推荐,除了已知的电影的特征数据以外,还需要一份打标的数据来表示电影的好看程度,有点像豆瓣的电影分数,这种数据很难通过计算机的计算直接生成,需要依赖于人工打标。人工打标的影响就是,一方面很难生成大量的标本(上千万样本的数据),设想一下1000万人坐到一个地方一起看一部电影再进行评分是多么浩大的一项工程。另一方面,人工打标的成本太高,目前有很多负责打标的第三方公司,打标服务往往在市场上可以卖到很高的价格。

    另一个导致可分析数据比例较低的因素是对于非结构化的数据处理能力较低。非结构化数据指的是文本或者图片、语音、视频这样的数据。这部分数据来自于用户在贴吧的评论、社交软件上的头像、直播平台上的视频展现等。虽然目前的科技水平已经具备了文本和图像方面的分析能力,但是在大批量处理和特征提取方面依然处于相对基础的阶段。以图像识别为例,目前比较成熟的包括人脸识别和指纹识别等,图像识别的特点是每种事物的识别需要训练相对应的模型,而这种模型需要大量的训练样本来提高精确率,一个成熟的模型通常需要千万级别的训练样例。人脸的数据是比较容易获取的,所以相应的模型比较容易训练,但是假如我们需要训练一个模型来识别某一款杯子,针对这一款杯子的训练数据是很难达到理想量级的,这也提高了特定场景下图像识别的门槛。

    互联网在不断发展,数据的生成也不会停下脚步。目前被广泛引用的互联网数据中心(International Data Corporation,IDC)和 EMC 联合发布的“2020年的数字宇宙”报告显示,到2020年全球数字宇宙将会膨胀到40000EB,均摊每个人身上是5200GB以上,这个数据量的数据将会如何被有效存储和应用,目前我们还不敢想象。不过可以肯定的是,数据会成为重要的资源,就像是水电煤一样,在大数据时代,特别是未来的数据爆发时代,数据一定会展现出更大的潜能,人类社会也会进入数据处理技术(Data Technology,DT)时代。

    1.2.2 机器学习算法现状

    之前讲了大数据,这里再讲机器学习就变得容易理解了。传统的机器工作模式是程序员向机器输入一连串的指令,可以理解为是代码,然后机器按照这些指令一步一步执行下去,结果通常是我们可以事先预料的。这种逻辑在机器学习里是走不通的,机器学习是指我们向机器(更准确地说是机器学习算法)中输入数据,然后机器会根据数据返回结果,这些结果是通过数据自我学习得到的,学习的过程通过算法来完成。我们可以这样来定义,机器学习方法是计算机利用已有的数据(经验)得出了某种模型,并利用这些模型预测未来的一种方法。这个过程其实与人的学习过程极为相似,只不过机器是一个可以进行大维度数据分析而且可以不知疲倦地学习的“怪兽”而已(见图1-3)。

    enter image description here

    图1-3 机器学习与人的不同

    机器学习跟模式识别、统计学习、数据挖掘、计算机视觉、语音识别和自然语言处理等领域都有着很深的联系。如今生活在这样的 DT 时代,随时随地都是机器学习的影子,通过机器对大数据进行分析而带来的人工智能应用,正在一点一点地改变人们的生活方式和思维方式。看到这里很多人都会发问:机器学习究竟能做什么?其实机器学习已经服务了我们生活的各个方面,下面以一个简单的购物场景来介绍机器学习是如何应用在我们的日常生活中的。

    现在是 2016 年,如果你还没有尝试过网上购物,那真的是落伍了。网上购物目前已经成了人们的生活方式。下面就简单地聊聊机器学习算法在购物行为中的应用。假设我们在餐厅吃饭,看到一个人的短袖体恤很漂亮,我们想买同款,但是又不好意思开口去问。那么我们可以先偷拍一张这个人的T恤的照片,然后拍立淘(见图1-4)就会显示出这件衣服的同款。

    enter image description here

    图1-4 拍立淘

    这里就用到了机器学习中的图像识别技术。但是往往与这件衣服相近的款式又非常的多,因此我们需要把这些款式按照一定的规则进行排序,这就涉及了机器学习算法模型的训练,通过这个模型,我们把所有的类似款式进行一个排名,最后就得出了最终的展示顺序。

    当然,更多的时候我们是通过键盘的输入来搜索商品的,但是如果犯懒,还可以选择通过语音的方式输入内容,这就是语音转文本的运用。在我们搜索一款产品之后,网页的边栏上会出现一些推荐列表,而且每个用户的推荐列表都是不同的,这就是所谓的千人千面。这个场景的实现依赖的是推荐系统后台的用户画像,而用户画像就是大数据和机器学习算法的典型应用,通过挖掘用户的特征,如性别、年龄、收入情况和爱好等特征,推荐用户可能购买的商品,做到个性化推荐。

    到了这一步,我们终于把商品放到了购物车里,开始下单。下单之前我们发现网银账户中的钱不够用了,想申请一些贷款。这个时候,我们发现有一个贷款额度,这个额度是如何计算的呢?这里面涉及金融风控的问题,而金融风控也是根据机器学习的算法来训练模型并且计算出来的。

    下单之后我们的商品就被安排配送了,目前除了少数边远地区,基本上5天之内就可以收到商品。这段时间包含了商品的包装、从库存发货到中转库存、从低级仓库到高级仓库配送、向下分发。这么多工序之所以能够在短时间内完成,是因为仓储在库存方面已经提前做了需求量预测,提前在可能的需求地附近备货,这套预测算法也是建立在机器学习算法基础之上的。

    我们的快递员拿到货物,打开地图导航,系统已经为他设计了配送的路径,这个路径避免了拥堵而且尽量把路线设计到最短距离,这也是通过机器学习算法来计算的。快递员走进门,我们拿到货物后,发现衣服的尺码不合适怎么办?打开客服,输入问题,然后我们发现可以瞬间得到回复,因为这名客服人员可能并不是真的“客服人员”,只是一个客服机器人而已。智能客服系统利用文本的语意分析算法,可以精准地确定用户的问题,并且给予相应问题的解答。同时,智能客服还可以对用户问题的语境进行分析,如果问题很严重需要赔偿,如:“你的产品害我坏肚子了”这样的问题会由客服机器人通过情感分析挑出来,交给专人处理。

    如上所述,笔者简单列举了机器学习在网上购物中的几大应用,这里面涉及了很多智能算法,包括模型的训练和预测、语义分析、文本情感分析、图像识别技术以及语音识别技术。我们可以看到,在网购这种最常见的场景下,机器学习算法几乎贯穿了全部流程。

    当然,我们还可以列举出非常多诸如上述例子,因为场景实在太多了,没有办法全部穷举出来,这里通过场景来切分把机器学习的一些高频场景列举如下。

    • 聚类场景:人群划分和产品种类划分等。
    • 分类场景:广告投放预测和网站用户点击预测等。
    • 回归场景:降雨量预测、商品购买量预测和股票成交额预测等。
    • 文本分析场景:新闻的标签提取、文本自动分类和文本关键信息抽取等。
    • 关系图算法:社交网络关系(Social Network Site,SNS)网络关系挖掘和金融风险控制等。
    • 模式识别:语音识别、图像识别和手写字识别等。

    上面列举的应用只是机器学习算法应用场景中的一小部分,其实随着数据的积累,机器学习算法是可以渗透到各行各业当中,并且在行业中发生巨大的作用。随着数据智能、数据驱动等思想的传播,机器学习算法正在成为一种普世的基础能力向外输出。我们可以预见未来随着算法和计算能力的发展,机器学习应该会在金融、医疗、教育、安全等各个领域有更深层次的应用。笔者特别期待机器学习算法在破解基因密码以及癌症攻破方面可以取得突破,同时无人车、增强现实(Augmented Reality,AR)等新概念、新技术的发展也需要依赖于机器学习算法的发展。相信未来,机器学习算法会真正做到颠覆生活改变人类命运。

    第01章:机器学习概述(下)

    1.3 机器学习基本概念

    在开始机器学习的算法流程介绍之前,因为机器学习是一个多学科交叉的学科,有很多类似于统计学的概念,但是在叫法上与传统的统计学又有一定的区别,我们需要了解一些机器学习相关的基本概念,因为如果不明确这些概念的话,对于一些文献的阅读和理解会构成障碍。下面通过这一节的介绍帮助大家对于基础的机器学习名词和概念进行了解,首先介绍一下机器学习的基本流程,然后针对机器学习涉及的数据、算法和评估这3个方面用到的基础概念进行介绍。

    1.3.1 机器学习流程

    机器学习的过程就是一个数据流转、分析以及得到结果的过程,在使用的过程中很多人花了很多时间在算法的选择或者调优上,但其实机器学习的每一个步骤都是至关重要的,介绍算法的具体实现的资料已经比较丰富了,笔者希望花更多的篇幅来介绍数据的处理和整个机器学习流程的串联。

    机器学习的整个流程大致可以分为6个步骤,整个流程按照数据流自上而下的顺序排列,分别是场景解析、数据预处理、特征工程、模型训练、模型评估、离线/在线服务(见图1-5),下面来逐一介绍下这些步骤的基本功能。

    enter image description here

    图1-5 数据挖掘流程

    (1)场景解析。场景解析就是先把整个业务逻辑想清楚,把自己的业务场景进行一个抽象,例如我们做一个广告点击预测,其实是判断一个用户看到广告是点击还是不点击,这就可以抽象成二分类问题。然后我们根据是不是监督学习以及二分类场景,就可以进行算法的选择。总的来说,场景抽象就是把业务逻辑和算法进行匹配。

    (2)数据预处理。数据预处理主要进行数据的清洗工作,针对数据矩阵中的空值和乱码进行处理,同时也可以对整体数据进行拆分和采样等操作,也可以对单字段或者多字段进行归一化或者标准化的处理。数据预处理阶段的主要目标就是减少量纲和噪音数据对于训练数据集的影响。

    (3)特征工程。特征工程是机器学习中最重要的一个步骤,这句话一点都没有错。特别是目前随着开源算法库的普及以及算法的不断成熟,算法质量并不一定是决定结果的最关键因素,特征工程的效果从某种意义上决定了最终模型的优劣。通过一个例子说明一下特征工程的作用,2014 年某互联网巨头举办了一场大数据竞赛,参赛队伍在 1000 个以上,到最后,这里面几乎所有的参赛队伍都用了相同的一套算法,因为算法的优劣是比较容易评判的,不同算法的特性是不一样的,而且可供选择的算法种类是有限的。但是特征的选取和衍生却有极大的不定性,100 个人眼中可能有 100 种不同的特征,所以这种大赛到了后期,往往大家比拼的就是特征选取的好坏。在算法相对固定的情况下,可以说好特征决定了好结果。

    (4)模型训练。如图1-6所示的“逻辑回归二分类”组件表示的是算法训练过程,训练数据经过了数据预处理和特征工程之后进入算法训练模块,并且生成模型。在“预测”组件中,读取模型和预测集数据进行计算,生成预测结果。

    enter image description here

    图1-6 模型训练

    (5)模型评估。机器学习算法的计算结果一般是一个模型,模型的质量直接影响接下来的数据业务。对于模型的成熟度的评估,其实就是对于整套机器学习流程的评估。

    (6)离线/在线服务。在实际的业务运用过程中,机器学习通常需要配合调度系统来使用。具体的案例场景如下:每天用户将当日的增量数据流入数据库表里,通过调度系统启动机器学习的离线训练服务,生成最新的离线模型,然后通过在线预测服务(通常通过 Restful API,发送数据到服务器的算法模型进行计算,然后返回结果)进行实时的预测。具体架构如图1-7所示。

    enter image description here

    图1-7 机器学习服务架构

    利用这种架构就实现了离线训练和在线预测的结合,串联了从离线到在线的整个业务逻辑。

    1.3.2 数据源结构

    前面已经介绍了机器学习的基本流程,下面将针对机器学习的数据结构进行介绍。如果把机器学习算法比作一个数据加工场,那么进入工厂的数据就是被算法用来加工的原材料,机器学习算法需要的数据是什么样结构的呢?如果经常关注大数据相关的文章,基本会听说过“结构化数据”和“非结构化数据”这两个词,当然这里面还能衍生出“半结构化数据”,下面分别介绍一下这几种数据的结构。

    (1)结构化数据。结构化数据是指我们在日常数据库处理中经常看到的日志类数据结构,是以矩阵结构存储在数据库中的数据,可以通过二维表结构来显示,如图1-8所示。

    enter image description here

    图1-8 结构化数据示例

    结构化数据主要由两个部分组成,一个部分是每个字段的含义,也就是图1-8中的 age、sex、cp 等字段头,另一个部分是每个字段的具体数值。通常来讲,机器学习算法处理的数据都是结构化的数据,因为机器学习需要把数据带入矩阵去做一些数学运算,结构化数据原生是以矩阵形态存储的,所以机器学习算法通常是只支持结构化数据的。

    结构化数据中还有两个非常重要的概念需要介绍一下,即特征(Feature)和目标列(Label)。这是机器学习算法中最常出现的两个名词,其中特征表示的是数据所描述对象的属性,如用一组数据来形容人,那么这个人的身高、体重、性别和年龄都是特征。在结构化数据的数据集中,每一列数据通常就对应一个特征。

    目标列表示的是每一份数据的打标结果,因为前面也介绍过,机器学习的原理其实是从历史数据中来学习经验,目标列表示的是这一组数据的结果。例如,我们想通过一份体检数据来预测对象是否有心脏病,需要先通过成千上万份的训练数据来生成模型,这成千上万份的训练数据需要打标,也就是说机器要事先知道什么样体检指标的人患病了,什么样的人没有患病,这样才能学习出预测模型。通过一个例子来说明,如图1-9所示为一份心脏病预测需要的数据结果,其中框起来的字段表示的是对象是否患病,这一列是目标列。其他3个字段 age、sex 和 cp 描述的是对象的特征,是特征列。

    (2)半结构化数据。半结构化数据是指按照一定的结构存储,但不是二维的数据库行存储形态的数据。比较典型的半结构化数据就是 XML 扩展名的存储数据,如图1-10所示。

    enter image description here

    图1-9 目标列说明

    enter image description here

    图1-10 半结构化数据

    另一种半结构化数据就是在数据表中,某些字段是文本型的,某些字段是数值型的。见表1-1。

    表1-1 半结构化数据

    IDOccupationIncome
    小李老师241
    小王厨师521
    小刘司机421
    小方运动员23636

    半结构化数据常用于一些数据的传递,但是在机器学习算法相关的应用方面还有一定距离,需要做数据转换把半结构化数据转为结构化数据来进行操作。

    (3)非结构化数据。非结构化数据的数据挖掘一直以来是机器学习领域的热点话题,特别是随着深度学习的发展,目前对于非结构化数据的处理似乎找到了方向。典型的非结构化数据就是图像、文本或者是语音文件。这些数据不能以矩阵的结构存储,目前的做法也是通过把非结构化数据转为二进制存储格式,然后通过算法来挖掘其中的信息。第6章和第7章将详细介绍如何使用深度学习算法实现非结构化数据的处理。

    以上就是对于真实业务场景下需要处理的3类数据结构的介绍。机器学习算法对于结构化数据的支持是比较好的,对于半结构化数据和非结构化数据,在真实的业务场景下,通常是先把这两类数据做转化,然后才通过算法来进行数据挖掘。关于非结构化数据转为结构化数据的方法在第4章也有相关介绍。

    1.3.3 算法分类

    上面对于机器学习的流程和数据源结构都进行了介绍,下面对于算法的分类进行一个简单的说明。机器学习算法包含了聚类、回归、分类和文本分析等几十种场景的算法,常用的算法种类为 30 种左右,而且还有很多的变形,我们将机器学习分为 4 种,分别是监督学习、无监督学习、半监督学习和增强学习。

    (1)监督学习。监督学习(Supervised Learning),是指每个进入算法的训练数据样本都有对应的期望值也就是目标值,进行机器学习的过程实际上就是特征值和目标队列映射的过程。例如,我们已知一只股票的历史走势以及它的一些公司盈利、公司人数等信息,想要预测这只股票未来的走势。那么在训练算法模型的过程中,就是希望通过计算得到一个公式,可以反映公司盈利、公司人数这些信息对于股票走势的影响。通过过往的一些数据的特征以及最终结果来进行训练的方式就是监督学习法。监督学习算法的训练数据源需要由特征值以及目标队列两部分组成。

    如图1-11所示,ifhealth 是目标队列,age、sex 和 cp 为特征队列,这就是一个典型的监督学习的训练数据集。因为监督学习依赖于每个样本的打标,可以得到每个特征序列映射到的确切的目标值是什么,所以常用于回归以及分类场景。常见的监督学习算法见表1-2。

    表1-2 监督学习

    分类算法

    K 近邻、朴素贝叶斯、决策树、随机森林、GBDT 和支持向量机等

    回归算法

    逻辑回归、线性回归等

    监督学习的一个问题就是获得目标值的成本比较高。例如,我们想预测一个电影的好坏,那么在生成训练集的时候要依赖于对大量电影的人工标注,这样的人力代价使得监督学习在一定程度上是一种成本比较高的学习方法。如何获得大量的标记数据一直是监督学习面临的一道难题。

    enter image description here

    图1-11 监督学习

    (2)无监督学习。无监督学习(Unsupervised Learning),学习上面讲的监督学习的概念之后,其实无监督学习就比较好理解了。无监督学习就是指训练样本不依赖于打标数据的机器学习算法。既然是没有目标队列,也就缺少了特征环境下的最终结果,那么这样的数据可能对一些回归和分类的场景就不适合了。无监督学习主要是用来解决一些聚类场景的问题,因为当我们的训练数据缺失了目标值之后,能做的事情就只剩下比对不同样本间的距离关系。常见的无监督学习算法见表1-3。

    表1-3 半监督学习

    聚类算法

    K-Means、DBSCAN 等

    推荐算法

    协同过滤等

    相较于监督学习,无监督学习的一大好处就是不依赖于打标数据,在很多特定条件下,特别是打标数据需要依靠大量人工来获得的情况下可以尝试使用无监督学习或者半监督学习来解决问题。

    (3)半监督学习。半监督学习(Semi-supervised Learning),是最近几年逐渐开始流行的一种机器学习种类。上文中也提到,在一些场景下获得打标数据是很耗费资源的,但是无监督学习对于解决分类和回归这样场景的问题又有一些难度。所以人们开始尝试通过对样本的部分打标来进行机器学习算法的使用,这种部分打标样本的训练数据的算法应用,就是半监督学习。目前很多半监督学习算法都是监督学习算法的变形,本书将介绍一种半监督学习算法——标签传播算法。其实目前半监督算法已经有很多的应用了,推荐大家去深入了解。

    (4)强化学习。强化学习(Reinforcement Learning),是一种比较复杂的机器学习种类,强调的是系统与外界不断地交互,获得外界的反馈,然后决定自身的行为。强化学习目前是人工智能领域的一个热点算法种类,典型的案例包括无人汽车驾驶和阿尔法狗下围棋。本书介绍的分词算法隐马尔科夫就是一种强化学习的思想。

    上面就是关于监督学习、无监督学习、半监督学习和强化学习的一些介绍。监督学习主要解决的是分类和回归的场景,无监督学习主要解决聚类场景,半监督学习解决的是一些打标数据比较难获得的分类场景,强化学习主要是针对流程中不断需要推理的场景。本书对于这4类机器学习算法都有介绍,具体的分类见表1-4,方便大家有针对性的学习。

    表1-4 算法分类

    监督学习

    逻辑回归、K 近邻、朴素贝叶斯、随机森立、支持向量机

    无监督学习

    K-means、DBSCAN、协同过滤、LDA

    半监督学习

    标签传播

    强化学习

    隐马尔可夫

    1.3.4 过拟合问题

    机器学习模型训练的过程中会遇到非常多的问题,如参数或者梯度的设置不合理、数据的清洗不够彻底,但是如果问一个数据挖掘工程师什么问题是数据挖掘领域中最常见的问题,他的答案八成是“过拟合”,这也是为什么我们要单独拿出一小节来讲一下数据挖掘过程中的过拟合问题。

    过拟合(Over-fitting),从字面的意义上理解的话就是过度拟合的意思,常发生在线性分类器或者线性模型的训练和预测当中。过拟合现象是在数据挖掘过程中经常会遇到的问题,如通过训练集训练了一个模型,这个模型对于训练集的预测准确率很高,可以达到95%,但是我们换一份数据集进行预测,发现准确率只有30%,出现这种情况的原因很有可能是训练的过拟合现象。

    过拟合的原理就是机器学习算法过度学习了训练集数据,听上去有点难以理解,下面通过一个例子进行解释。假设我们有一组二维数据展示在坐标系当中,我们想对这个二维数据进行一个线性的回归训练。如果拟合出的曲线是如图 1-12 所示的虚线,其实是一种欠拟合(underfitting)的形式,曲线拟合的并不理想,因为并没有通过回归算法很好地拟合出一种符合数据分布的曲线。

    enter image description here

    图1-12 线性拟合曲线一

    我们再来看看图1-13。

    enter image description here

    图1-13 线性拟合曲线二

    如果最终拟合出来的是如图1-13所示情况,就是一种比较理想的状况,我们看到最终的曲线走势已经几乎刻画了数据的分布,这种曲线是比较理想的。那么什么是过拟合呢?我们来看下图1-14。

    enter image description here

    图1-14 线性拟合曲线三

    如图1-14所示这种情况是典型的过拟合,图中的曲线已经跟数据分布完全一致。那么有的人可能会问,做线性回归的目的不就是为了找到最符合数据走向的曲线么,为什么当我们拿到的结果跟数据走向完全匹配的时候反而不好呢?这是因为训练线性回归曲线或者线性分类器的目的是要对于其他数据集进行分类或者预测。如果在针对训练集做曲线拟合的时候做得过于“完美”,那么当我们针对于其他预测集进行预测的时候,这套模型很有可能会失准,因为这套模型在训练的时候过度地接近于训练集的特征,缺乏鲁棒性。所以在机器学习训练过程中,100%的拟合训练集数据并不一定是好的。

    通过前面的介绍,我们已经明白了过拟合发生的现象和原理,那么究竟是什么原因导致了过拟合问题的出现呢?原因可以总结为以下几种。

    • 训练数据集样本单一,如训练样本只有白色鸭子的数据,我们拿生成的模型去预测黑鸭子肯定是不对的。所以在做训练的过程中,要求训练样本要尽可能地全面,覆盖所有的数据类型。
    • 训练样本噪音数据干扰过大,噪音数据是指数据集中的干扰数据。过多的噪音数据会导致模型记录了很多噪音特征,忽略了输入和输出之间的关系。
    • 模型过于复杂,模型参数太多往往也是造成过拟合现象的一个重要因素。所以一个成熟的模型不一定是非常复杂的,而是要求模型对于不同的数据集都有稳定的输出表现。

    针对过拟合这样的常见性问题,其实已经有了很多预防和解决的办法如下所示。

    • 在训练和建立模型的时候,一定要从相对简单的模型开始,不要一上来就把模型调得非常复杂、特征非常多,这样很容易造成过拟合现象的发生。而且当模型过于复杂而造成过拟合现象发生之后,也比较难于排查具体的问题出在哪一部分特征。
    • 数据的采样,一定要尽可能地覆盖全部数据种类。另外,数据需要经过清洗后再进行算法训练,否则如果混入了大量噪声数据,会加大过拟合问题发生的概率。
    • 在模型的训练过程中,我们也可以利用数学手段预防过拟合现象的发生,可以在算法中添加惩罚函数来预防过拟合,这里如果想详细了解可以参考正则化 L1、L2 规范,本书就不对这部分内容展开来讲了。

    以上对于过拟合问题进行了基本的描述,而且也介绍了问题发生的原因以及预防的方法。因为过拟合问题是在使用机器学习算法的过程中非常有可能碰到的问题,所以掌握这方面的知识以及应对手段是非常重要的。希望通过本节的学习,大家可以在模型训练当中有意识地避免过拟合问题的发生。

    1.3.5 结果评估

    前文介绍了一些机器学习算法在具体数据挖掘过程中可能会遇到的一些概念和名词,我们知道机器学习算法的最终目的是生成模型,模型的好坏需要通过一些指标来评估,现在就来介绍一下在机器学习算法中可能用到的一些关于结果评估的概念。常用到的概念可能包括精确率、召回率、F1 值、ROC 和 AUC 几种,看上去概念有点多,因为每个指标都是从不同维度来对结果进行评估,下面将分别介绍这几个概念的含义。

    (1)精确率、召回率、F1 值。因为精确率(Precision)、召回率(Recall)和 F1(F-Measure)值常被放在一起作比较,所以把相关的这3个指标放在一起介绍。计算这3个指标还需要先了解下 TP、TN、FP 和 FN 这4个指标的含义。

    • TP(True Positive):本来是正样本,被模型预测为正样本。
    • TN(True Negative):本来是负样本,被模型预测为负样本。
    • FP(False Positive):本来是负样本,被模型预测为正样本。
    • FN(False Negative):本来是正样本,被模型预测为负样本。

    上面这4个概念读上去有点难以理解,我们通过一个实际的案例讲解一下。例如有一个预测集,里面有500个女生和100个男生,需要通过机器学习生成模型,尽可能地区分数据集中的女生,所以女生是正样本,假如我们最终的预测结果是70个女生和20个男生。下面计算精确率、召回率以及 F1 值,首先要计算 TP、TN、FP 和 FN 这4个值。在这个案例里面,TP 为本来是女生又被预测为女生的人数,所以 TP 的值为70;FP表示本来是男生被预测为女生的人数,FP 的值为20;FN 表示本来是女生但被预测为男生的人数,FN 的值为500−70=430。

    最终精确率、召回率、F1 值的公式如下。

    enter image description here

    通过上面的公式可以看出,其实精确率的概念通俗来讲就是模型在预测的时候正确的比例。召回率表示的是在预测到的正样例占全部正样例的比例。这可以看到精确率和召回率是对模型的两个维度的评估,前者评估的是准确性,后者评估的是覆盖率。当然在实际的模型评估中,我们希望精确率和召回率都尽可能高,但是实际上这两个指标是相互矛盾的,为了更均衡的评估精确率和召回率,我们创建了 F1 值。F1 值表达的是精确率和召回率的综合评估,现在很多的模型评估都是通过 F1 值来做,就是考虑到了 F1 值可以把这两个指标结合在一起来评估。

    (2)ROC 和 AUC。ROC(Receiver Operating Characteristic Curve)曲线是常用的二分类场景的模型评估算法曲线,ROC曲线的样例如图1-15所示。

    enter image description here

    图1-15 ROC 曲线

    图1-15中的齿状弧形曲线就是 ROC 曲线,这个曲线的横轴为上面提到的 FP 值,TP 值是纵轴。如何来评估模型的好坏呢?通过 ROC 曲线可以清晰地展示出来,只要是模型曲线越接近于左上角就说明模型的效果越好。通过 AUC 值来表示 ROC 曲线与横轴围起来的面积(也就是图1-15中有颜色覆盖的部分),这个 AUC 值越大表示模型的效果越好。AUC 的取值是0到1,通常大于0.5,当 AUC 的取值达到0.9以上时,证明这个模型的效果是比较不错的。

    上面介绍了 ROC 和 AUC 两个指标的概念,AUC 是通过 ROC 曲线计算出来的面积实现的。AUC 和 F1 值一样,都是通过一个数值来对于最终的结果进行评估的。ROC 的作用更多是通过对于曲线的光滑程度以及曲线的斜率来获取模型内包含的信息。

    1.4 本章小结

    本章作为全书的开篇章节,通过对于人工智能领域的发展历史引出了本书的主角——机器学习算法,其实机器学习算法已经贯穿了我们的日常生活,正是因为这些智能算法的普及,所以越来越多的人把目光瞄向了这一新生的技术。我们通过举例介绍了机器学习算法的发展现状,帮助读者梳理了这一学科的应用领域,另外通过对于一些基础概念的介绍,帮助初学者对于机器学习入门。有了上述背景,下面就正式开始对整个机器学习全流程的介绍。

    第02章:场景解析
    第03章:数据预处理(上)
    第03章:数据预处理(下)
    第04章:特征工程(上)
    第04章:特征工程(中)
    第04章:特征工程(下)
    第05章:机器学习算法——常规算法(上)
    第05章:机器学习算法——常规算法(中)
    第05章:机器学习算法——常规算法(下)
    第06章:机器学习算法——深度学习(上)
    第06章:机器学习算法——深度学习(下)
    第07章:常见机器学习工具介绍(上)
    第07章:常见机器学习工具介绍(中)
    第07章:常见机器学习工具介绍(下)
    第08章:业务解决方案(上)
    第08章:业务解决方案(中)
    第08章:业务解决方案(下)
    第09章:知识图谱(上)
    第09章:知识图谱(下)

    阅读全文: http://gitbook.cn/gitchat/geekbook/5a377733d7fd13649973b0dc

    展开全文
  • 机器学习9 -- 模型压缩加速

    万次阅读 2020-09-09 19:32:06
    近年来深度学习模型在计算机视觉、自然语言处理、搜索推荐广告等各种领域,不断刷新传统模型性能,并得到了广泛应用。随着移动端设备计算能力的不断提升,移动端AI落地也成为了可能。相比于服务端,移动端模型的优势...

    1 背景

    近年来深度学习模型在计算机视觉、自然语言处理、搜索推荐广告等各种领域,不断刷新传统模型性能,并得到了广泛应用。随着移动端设备计算能力的不断提升,移动端AI落地也成为了可能。相比于服务端,移动端模型的优势有:

    1. 减轻服务端计算压力,并利用云端一体化实现负载均衡。特别是在双11等大促场景,服务端需要部署很多高性能机器,才能应对用户流量洪峰。平时用户访问又没那么集中,存在巨大的流量不均衡问题。直接将模型部署到移动端,并在置信度较高情况下直接返回结果,而不需要请求服务端,可以大大节省服务端计算资源。同时在大促期间降低置信度阈值,平时又调高,可以充分实现云端一体负载均衡。
    2. 实时性好,响应速度快。在feed流推荐和物体实时检测等场景,需要根据用户数据的变化,进行实时计算推理。如果是采用服务端方案,则响应速度得不到保障,且易造成请求过于密集的问题。利用端计算能力,则可以实现实时计算。
    3. 稳定性高,可靠性好。在断网或者弱网情况下,请求服务端会出现失败。而采用端计算,则不会出现这种情况。在无人车和自动驾驶等可靠性要求很高的场景下,这一点尤为关键,可以保证在隧道、山区等场景下仍能稳定运行。
    4. 安全性高,用户隐私保护好。由于直接在端上做推理,不需要将用户数据传输到服务端,免去了网络通信中用户隐私泄露风险,也规避了服务端隐私泄露问题

    移动端部署深度学习模型也有很大的挑战。主要表现在,移动端等嵌入式设备,在计算能力、存储资源、电池电量等方面均是受限的。故移动端模型必须满足模型尺寸小计算复杂度低电池耗电量低下发更新部署灵活等条件。因此模型压缩和加速就成为了目前移动端AI的一个热门话题。

    模型压缩和加速不仅仅可以提升移动端模型性能,在服务端也可以大大加快推理响应速度,并减少服务器资源消耗,大大降低成本。结合移动端AI模型和服务端模型,实现云端一体化,是目前越来越广泛采用的方案。

    模型压缩和加速是两个不同的话题,有时候压缩并不一定能带来加速的效果,有时候又是相辅相成的。压缩重点在于减少网络参数量,加速则侧重在降低计算复杂度、提升并行能力等。模型压缩和加速是一个很大的命题,可以从多个角度优化。总体来看,个人认为主要分为三个层次:

    1. 算法应用层压缩加速。这个维度主要在算法应用层,也是大多数算法工程师的工作范畴。主要包括结构优化(如矩阵分解、分组卷积、小卷积核等)、量化与定点化、模型剪枝、模型蒸馏等。
    2. 框架层加速。这个维度主要在算法框架层,比如tf-lite、NCNN、MNN等。主要包括编译优化、缓存优化、稀疏存储和计算、NEON指令应用、算子优化等
    3. 硬件层加速。这个维度主要在AI硬件芯片层,目前有GPU、FPGA、ASIC等多种方案,各种TPU、NPU就是ASIC这种方案,通过专门为深度学习进行芯片定制,大大加速模型运行速度。

     

    2 算法层压缩加速

    2.1 结构优化

    2.1.1 矩阵分解

    将M x N的矩阵分解为M x K + K x N,只要让K<<M 且 K << N,就可以大大降低模型体积。比如在ALBERT的embedding层,就做了矩阵分解的优化。如下图
     

    矩阵分解示例



    其中M为词表长度,也就是vocab_size,典型值为21128。N为隐层大小,典型值为1024,也就是hidden_size。K为我们设置的低维词嵌入空间,可以设置为128。

    1. 分解前:矩阵参数量为 (M * N)
    2. 分解后:参数量为 (MK + KN)
    3. 压缩量:(M * N) / (MK + KN), 由于M远大于N,故可近似为 N / k, 当N=2014,k=128时,可以压缩8倍

     

    2.1.2 权值共享

    相对于DNN全连接参数量过大的问题,CNN提出了局部感受野和权值共享的概念。在NLP中同样也有类似应用的场景。比如ALBert中,12层共用同一套参数,包括multi-head self attention和feed-forward,从而使得参数量降低到原来的1/12。这个方案对于模型压缩作用很大,但对于推理加速则收效甚微。因为共享权值并没有带来计算量的减少。

     

    2.1.3 分组卷积

    在视觉模型中应用较为广泛,比如shuffleNet,mobileNet等。我们以mobileNet为例。对于常规的M输入通道,N输出通道,dk x dk的kernel size的卷积,需要参数量为 M x N x dk x dk。这是因为每个输入通道,都会抽取N种特征(对应输出通道数),不同的输入通道需要不同的kernel来做抽取,然后叠加起来。故M个输入通道,N个输出通道,就需要M x N个kernel了。

    mobileNet对常规卷积做了优化,每个输入通道,仅需要一个kernel做特征提取,这叫做depth wise。如此M个通道可得到M个feature map。但我们想要的是N通道输出,怎么办呢?mobileNet采用一个常规1 x 1卷积来处理这个连接,从而转化到N个输出通道上。总结下来,mobileNet利用一个dk x dk的depth wise卷积和一个1 x 1的point wise卷积来实现一个常规卷积。

    1. 分组前:参数量 (M x N x dk x dk)
    2. 分组后:参数量 (M x dk x dk + M x N x 1 x 1)
    3. 压缩量:(M x dk x dk + M x N x 1 x 1) / (M x N x dk x dk), 近似为 1/(dk x dk)。dk的常见值为3,也就是3*3卷积,故可缩小约9倍

    如下图所示

    在这里插入图片描述

    2.1.4 分解卷积

    1. 使用两个串联小卷积核来代替一个大卷积核。inceptionV2中创造性的提出了两个3x3的卷积核代替一个5x5的卷积核。在效果相同的情况下,参数量仅为原先的3x3x2 / 5x5 = 18/25
    2. 使用两个并联的非对称卷积核来代替一个正常卷积核。inceptionV3中将一个7x7的卷积拆分成了一个1x7和一个7x1, 卷积效果相同的情况下,大大减少了参数量,同时还提高了卷积的多样性。

     

    2.1.5 其他

    1. 全局平均池化代替全连接层。这个才是大杀器!AlexNet和VGGNet中,全连接层几乎占据了90%的参数量。inceptionV1创造性的使用全局平均池化来代替最后的全连接层,使得其在网络结构更深的情况下(22层,AlexNet仅8层),参数量只有500万,仅为AlexNet的1/12
    2. 1x1卷积核的使用。1x1的卷积核可以说是性价比最高的卷积了,没有之一。它在参数量为1的情况下,同样能够提供线性变换,relu激活,输入输出channel变换等功能。VGGNet创造性的提出了1x1的卷积核
    3. 使用小卷积核来代替大卷积核。VGGNet全部使用3x3的小卷积核,来代替AlexNet中11x11和5x5等大卷积核。小卷积核虽然参数量较少,但也会带来特征面积捕获过小的问题。inception net认为越往后的卷积层,应该捕获更多更高阶的抽象特征。因此它在靠后的卷积层中使用的5x5等大面积的卷积核的比率较高,而在前面几层卷积中,更多使用的是1x1和3x3的卷积核。

     

    2.2 量化

    2.2.1 伪量化

    深度学习模型参数通常是32bit浮点型,我们能否使用16bit,8bit,甚至1bit来存储呢?答案是肯定的。常见的做法是保存模型每一层时,利用低精度来保存每一个网络参数,同时保存拉伸比例scale和零值对应的浮点数zero_point。推理阶段,利用如下公式来网络参数还原为32bit浮点:

    在这里插入图片描述

    这个过程被称为伪量化

    伪量化之所以得名,是因为存储时使用了低精度进行量化,但推理时会还原为正常高精度。为什么推理时不仍然使用低精度呢?这是因为一方面框架层有些算子只支持浮点运算,需要专门实现算子定点化才行。另一方面,高精度推理准确率相对高一些。伪量化可以实现模型压缩,但对模型加速没有多大效果。

     

    2.2.2 聚类与伪量化

    一种实现伪量化的方案是,利用k-means等聚类算法,步骤如下:

    1. 将大小相近的参数聚在一起,分为一类。
    2. 每一类计算参数的平均值,作为它们量化后对应的值。
    3. 每一类参数存储时,只存储它们的聚类索引。索引和真实值(也就是类内平均值)保存在另外一张表中
    4. 推理时,利用索引和映射表,恢复为真实值。

    过程如下图

    在这里插入图片描述


    从上可见,当只需要4个类时,我们仅需要2bit就可以实现每个参数的存储了,压缩量达到16倍。推理时通过查找表恢复为浮点值,精度损失可控。结合霍夫曼编码,可进一步优化存储空间。一般来说,当聚类数为N时,我们压缩量为 log(N))] / 32

     

    2.2.3 定点化

    与伪量化不同的是,定点化在推理时,不需要还原为浮点数。这需要框架实现算子的定点化运算支持。目前MNN、XNN等移动端AI框架中,均加入了定点化支持。

     

    2.3 剪枝

    2.3.1 剪枝流程

    剪枝归纳起来就是取其精华去其糟粕。按照剪枝粒度可分为突触剪枝神经元剪枝权重矩阵剪枝等。总体思想是,将权重矩阵中不重要的参数设置为0,结合稀疏矩阵来进行存储和计算。通常为了保证performance,需要一小步一小步地进行迭代剪枝。步子大了,容易那个啥的,大家都懂的哈。

    常见迭代剪枝流程如下图所示

    在这里插入图片描述

    1. 训练一个performance较好的大模型
    2. 评估模型中参数的重要性。常用的评估方法是,越接近0的参数越不重要。当然还有其他一些评估方法,这一块也是目前剪枝研究的热点
    3. 将不重要的参数去掉,或者说是设置为0。之后可以通过稀疏矩阵进行存储。比如只存储非零元素的index和value
    4. 训练集上微调,从而使得由于去掉了部分参数导致的performance下降能够尽量调整回来
    5. 验证模型大小和performance是否达到了预期,如果没有,则继续迭代进行。

     

    2.3.2 突触剪枝

    在这里插入图片描述

    突触剪枝剪掉神经元之间的不重要的连接。对应到权重矩阵中,相当于将某个参数设置为0。常见的做法是,按照数值大小对参数进行排序,将大小排名最后的k%置零即可,k%为压缩率。如下图

    在这里插入图片描述

     

    2.3.3 神经元剪枝

    在这里插入图片描述

    神经元剪枝则直接将某个节点直接去掉。对应到权重矩阵中,相当于某一行和某一列置零。常见做法是,计算神经元对应的一行和一列参数的平方和的根,对神经元进行重要性排序,将大小排名最后的k%置零。如下图

    在这里插入图片描述

    2.3.4 权重矩阵剪枝

    除了将权重矩阵中某些零散的参数,或者整行整列去掉外,我们能否将整个权重矩阵去掉呢?答案是肯定的,目前也有很多这方面的研究。NeurIPS 2019有篇文章,Are Sixteen Heads Really Better than One?, 深入分析了BERT多头机制中每个头到底有多大用,结果发现很多头其实没啥卵用。他在要去掉的head上,加入mask,来做每个头的重要性分析。

    作者先分析了单独去掉每层每个头,WMT任务上bleu的改变。发现,大多数head去掉后,对整体影响不大。如下图所示

    在这里插入图片描述

    然后作者分析了,每层只保留一个最重要的head后,ACC的变化。可见很多层只保留一个head,performance影响不大。如下图所示

    在这里插入图片描述

    由此可见,直接进行权重矩阵剪枝,也是可行的方案。相比突触剪枝和神经元剪枝,压缩率要大很多。

     

    2.4 蒸馏

    2.4.1 蒸馏流程

    蒸馏本质是student对teacher的拟合,从teacher中汲取养分,学到知识,不仅仅可以用到模型压缩和加速中。蒸馏常见流程如下图所示
    在这里插入图片描述

    1. 老师和学生可以是不同的网络结构,比如BERT蒸馏到BiLSTM网络。但一般相似网络结构,蒸馏效果会更好。
    2. 总体loss为 soft_label_loss + hard_label_loss。soft_label_loss可以用KL散度或MSE拟合
    3. soft label为teacher模型的要拟合的对象。可以是predic输出,也可以是embeddings, 或者hidden layer和attention分布。

    针对软标签的定义,蒸馏的方案也是百花齐放,下面分享两篇个人认为非常经典的文章。

     

    2.4.2 distillBERT

    DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter

    distillBERT由大名鼎鼎的HuggingFace出品。主要创新点为:

    1. Teacher 12层,student 6层,每两层去掉一层。比如student第二层对应teacher第三层
    2. Loss= 5.0 x Lce + 2.0 x Lmlm + 1.0 x Lcos,
      Lce: soft_label的KL散度
      Lmlm: mask LM hard_label的交叉熵
      Lcos:hidden state的余弦相似度

    DistilBERT 比 BERT 快 60%,体积比 BERT 小 60%。在glue任务上,保留了 95% 以上的性能。在performance损失很小的情况下,带来了较大的模型压缩和加速效果。
    在这里插入图片描述

     

    2.4.3 tinyBERT

    TinyBERT: Distilling BERT for Natural Language Understanding

    总体结构

    重点来看下tinyBERT,它是由华为出品,非常值得深入研究。tinyBERT对embedding层,transformer层(包括hidden layer和attention),prediction层均进行了拟合。如下图

    在这里插入图片描述

    其中Embeddings采用MSE, Prediction采用KL散度, Transformer层的hidden layer和attention,均采用MSE。loss如下
    在这里插入图片描述
    其中m为层数。

     

    效果分析

    在这里插入图片描述

    表2: glue任务上的performance。在glue任务上,可达到bert-base的96%,几乎无损失。
    表3: tinyBERT模型大小和推理速度。缩小7.5倍加速9.4倍。压缩和加速效果十分明显。

     

    消融分析

    在这里插入图片描述

    表6:分析embedding、prediction、attention、hidden layer软标签作用,其中attention和hidden layer作用最大。这个也很好理解,transformer层本来就是整个BERT中最关键的部分。

     

    在这里插入图片描述

    表7:分析老师学生不同层对应方法的效果,uniform为隔层对应,top为全部对应老师顶部几层,bottom为全部对应老师底部几层。Uniform效果明显好很多。这个也很好理解,浅层可以捕捉低阶特征,深层可以捕捉高阶特征。全是低阶或者高阶显然不合适,我们要尽量荤素搭配。

     

    3 框架层加速

    3.1 手机端AI能力

    目前移动端AI框架也比较多,包括谷歌的tf-lite,腾讯的NCNN,阿里的MNN,百度的PaddleLite, 小米的MACE等。他们都不同程度的进行了模型压缩和加速的支持。特别是端上推理的加速。 手机端AI性能排名
    在这里插入图片描述

    3.2 端侧AI框架加速优化方法

    个人总结的主要方法如下,可能有遗漏哈,各位看官请轻拍

    1. 基于基本的C++编译器优化
      a. 打开编译器的优化选项,选择O2等加速选项
      b. 小函数内联,概率大分支优先,避免除法,查表空间换时间,函数参数不超过4个等
    2. 利用C,而不是C++,C++有不少冗余的东西
    3. 缓存优化
      a. 小块内存反复使用,提升cache命中率,尽量减少内存申请。比如上一层计算完后,接着用作下一层计算
      b. 连续访问,内存连续访问有利于一次同时取数,相近位置cache命中概率更高。比如纵向访问数组时,可以考虑转置后变为横向访问
      c. 对齐访问,比如224224的尺寸,补齐为256224,从而提高缓存命中率
      d. 缓存预取,CPU计算的时候,preload后面的数据到cache中
    4. 多线程
      a. 为循环分配线程
      b. 动态调度,某个子循环过慢的时候,调度一部分循环到其他线程中
    5. 稀疏化
      a. 稀疏索引和存储方案,采用eigen的sparseMatrix方案
    6. 内存复用和提前申请
      a. 扫描整个网络,计算每层网络内存复用的情况下,最低的内存消耗。推理刚开始的时候就提前申请好。避免推理过程中反复申请和释放内存,避免推理过程中因为内存不足而失败,复用提升内存访问效率和cache命中率。
    7. ARM NEON指令的使用,和ARM的深度融合。NEON可以单指令多取值(SIMD),感兴趣可针对学习,这一块水也很深。
    8. 手工汇编,毕竟机器编译出来的代码还是有不少冗余的。可以针对运行频次特别高的代码进行手工汇编优化。当然如果你汇编功底惊天地泣鬼神的强,也可以全方位手工汇编。
    9. 算子支持:比如支持GPU加速,支持定点化等。有时候需要重新开发端侧的算子。

     

    4 硬件层加速

    硬件层加速小编就连半瓢水都达不到了,为了保证整个方案的全面性,还是硬着头皮东施效颦下。目前AI芯片厂家也是百花齐放,谁都想插一脚,不少互联网公司也来赶集。如下图所示
    在这里插入图片描述

    AI 芯片目前三种方案。GPU目前被英伟达和AMD牢牢把控。ASIC目前最火,TPU、NPU等属于ASIC范畴。

    在这里插入图片描述

    展开全文
  • 物联网安全:基于机器学习、人工智能区块链技术的挑战解决方案背景介绍物联网IoT基础设施物联网协议IoT 应用物联网面临的攻击三种技术下的物联网安全调研区块链机器学习人工智能物联网当前的挑战 背景介绍 ...

    背景介绍

    物联网(IoT)是过去十年在各种应用中使用最快的技术之一。智能设备通过无线或有线连接,用于通信、处理、计算和监控不同的实时场景。这些东西是异构(种类繁多,生产厂家不一而性能差距非常大)的,内存低,处理能力差。物联网系统的实施伴随着安全和隐私方面的挑战,因为基于传统的现有安全协议不适合物联网设备。
    本文将说明物联网的主要的安全问题CIA(机密、完整性、可用性)和分层问题题。然后,调查了多种用于解决物联网安全问题的机器学习(ML)、人工智能(AI)和区块链三种主要技术。并在最后说明三项技术的局限性。

    物联网

    物联网(IoT)是在互联网上共享信息的智能万物构建的联网。智能设备用于部署在不同的环境中来捕获信息,并触发一些事件。物联网的应用包括智慧城市、智能家居、智能交通系统、农业、医院、供应链系统、地震检测、智能电网系统等。
    在这里插入图片描述
    据思科估计,到2020年底,联网设备数量将达到500亿。随着物联网设备的增长,它正迅速跨越世界人口总数。物联网设备产生的数据是巨大的。在传统物联网中,架构分为物理、网络和应用层三种类型。在物理层,设备被嵌入某种技术,通过这种技术,它们可以感知环境,也可以通过有线或无线连接到其他设备。就像智能家居系统一样,冰箱可以在水果柜清空时自动向注册零售商下订单,并将通知发送给家庭用户。智能医院患者的相似性可以在紧急情况下通过传感器和相应的计算设备进行监测。由于传感器属于低端设备,计算能力较低,且具有异构特性。物联网的实现伴随着许多挑战。
    标准化、互操作性、数据存储、处理、信任管理、身份、机密性、完整性、可用性、安全性和私密性等属性均属于物联网现有的挑战。物联网在不同的实时应用中具有很大的应用潜力。它集传感器、智能设备、射频识别(RFID)和互联网于一体,构建智能系统。Goldman Sachs估计到2020年,280亿个智能设备将连接到一个不同的网络。在过去十年中,物联网的发展融合了从传感器到云计算以及雾/边缘计算的一切。物联网具有不同类型的网络,如分布式、普适性、网格和车联网。像传感器部署在危急病人的身体来监测,监测气体泄漏智能厨房,农业领域、智能停车场、智能交通、跟踪货物详细信息在供应链系统中使用传感器的车辆。传感器是通过有线或无线跨异构网络连接的资源受限设备。物联网网络具有不同的安全性和私密性,容易受到攻击。

    IoT基础设施

    在这里插入图片描述
    物联网分为物理层、网络层和应用层。最近工业发展的很多东西都嵌入了智能的东西(IIoT)。物联网基础设施不仅包括传感器,还集成了一些新兴技术。物联网应用是基于物联网云或物联网雾云。为了高效的物联网应用,需要解决数据隐私、D2D通信,实时监控和物联网试验台等安全问题。物联网的架构可以是集中式、分布式、分散式结构。在物联网应用中,实时处理和计算是最具挑战性的问题之一。云计算提供了更多的存储空间,保证了数据的安全性。但近年来,大多数实时监控物联网应用都要求在网络边缘进行处理和计算。从而可以迅速采取行动,如监测严重病人的健康状况,火灾检测。当使用雾设备在网络边缘进行处理和计算时,由于它们的设备是轻量级设备,传统的安全措施并不适用,因此更容易受到攻击者的攻击。在分析数据时,最近使用了一种类似机器学习的技术,使物联网系统在决策时更加智能和独立。将不同的智能设备连接起来,使用一些标准协议来创建一个应用程序。物联网基础设施存在安全问题,需要解决这一问题,以建立终端用户之间的信任,并使系统防篡改。物联网系统中的数据互操作性使用智能算法工作。

    物联网协议

    物联网的基本架构是一个四层网络。每一层都包含如下所示的一些标准协议
    在这里插入图片描述
    依次展开讲解:

    • MQTT: MQTT为MQ遥测传输。它是一种简单易用的发布/订阅消息传递协议,专为受限设备和低带宽、高延迟或不可靠的网络设计。设计原则是尽量减少对网络带宽和设备资源的要求,同时努力确保可靠性和某种程度的交付保证。这些原则也使该协议成为新兴的低端连接设备“机器对机器”(M2 M)或“物联网”世界的理想协议。

    • CoAP:约束应用协议(Constrained Application Protocol, CoAP),在RFC 7252中定义,是针对受限设备的专用Internet应用协议。它允许那些被称为“节点”的受限设备使用类似的协议与更广泛的网络进行通信互联网。CoAP被设计用于同一网络上的设备。

    • REST: REST代表状态转移成员。REST是一种基于web标准并使用HTTP协议的架构。它围绕着资源展开,其中每个元素都是资源,并且通过特定接口使用标准HTTP方法访问资源。Roy Fielding在2000年引入了REST。REST服务器提供对REST体系结构中的资源的访问,REST用户访问和修改资源。在这里,URIs /全局id对每个资产进行分类。REST使用各种表示来描述资源,如文本、JSON、XML

    • AMQP: 用于在应用程序或组织之间传输业务消息的开放标准是高级消息队列协议(AMQP)。它连接系统,为业务流程提供所需的信息,并可靠地转发实现其目标的指令。

    • TCP: 老熟人,传输控制协议(TCP)是一种面向连接的通信协议,它提供了在网络中计算机设备之间交换消息的工具。

    • UDP: 老熟人,传输层协议是用户数据报协议(UDP)。UDP是互联网协议套件的一部分,称为UDP/ IP。与TCP一样,该协议也不稳定且无连接

    • DCCP:DCCP提供了一种访问拥塞控制机制的方法,而不必在应用层实现它们。它允许传输控制协议(TCP)中的基于流的半导体,但不提供可靠的按订单交付。与流控制一样,在DCCP中不可能在多个流之间进行顺序传输传输协议(SCTP)。DCCP链路既需要网络确认,也需要数据流量。鸣谢通知发送者他们的数据包已经到达,以及他们是否被贴上了明确的Conges通知

    • SCTP: 流控制传输协议(SCTP)是一种计算机网络通信协议,在传输层操作,与流行的TCP和UDP协议具有类似的作用。它在rfc4960中由IETF定义。SCTP合并了UDP和TCP的一些特性:它像UDP一样是面向消息的,并确保像TCP一样安全、顺序拥塞控制的消息传输。与其他协议不同的是,它提供了多归属和冗余路径,以提高弹性和可靠性

    • RSVP:资源预留协议(RSVP)是一个传输层[1]协议,旨在使用分布式基础设施模型在网络上预留资源。RSVP在IPv4或IPv6上工作,并为接收方发起的多播或单播数据流设置资源预留。它不从应用程序传输数据,但类似于控制协议,如ICMP (Internet control Message protocol)或IGMP (Internet Group Management protocol)。请参阅rfc2205。

    • QUIC:QUIC是一种通用网络层协议,最初由谷歌的Jim Roskind设计,于2012年引入并部署,2013年作为一个扩展实验公开宣布,并由IETF定义。同时还是一个Internet-Draft,超过一半的Chrome浏览器连接到谷歌的服务器使用QUIC。大多数其他网络浏览器不遵循协议

    • CLNS: 无连接模式网络服务(CLNS)或简单的无连接网络服务是OSI的网络层数据报服务,在数据传输之前不需要建立电路,并且独立于任何其他消息将消息路由到它们的目的地。CLNS不是Internet服务,但提供了类似于OSI网络环境中Internet协议(IP)和用户数据报协议(UDP)提供的特性。

    • DDP: 分布式数据协议(DDP)是一种客户-服务器协议,设计用于查询和更新服务器端数据库,并在客户端之间同步更新。它使用发布-订阅的消息传递模式。流星JavaScript应用程序开发使用。

    • ICMP: 无连接模式网络服务(CLNS)或简单的无连接网络服务是OSI的网络层数据报服务,它不允许在数据传输之前建立电路,并独立于任何其他消息将消息路由到它们的目的地。因此,它是一种最好的努力,而不是“可靠的”交付服务。CLNS不是Internet服务,但提供与OSI网络环境中的Internet协议(IP)和用户数据报协议(UDP)类似的功能。

    • DSI: 数字串行接口(DSI)是一种用于调节建筑物照明(最初是电子镇流器)的协议。它是基于曼彻斯特编码8位协议,1200波特率,1开始位,8数据位(昏暗值),4停止位,是更先进的数字可寻址照明接口(DALI)协议的基础。该技术使用单个字节(0-255或0x00-0xFF)来通信照明级别。DSI是第一次使用数字通信来控制照明,也是DALI的前身。

    • ISDN: 综合业务数字网(ISDN)是一套通信标准,用于在公共交换电话网的传统电路上同时进行语音、视频、数据和其他网络业务的数字传输。综合业务数字网的主要特点是将语音和数据集成在同一条线路上,增加了传统电话系统所没有的功能。在物联网设备的应急模式下,ISDN设施是有用的。
      在这里插入图片描述

    • Application: 物联网应用在许多领域都得到了发展。许多开源平台的开发,比如Azure物联网套件、IBM Watson、Amazon Web Services (AWS)、Oracle IoT、Kaa、Bevywise用于工业物联网平台、IoTIFY用于构建可扩展物联网应用的云平台。大部分开源平台都启用了人工智能和ML技术,对信息进行智能处理和计算。能够读取、处理和计算事物的智能设备的制造,使物联网成为一个新兴领域。物联网的应用领域很多,如图2所示。在这八个不同的应用领域中,物联网已经对提升和提高系统的效率产生了影响。

    IoT 应用

    在这里插入图片描述

    1. Smart Home:物联网使传统家庭系统成为智能家庭系统。冰箱、智能电视、安全摄像头、气体传感器、温度传感器、灯光系统都可以感知家庭环境,通过有线或无线连接互联网。即使是冰箱也可以向注册的零售店下订单,并通知用户。由于智能事物的发展,生活水平变得更加舒适。一个基于物联网技术的智能家居系统通过使用物联网和Fog计算等技术,家庭监控可以远程完成,处理也可以立即完成。设备认证对于防止对物联网网络的不必要访问至关重要。
      在这里插入图片描述

    2. Smart Hospital: 由于利用传感器和雾/边缘计算,物联网患者实时监测的发展成为可能。在医疗保健系统中,隐私是主要问题之一,因此需要开发适当的安全和隐私协议来保证系统的安全。
      在这里插入图片描述

    3. Smart City: 不断发展的城市有很多问题,如交通管理,垃圾管理,垃圾管理,环境管理。城市需要一个监测和控制问题存在的解决方案。利用物联网和相关技术,可以开发一个智慧城市,以提高城市的生活水平,维护公民的安全和隐私问题。
      在这里插入图片描述

    4. Smart transportation: 近年来,交通是城市的主要问题之一。智能交通系统是时代的需要。通过物联网,车辆可以从路边单元收集信息并进行处理,以获得有关旅程路径、时间和交通细节的详细信息。一些研究工作利用物联网解决了智能交通问题。如利用内置的移动传感器和机器学习来检测路面状况
      在这里插入图片描述

    5. Smart grid: 智能电网是物联网的应用领域之一,其中电网系统可以通过物联网实现自动化。可以实时监控用户之间的发电和配电情况。在智能电网系统中使用物联网技术可以提高效率、经济和分布。

    6. Supply chain system:物联网智能设备一旦用于供应链管理系统,可以从根本上改变传统的运输系统监控方式。通过使用物联网技术,可以很容易地定位材料、它们的当前状况、包装细节,而且很容易跟踪货物在供应链中的移动情况。它能保持良好的需求-供应,易于监控物料的运动,实时跟踪,高效存储,节能高效配送

    7. Smart retails :零售部门还使用物联网服务和人工智能来提高生产率,改善商店运营,并实时决策管理库存系统。

    8. Agriculture: 农业是物联网最有前景的应用领域之一。在智能农业系统中,通过部署传感器来监测土壤质量、水管理、作物生长状况等,通过减少时间和成本提高耕作效率。在实时情况下,用户可以从远程位置监视所有细节。农业领域存在一些安全问题,如移动性、基础设施和收集数据的安全处理

    物联网面临的攻击

    网络攻击类型
    Jamming attack干扰攻击是DoS攻击的一个子集,攻击者试图影响通信信道
    Dos attackDos攻击是物联网应用中常见的攻击之一。大多数物联网设备都是低端设备,容易受到攻击。攻击者通过设备连接或基础设施获取数据流。DoS (Denial of service)攻击,是一种针对应用中存在的节点的海量网络数据包,实时导致业务中断
    Intrusion detection system(IDS)入侵检测系统(IDS)是攻击者控制网络流量的过程。IDS攻击分为误用检测、异常检测、基于主机的IDS和基于网络的IDS。
    Malicious node attack由于智能设备的异构特性,在分布式物联网网络中可能会发生恶意节点攻击。识别网络中的天才节点或假节点是一个具有挑战性的问题。在[Detection of multiple-mix-attack malicious nodes using perceptron-based trust in IoT networks]论文中,作者提出了感知和k -均值来建立节点间的信任,并检测恶意节点。
    Power analysis attack这种攻击主要是为了获得节点的计算能力,使基本的密码算法无法执行。在物联网网络中,还需要维护隐私,以在节点之间建立信任。
    Man-in-the-middle attack中间人攻击(MIMD),攻击者在不安全的信道中传递或更改消息
    DDOS attack分布式Dos攻击是指服务器不可达,使得网络中的智能节点无法得到它想要得到的服务的过程
    Side channel security是一种利用计算机不经意间释放出的信息信号(如功耗,电磁辐射,电脑硬件运行声)来进行破译的攻击模式
    Wormhole attack虫洞攻击发生在6LoWPAN层,攻击者在连接的两个节点之间建立隧道
    Internal attack一般指拥有合法身份的节点在内部环境下的恶意行为
    Access Control Attack访问控制攻击通常绕过或绕过访问控制方法来窃取数据或用户凭据。通过收集后者,对手可以以授权用户的身份登录并访问其资源,从而安全地破坏访问控制
    Sybil attack同一个用户拥有不同身份,可以通过不同身份进行一些不公平操作
    Buffer overflow attacks缓冲区溢出攻击是在内存空间不足的内存块中编写程序的过程。A物联网网络中,当节点在设备中执行不同的程序进行处理或计算时,攻击者可以捕获这些程序并进行内存溢出攻击。
    Impersonation attacks模仿攻击是一个假节点,其行为就像网络中的一个天才节点,并试图从其他节点获取信息。在智能设备是异构和低端设备的物联网应用中,这是最具挑战性的问题之一。模拟攻击通常涉及似乎来自可信来源的电子邮件。有时,电子邮件攻击可能以看起来像是来自首席执行官、首席财务官或其他高层管理人员的消息开始——这些骗局也被称为捕鲸电子邮件攻击。假冒攻击还可能涉及似乎来自可信同事、第三方供应商或其他知名互联网品牌的消息。该消息可能要求收件人发起向银行账户或供应商的转账,但后来证明是欺诈的,或者它可能要求收件人发送信息
    Active attack主动攻击是指试图对系统进行未经授权的更改
    Router attack路由器攻击是指有人利用路由器软件和身份验证过程中的漏洞或不一致
    Spoofing attack在信息安全,特别是网络安全的背景下,欺骗攻击是指一个人或程序通过伪造数据成功地识别为另一个人,从而获得非法优势的情况。

    三种技术下的物联网安全调研

    区块链

    在这里插入图片描述
    区块链技术是一个分散/分布的网络,其中每个人都以某种方式连接到其他人。消息在区块链网络中广播。基于区块链技术的分布式体系结构如图7所示,物联网的应用程序。一个块由许多有效的事务及其相关属性组成。智能合约是用于实现网络业务逻辑的自执行程序。区块链网络采用不同的共识算法来满足节点之间的共识。Satapathy等人提出了一个安全的互联网框架,基于分布式区块链系统的应用程序。
    区块链是研究人员最近致力于解决物联网应用安全问题的最有前途的技术。

    相关论文:

    论文核心内容
    Blockchain for IoT security and privacy: The case study of a smart home本文提出了一种基于分布式区块链的模型。提出的系统一个矿工被用来控制智能家庭内部的通信和外部源。该框架对基本安全目标是安全的。
    On blockchain and its integration with IoT. challenges and opportunities作者评估了在物联网设备上使用区块链节点的可行性
    Blockchain technology: a survey on applications and security privacy challenge作者提出了一种基于分布式账本的区块链(DL-BC)技术,以解决物联网中的安全和隐私问题,如欺骗、虚假认证。
    Blockchain technology for security issues and challenges in IoT提出分布式智能,执行实例决策,减少向云的不必要数据传输,解决物联网范式中的各种安全挑战。
    Towards security on internet of things: applications and challenges in technology作者提出了一种基于区块链的受损固件检测和自修复方法,可部署在物联网环境中进行安全数据集共享。
    Blockchain-based secure time protection scheme in IoT作者提出了一种基于区块链的安全方案来解决物联网中的时间公告问题。
    Security attacks in named data networking of things and a blockchain solution提出了物联网命名数据网络(NDN)架构和区块链解决方案,以应对安全攻击
    Towards decentralized IoT security enhancement: blockchain approach&&A novel approach to solve security and privacy issues for IoT applications using blockchain作者提出了一种基于区块链的高级安全管理方案物联网设备
    Blockchain technologies for IoT作者探讨了在物联网应用中集成区块链技术的主要好处和设计挑战。
    On the activity privacy of blockchain for IoT作者提出了设备分类方法,将机器学习算法应用于存储在区块链网络中的数据,从而有助于通过检测未经授权的设备来提高物联网环境的安全性。
    Trust management in decentralized IoT access control system作者提出了一个信任管理框架,用于提供安全可靠的访问控制,并检测和删除去中心化物联网系统中的恶意和受损节点
    Spb: a secure private blockchain-based solution for distributed energy trading作者提出了一种基于区块链的安全私有框架(SPB),利用该框架,能源生产者之间可以就能源价格进行谈判,并以分布式方式进行能源交易,以实现智能电网物联网应用
    Productchain: scalable blockchain framework to support provenance in supply chains作者提出了一个基于许可区块链的框架来寻找供应链产品的来源
    Trustchain: trust management in blockchain and IoT supported supply chains作者提出了一个三层信任管理框架——TrustChain,该框架基于区块链联盟来跟踪供应链参与者之间的互动,并根据这些互动动态地分配信任和信誉评分。
    Speedychain: a framework for decoupling data from blockchain for smart cities作者提出了一个高尚的基于区块链的框架,为智能车辆提供一个私人和安全的通信模型,这样它们就可以信任它们接收到的数据是由可信节点生成的。
    Blockchain-based system for secure outsourcing of bilinear pairings作者提出了一个受许可的区块链架构来处理基于配对的密码协议中最昂贵的计算,即双线性配对(SOBP)的安全外包。
    Towards secure industrial IoT: blockchain system with credit-based consensus mechanism作者在区块链中提出了一种基于信用的物联网设备工作证明(PoW)机制,可以保证系统安全和交易效率。
    Perspectives on emerging directions in using IoT devices in blockchain applications作者调查了一些正在使用区块链实现的有前途的应用程序,并概述了克服众多挑战的解决方案。
    PUF-derived IoT identities in a zero-knowledge protocol for blockchain提出了一种针对物联网设备的防伪方法,利用存储芯片的特性来派生与区块链相结合的密码秘密,以对设备身份进行可信和可靠的验证
    Blockchain based searchable encryption for electronic health record sharing提出了一种基于区块链的可搜索加密电子健康记录(ehr)共享方案,使用智能合约执行可靠和机密的搜索。
    Blockchain based privacy-preserving software updates with proof-of-delivery for internet of things作者提出了一种基于区块链的隐私保护软件更新协议,在不损害相关用户隐私的情况下,通过激励机制执行安全可靠的更新。
    Best: blockchain-based secure energy trading in SDN-enabled intelligent transportation system作者提出了一种基于区块链的能源交易方案,利用能源币在智能交通系统(ITS)中进行安全的能源交易

    机器学习

    在这里插入图片描述
    机器学习是一种智能执行计算的技术。模型需要使用不同的学习方法进行设计和测试。图3和图4描述了机器学习功能和与物联网应用集成的基本原理。物联网的应用有很多。一些应用需求是应该在实际事件发生之前做出决定。例如,预测厨房或任何工业区域的火灾,并发出警报以防止火灾。如果机器学习技术被用于物联网的应用程序。此外,它需要解决物联网系统中存在的安全问题,以使系统防篡改。
    在这里插入图片描述
    使用机器学习技术处理和计算庞大的数据收集需要一个高效的框架。如在智能电网应用机器学习时相关的安全问题、物联网应用中的入侵检测。机器学习技术分为有监督和无监督两种。物联网应用产生海量信息。在数据计算完成之前,数据需要经过验证过程,以避免任何恶意数据或冗余数据。

    相关论文整理:

    论文核心内容
    Framework for Mobile Internet of Things Security Monitoring Based on Big Data Processing and Machine Learning作者提出了一个使用大数据处理和ML来监控移动物联网安全的框架
    Application of big data and machine learning in smart grid, and associated security concerns: a reviewML方法在智能电网生成的大数据上的应用,提取有用信息,检测和保护数据免受网络安全威胁
    Network intrusion detection for IoT security based on learning techniques基于ML算法的物联网环境下网络入侵检测系统(NIDS)综述。
    A supervised intrusion detection system for smart home IoT devices作者提出了一个三层入侵检测系统(IDS),利用ML的监督学习方法来区分恶意或良性的网络活动,并检测基于网络的网络攻击,如DoS、MITM/Spoofing、Replay和Reconnaissance,还可以检测对物联网网络的多级攻击。
    hysical-layer authentication based on extreme learning machine提出了一种基于极限学习机(ELM)的物理层认证方案改进欺骗检测精度的二维测量空间。
    Machine learning-based malicious application detection of android提出了一种基于ml的恶意应用检测工具,利用朴素贝叶斯、J48决策树作为分类器模型,实时检测Android设备中的恶意应用。
    Securing the internet of things in the age of machine learning and software-defined networking使用ML和软件定义的网络实现了自主和自适应的检测机制(SDN)的物联网安全框架,以处理物联网系统的不稳定行为和异构问题。
    Machine learning for internet of things data analysis: a survey介绍了不同的ML方法,可应用于基于智能城市等物联网系统环境中生成的数据,以提取更高级别的信息。
    Swarm intelligence-based algorithms within IoT-based systems: a review提出了一种可靠、可扩展、鲁棒的基于集群智能(SI)的物联网系统,以克服物联网系统的动态和异构行为问题。
    Deep learning with dense random neural network for detecting attacks against IoT-connected home environments作者通过分析物联网网关的流量交换,提出了一种基于密集随机神经网络(RNN)的深度学习技术。用于在线检测网络攻击,如TCP SYN攻击,即各种DoS (deny -of-service)攻击。
    Semi-supervised learning based distributed attack detection framework for IoT提出了一种基于分布式雾的鲁棒实时攻击检测框架物联网依赖于雾计算范式和新提出的基于elm的方法半监督模糊c均值(ESFCM)。极限学习机(ELM)算法具有较好的泛化性能和较快的检测速度,半监督模糊c均值法处理物联网中的标记数据问题
    A darknet traffic analysis for IoT malwares using association rule learning提出了一种新的暗网分析方法,利用关联规则学习的方法,利用大量的暗网报文,找出特定的扫描攻击即TCP SYN报文的流量模式。
    Machine learning based trust computational model for IoT services提出了一种新的可量化智能信任评估模型算法,以克服潜在的歧视问题。使用ML的支持向量机模型,数据分析是对诸如位置、兴趣和活动等微妙信息进行的。这个过程为可能的参与者生成准确和固有的信任值。它根据与物联网环境相对应的几个信任特性,帮助确定传入的交互是否值得信任
    IoT-based healthcare monitoring system for war soldiers using machine learning作者提出了一种实时监测健康参数的系统,用于探测附近的炸弹和预测战区环境。使用各种传感器收集数据,像LoRaWAN和ZigBee这样的网络基础设施将这些数据传输到云和K-Means聚类机器学习算法分析数据。
    Deep learning and software-defined networks: towards secure IoT architecture提出了一种基于深度学习(DL)的入侵检测系统安全框架-基于SDN的物联网的受限玻尔兹曼机器(RBM)。
    A machine learning based robust prediction model for real-life mobile phone data作者提出了一种基于规则的机器学习分类技术,即在无噪声质量数据集上的决策树,用于真实手机用户数据的稳健预测模型。利用朴素贝叶斯分类器和拉普拉斯估计器去除数据中的噪声实例,提高模型的预测精度。
    Machine learning based network vulnerability analysis of industrial internet of things提出了一种基于ml的异常检测系统,该系统可以检测工业领域的后门、命令注入和结构化查询语言注入等网络攻击物联网设备
    Attack and anomaly detection in IoT sensors in IoT sites using machine learning approaches作者比较了各种ML模型的性能,如Logistic回归(LR)、支持向量机(SVM)、决策树(DT)、随机森林(RF)和人工神经、用于预测攻击,如DoS,数据类型探测,恶意控制,恶意操作,扫描,间谍和错误的设置,和异常物联网系统准确。
    Groundwork for neural network-based specific emitter identification authentication for IoT介绍了基于神经网络的特定辐射源识别的初步工作(SEI)在物联网设备上使用原始的同相和正交(IQ)流,并使用协议进行安全保护物联网网络通过提供额外的安全和信任层。

    人工智能

    在这里插入图片描述

    具有传感和行动能力的智能设备的创新,使物联网系统的可用性得到广泛应用。由于连接到网络的设备数量巨大,产生了大量的数据。在物联网环境中处理和执行计算是一项具有挑战性的任务。因此,人工智能和其他一些新兴技术一起成为解决物联网安全问题的救星。如图5所示,物联网和人工智能可以结合起来提高系统的分析,提高运行效率,提高准确率。人工智能可以帮助物联网海量、非结构化、异构数据的实时计算,使系统具有现实性。比如大余弦估计(LMCE)技术来检测物联网环境中的对手和恶意软件检测工作在物联网系统中使用。
    在这里插入图片描述
    上图展示了物联网和人工智能与一些基本功能的集成。
    人工智能和物联网的结合已经完成了一些工作,研究人员指出,人工智能可以成为推动物联网系统在决策和计算方面改进的驱动力。在智能交通和智能天气预报等应用中,预测是必不可少的。人工智能提供了一些安全问题,如恶意软件检测、隐私保护和授权。

    相关论文整理:

    论文
    Artificial intelligence in internet of things
    Robust pervasive detection for Adversarial samples of artificial intelligence in IoT environments
    On artificial intelligent malware tolerant networking for IoT
    BlockIoTIntelligence: a blockchain-enabled intelligent IoT architecture with artificial intelligence
    A master attack methodology for an ai-based automated attack planner for smart cities
    Edge and fog computing enabled ai for IoT-an overview

    物联网当前的挑战

    最近,物联网(IoT)不仅是业界关注的焦点,也是研究界关注的焦点。物联网设备的生产数量已经超过了世界人口总量。这些智能设备连接到不同的应用程序,以便从环境中捕获信息。物联网设备是资源受限设备,容易受到攻击。安全和隐私问题对于物联网应用非常重要。

    1. 随着海量物联网设备的接入,系统吞吐量和共识算法问题依然存在。
    2. 在解决安全协议时,需要考虑物联网的可扩展性问题。
    3. 安全计算和处理是需要解决的其他领域。
    4. 为了满足设备的资源约束,安全协议的设计应遵循轻量化原则。
    展开全文
  • 前一篇文章普及了基于机器学习的恶意代码检测技术,主要参考郑师兄的视频总结,包括机器学习概述与算法举例、基于机器学习方法的恶意代码检测、机器学习算法在工业界的应用。这篇文章将分享两篇论文,介绍机器学习是...
  • 机器学习和深度学习的最佳框架大比拼 在过去的一年里,咱们讨论了六个开源机器学习和/或深度学习框架:Caffe,Microsoft Cognitive Toolkit(又名CNTK 2),MXNet,Scikit-learn,Spark MLlibTensorFlow。如果把...
  • 这是作者网络安全自学教程系列,主要是关于安全工具实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,...同时,我再结合自己的经验进行扩充,详细分享了基于机器学习的恶意代码检测技术,基础性文章,希望对
  • 内容简介 算法已在多大程度上影响我们的生活?购物网站用算法来为你推荐商品,点评网站用算法来帮你选择餐馆,GPS 系统用算法来帮你选择好的路线,公司用算法来选择求职者……当机器最终学会...机器学习五大学派,每...
  • 机器学习在网络流量分类中的应用

    千次阅读 2020-06-20 11:24:06
    I. 介绍 A. 相关工作 B....C.... ...II....A. 机器学习介绍 ...5. 机器学习技术 III. 方法 IV.数据收集 A. 网络环境 B. 数据测量 C. 标注任务 D. 讨论 V. 特征提取 A. 基于统计的特征 B. 基于图形的特征 C...
  • 这是作者的系列网络安全自学教程,主要是关于网安工具实践操作的在线笔记,特分享出来与博友共勉,希望您...这篇文章换个口味,将分享机器学习在安全领域的应用,并复现一个基于机器学习(逻辑回归)的恶意请求识别。
  • 一文读懂机器学习、数据科学、深度学习统计学之间的区别 [日期:2017-04-12] 来源:数盟 作者: [字体:大 中 小]  明晰了数据科学家所具有的不同角色,以及数据科学与机器学习、深度学习...
  • matlab机器学习20讲

    2016-04-01 13:24:18
    本书特别重视如何将视觉机器学习算法的理论实践有机地结合,解决视觉机器学习领域中的诸多基础问题,可应用于医学图像分析、工业自动化、机器人、无人车、人脸检测与识别、车辆信息识别、行为检测与识别、智能视频...
  • 人不完美,人跑的慢,声音传不远,活不长,记得少,等等等等,所以需要扩展人的能力,比如大数据存储与检索,移动通信,智能决策,机器学习。 人工智能有以下问题域: 推理(Reasoning)与决策(Decision...
  • 文章首先阐述机器学习技术在网络空间安全应用研究中的应用流程,然后从系统安全,网络安全应用安全三个层面介绍了机器学习在网络空间安全领域中的解决方案,归纳了这些解决方案的安全特征及常用的机器学习算法,...
  • 但是Nathan, BenTim指出了一种新的方式来指定设计通信系统,这可能会永远改变我们标准化、设计优化产品的方式。是时候学习你去年一直在推迟的“ML基础”在线课程了。 Adapting the Wireless Physical Layer ...
  • 分布式机器学习&联邦学习论文阅读笔记一、开源框架FedML二、数据异构问题FedProxBridging Median and Mean Algorithms(NeurIPS 2020)三、边缘计算负载问题FedGKT(NeurIPS 2020)四、通信量压缩FetchSGD(ICML...
  • 无线通信人工智能

    2018-04-02 10:45:30
    无线通信和机器学习结合, 1
  • 目前机器学习广泛应用于广告投放、趋势预测、图像识别、语音识别、自动驾驶产品推荐等众多领域。在确定了问题模型之后,根据已知数据寻找模型参数的过程就是训练,训练过程就是不断依据训练数据来调整参数的迭代,...
  • 由于机器学习技术在金融、广告、推荐系统用户行为分析等多个方面的应用不断取得成功,为商业、生产创造了巨大价值,越来越多的企业期望借助机器学习技术来提升业务运行的效率质量。机器学习模型的构建是一个复杂...
  • 滴滴机器学习平台架构演进之路

    千次阅读 2019-03-28 21:37:57
    现在很多互联网公司都有自己的机器学习平台,冠以之名虽然形形色色,但就平台所要解决的问题技术选型基本还是大同小异。 所谓大同是指大家所要处理的问题都相似,技术价格选型也差不太多,比如都会使用 GPU ...
  • 通过机器学习识别鸟类 Cacophony Project的广阔愿景是使用最新技术来监视新西兰鸟类的数量,并人道地消除危害其的捕食者。 该项目始于我们创始人的后院,以评估他保护鸟类财产的努力的有效性。 从这个简单的开始,...
  • 人工智能(ArtificialIntelligence),英文缩写为AI。它是关于知识的科学(知识的表示、知识的获取以及知识的应用)。 人工智能(学科)是计算机科学中涉及研究、设计...它的近期主要目标在于研究用机器来模仿执行
  • 编者按:数据时代,人们从技术中获取便利的同时,也面临着隐私泄露的风险。微软倡导负责任的人工智能,因此机器学习中的隐私保护问题至关重要。本文介绍了目前机器学习中隐私保护领域的最新研究进展,...
  • 25篇经典机器学习论文的分类

    千次阅读 2020-03-10 15:00:40
    放假当咸鱼的时候学校要求阅读论文文献,老板找了25篇比较经典的模式识别与机器学习相关的论文要求阅读,作为对人工智能一无所知且前半生学术生涯全贡献给通信的半路出家和尚,内心是茫然无措的,如何阅读论文也是两...
  • 2019年最强大的十大机器学习python库

    千次阅读 2019-01-02 12:43:45
    Python是最流行广泛使用的编程语言之一,已经取代了业界的许多编程语言。以下是Python流行的几个重要原因: Python有大量的库。 Python因其简单易懂而被称为初学者级编程语言。 从开发到部署维护,Python希望...
  • 物联网促进了物理世界计算机通信网络之间的集成,基础设施管理环境监控等应用程序使隐私安全技术对未来至关重要。物联网系统由射频识别(RFID)、无线传感器网络(WSNs)云计算组成。物联网必须保护数据隐私并...
  • 机器学习基础总结

    千次阅读 2018-12-07 08:56:47
    惩罚因子C决定了你有多重视离群点带来的损失,当所有离群点的松弛变量的一定时,C越大,对目标函数的损失也越大,此时就暗示着你非常不愿意放弃这些离群点。最极端的情况是你把C定为无限大,这样只要稍有一个点...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 53,783
精华内容 21,513
关键字:

机器学习和通信结合