机器学习概念、步骤、分类和实践

机器学习概念、步骤、分类和实践_第1张图片

近年来人工智能和大数据的迅速发展正在深刻改变着这个世界和我们的生活方式。人工智能的核心是机器学习(Machine Learning) 算法,自 2006 年以来,在机器学习领域,以深度学习(Deep Lerning) 为代表的机器学习算法取得了突破性的进展,在2017年AlphaGo大战围棋冠军李世石后这一技术加速走向市场、落地应用。而SSD作为大数据的一种存储介质,正在取代HDD成为主流的存储设备。那么当机器学习遇上SSD,会擦出怎样的火花呢?

一、什么是机器学习?

机器学习是让计算机具有学习的能力,无需进行明确编程。—— 亚瑟·萨缪尔,1959

计算机程序利用经验 E 学习任务 T,性能是 P,如果针对任务 T 的性能 P 随着经验 E 不断增长,则称为机器学习。—— 汤姆·米切尔,1997

机器学习是一类算法的总称,这些算法从大量历史数据中挖掘出其中隐含的规律,并用于预测或者分类,更具体的说,机器学习可以看作是寻找一个函数,输入是样本数据,输出是期望的结果,只是这个函数过于复杂,以至于不太方便形式化表达。需要注意的是,机器学习的目标是使学到的函数很好地适用于“新样本”,而不仅仅是在训练样本上表现很好。学到的函数适用于新样本的能力,称为泛化(Generalization)能力。

机器学习概念、步骤、分类和实践_第2张图片

二、机器学习步骤

通常学习一个好的函数,分为以下三步:

1、选择一个合适的模型,这通常需要依据实际问题而定,针对不同的问题和任务需要选取恰当的模型,模型就是一组函数的集合。 

2、判断一个函数的好坏,这需要确定一个衡量标准,也就是我们通常说的损失函数(Loss Function),损失函数的确定也需要依据具体问题而定,如回归问题一般采用欧式距离,分类问题一般采用交叉熵代价函数。 

3、找出“最好”的函数,如何从众多函数中最快的找出“最好”的那一个,这一步是最大的难点,做到又快又准往往不是一件容易的事情。常用的方法有梯度下降算法,最小二乘法等和其他一些技巧(tricks)。 

学习得到“最好”的函数后,需要在新样本上进行测试,只有在新样本上表现很好,才算是一个“好”的函数。 

机器学习概念、步骤、分类和实践_第3张图片

三、机器学习的类型

机器学习主要有三种基本类型:监督学习、非监督学习和强化学习。

机器学习概念、步骤、分类和实践_第4张图片

1监督学习

监督学习是使用已知正确答案的示例来训练模型。已知数据和其一一对应的标签,训练一个智能算法,将输入数据映射到标签的过程,它的常见应用场景如分类问题和回归问题。常见的算法有K近邻算法、线性回归、逻辑回归、支持向量机(SVM)、决策树和随机森林、神经网络。

分类

在分类中,机器被训练成将一个组划分为特定的类。分类的一个简单例子是电子邮件帐户上的垃圾邮件过滤器。过滤器分析你以前标记为垃圾邮件的电子邮件,并将它们与新邮件进行比较。如果它们匹配一定的百分比,这些新邮件将被标记为垃圾邮件并发送到适当的文件夹。那些比较不相似的电子邮件被归类为正常邮件并发送到你的邮箱。

机器学习概念、步骤、分类和实践_第5张图片

也许你会问这个分类算法对于SSD有什么用呢?SSD中的一个典型的分类问题是IO模式识别,判断IO是纯读、纯写或者混合读写的,这是一个三分类的问题;判断IO是顺序的还是随机的,这是一个二分类的问题。可以根据实际情况选择相应的相应的机器学习分类算法识别出不同的IO模式,然后针对不同的模式FTL就可采取不同策略,进而提升SSD的性能。

回归

回归问题通常是用来预测一个值,它的预测结果是连续的,如预测房价、未来的天气情况等,例如一个产品的实际价格为500元,通过回归分析预测值为499元,我们认为这是一个比较好的回归分析。

机器学习概念、步骤、分类和实践_第6张图片

回归算法在SSD中能用在什么地方呢?回归算法在SSD的一个应用是IO强度预测,在一定模式下IO强度在时序上是有一定规律的,可以根据前一段时间的IO强度预测下一段时间的IO强度,Smart-IO技术采用长短期记忆人工神经网络LSTM对IO强度进行预测。提前预测出IO强度后就可优化FTL策略、合理分配GC占用资源、合理调度、提高数据命中率等,进而提升SSD性能。

机器学习概念、步骤、分类和实践_第7张图片

 2非监督学习

在无监督学习中,数据是无标签的。学习模型是为了推断出数据的一些内在结构。无监督学习主要分为聚类和降维。

聚类用于根据属性和行为对象进行分组。这与分类不同,因为这些组不是你提供的。聚类的一个例子是将一个组划分成不同的子组(例如,基于年龄和婚姻状况),然后应用到有针对性的营销方案中。大多数大数据可视化使用降维来识别趋势和规则。主要算法: K-means、层次聚类分析(HCA)、DBSCAN。

机器学习概念、步骤、分类和实践_第8张图片

高维数据中很容易出现样本稀疏、距离计算困难等问题,即“维度灾难”,为了缓解维度灾难,常用的就是降维。降维的主要方法有主成分分析(PCA)、线性判别分析(LDA)、局部线性嵌入(LLE)。如图所示,通过PCA的方法可以把一个三位的数据降维成一个二维数据。

机器学习概念、步骤、分类和实践_第9张图片

无监督学习由于没有标签,相比监督学习来说相当于少了一些输入信息,实际应用中相对监督学习学习会困难一些,那么在SSD是否就无用武之地了呢?非也非也。Smart-IO数据分组技术用K-means算法对IO进行冷热数据分组,然后把不同组的数据写到不同的block或者die上,那么就可以减小,可减小WA,延长SSD使用寿命。

机器学习概念、步骤、分类和实践_第10张图片

 3 强化学习

强化学习算法的思路非常简单,以游戏为例,如果在游戏中采取某种策略可以取得较高的得分,那么就进一步「强化」这种策略,以期继续取得较好的结果。这种策略与日常生活中的各种「绩效奖励」非常类似。我们平时也常常用这样的策略来提高自己的游戏水平。AlphaGo下围棋也是这个原理,只告诉机器围棋的基本规则,但是不告诉它人类摸索了上千年才总结出来的定式等围棋战术,让机器完全依靠自学,打败人类。

机器学习概念、步骤、分类和实践_第11张图片

 强化学习感觉和SSD很难沾上边,不过熟悉SSD(固态硬盘)的人都知道,垃圾回收(GC,Garbage Collection)是SSD固件设计中的重要一环,也是影响SSD主控性能的重要因素。一般的GC机制都是只根据当前硬盘空闲空间状态来做GC的:当有空闲空间的时,不启动GC;反之,当没有空闲空间的情况下,执行GC任务。这种策略的缺点是如果在用户操作的时候进行GC会造成SSD性能明显下降,可以在主控空闲时提前进行GC,但是GC过于频繁会造成WA写放大过大,所以需要一个平衡,需要一种算法来自动确定何时GC,强化学习正好可以排上用场,给定一定的衡量标准,然后让机器通过强化学习的方法训练来自动学习GC的时机,得到更优的GC的策略。

四、 DapuStor机器学习技术

 DapuStor已基于SSD开发出Smart-IO Data Grouping和Smart-IO Intensities Prediction等先进技术,把机器学习的先进算法用到了SSD中,提升了SSD的产品性能。同时自研的带有计算和智能的数据存储处理器芯片(简称DPU),可以在芯片层面实现更多的智能功能和硬件加速,实现存算一体,满足高端存储和边缘计算市场的需求。

参考资料

[1]Dongyang Li, Yan Wang, Bin Xu , Wenjiang Li, Weijun Li, Lina Yu3, Qing Yang ,PIPULS: Predicting I/O Patterns Using LSTM in Storage Systems, 2019 International Conference on High Performance Big Data and Intelligent Systems (HPBD&IS)

[2]Wonkyung kang,dongkun shin,sungjoo yoo,Reinforcement Learning-Assisted Garbage Collection to Mitigate Long-Tail Latency in SSD, ACM Transactions on Embedded Computing Systems, Vol. 16, No. 5s, Article 134. Publication date: September 2017

[3]http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML19.html

[4]https://blog.csdn.net/hohaizx/article/details/80584307

[5]https://blog.csdn.net/qq_28168421/article/details/81351321

[6]https://www.toutiao.com/a6656380484144071179/

推荐阅读:

华为15年招聘经验总结:可用之才,必备5个特质

最全C资料,不会C语言,别说懂架构!

GO语言版《算法进阶指南》火了,完整版PDF下载!

后端,你再不懂vue就out了

如何成为一个骚气的架构师,看这一篇就够了

亿级(无限级)并发,没那么难

世界的真实格局分析,地球人类社会底层运行原理

不是你需要中台,而是一名合格的架构师(附各大厂中台建设PPT)

你可能感兴趣的:(算法,机器学习,人工智能,深度学习,编程语言)