机器学习里面的基函数_厉害了!机器学习用到SSD里面

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

一、什么是机器学习?

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

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

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

17dfe671d432a6dd468cbf1fc9bfcbda.png

二、机器学习步骤

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

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

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

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

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

ded2f2e9b3541e0dc77958ae35cb27b1.png

三、机器学习的类型

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

ab98829c86c95ba5e1417753bf422d27.png

1监督学习

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

分类

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

a91c4ec031b99623b1cca40f6042e2d1.png

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

回归

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

45ea6387a5115eca1504fdcb2d524692.png

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

fa0b03fed4d76e4a85320242f7bde3c4.png

2非监督学习

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

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

9463dc4dc660c07e4b1037e815330017.png

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

2ffc6f90e7a7823b8831ba62d63a564d.png

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

dbc9eedb752c1605c97c304b9fecac97.png

3 强化学习

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

dd66a503d3049957a9503c64ded8bc22.png

强化学习感觉和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),可以在芯片层面实现更多的智能功能和硬件加速,实现存算一体,满足高端存储和边缘计算市场的需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421697.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【好用的ORM框架】

对于开发采用orm会带来很大便利,orm即是数据表和实体对于关系框架。内部封装增删改查。它不仅适用于mvc,而且在winform和webform都适用。下面具体介绍orm是使用: 初步在winform为例使用,随后在在mvc大量运用: 1&#x…

愤怒的小鸟4只编外鸟_加西亚时隔三年夺美巡第11冠,马尔纳蒂9鸟单独第二

桑德森农场锦标赛战罢,第三轮并列领先的西班牙名将加西亚决赛轮打出5鸟1鹰2柏忌,以-19(68-68-66-67)的总成绩1杆优势夺冠,结束了三年的冠军荒。后来居上的马尔纳蒂决赛轮狂抓9鸟没有吞下一个柏忌,收获了职业生涯最低杆63杆&#x…

(JAVA)反射

import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method;/*** author Alina* date 2021年12月30日 10:47 下午* JAVA 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法&#…

带分数 - 蓝桥杯

标题:带分数 - 蓝桥杯 内容:2013年蓝桥杯全国软件大赛预赛,第9题。补充了memset()和memcpy()两个函数,在数组赋值中常用到。 作者:MilkCu 题目描述 标题:带分数 100 可以表示为带分数的形式:100…

(JAVA)reflect练习

className Student methodName student import java.awt.*; import java.io.FileReader; import java.lang.reflect.Method; import java.util.Properties;/*** author Alina* date 2022年01月08日 7:08 下午*/ public class ReflectPra {public static void main(String[] …

pgslq表的字段类型,如何在PostgreSQL中获取表的列表列名称和数据类型?

With the following query, we can get a list of column names and datatype of a table in PostgreSQL.解决方案SELECTa.attname as "Column",pg_catalog.format_type(a.atttypid, a.atttypmod) as "Datatype"FROMpg_catalog.pg_attribute aWHEREa.attnu…

【Linux操作系统分析】设备驱动处理流程

1 驱动程序,操作系统,文件系统和应用程序之间的关系 字符设备和块设备映射到操作系统中的文件系统,由文件系统向上提供给应用程序统一的接口用以访问设备。 Linux把设备视为文件,称为设备文件,通过对设备文件的读写操作…

C语言基础之数据结构

1.32 换成数字23 # include<stdio.h> //编译预处理指令 # include <math.h> # define pi 3.1415926 //定义不变常量 int convert(int num); char ABC(char a); double sum(double a,double b, double c); double area(double a,double b, double c); double num(…

硬件描述语言复习笔记

第一章 1、控制复杂性的艺术&#xff1a; A、抽象&#xff1a;管理复杂性的关键技术在于抽象即隐蔽不重要的细节 B、约束&#xff1a;对设计选择的一种内在限制&#xff0c;目的是为了可以更有效的在更高的抽象层 次上工作 C、三条原则&#xff1a; 层次化&#xff1a;一个系统…

hal库模拟量_【HAL库每天一例】第027例:DAC-正弦波

*//* 包含头文件 ----------------------------------------------------------------*/#include "dac/bsp_dac.h"/* 私有类型定义 --------------------------------------------------------------*//* 私有宏定义 ----------------------------------------------…

HDU/HDOJ 2612 Find a way 双向BFS

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2612 思路&#xff1a;从两个起点出发&#xff0c;有多个终点&#xff0c;求从两个起点同时能到达的终点具有的最小时间&#xff0c;开两个数组分别保存两个起点到达每一个终点的用时&#xff0c;最后将两个 数…

c语言之动态分配空间

void method_four(){int *p ;p (int *) malloc(10*sizeof(int)); //申请动态int类型空间for(int i 0 ;i < 5 ;i){p[i] i1;printf("%d\n",p[i]);} free(p); //释放空间 }

netty半包粘包 处理_netty解决粘包半包问题

前言&#xff1a;开发者用到TCP/IP交互时&#xff0c;偶尔会遇到粘包或者半包的数据&#xff0c;这种情况有时会对我们的程序造成严重的影响&#xff0c;netty框架为解决这种问题提供了若干框架1. LineBasedFrameDecoder&#xff1a;通过在包尾添加回车换行符 \r\n 来区分整包消…

switch循环

import java.util.Scanner;/*** author Alina* date 2021年10月10日 10:07 下午* switch (表达式) { case 1:* 语句体1;* break;* case 2:* 语句体2;* …

csgo手机上看demo_csgo看demo所有指令

csgo中有许许多多的指令我们可能都用得上&#xff0c;比如设置准星的指令抑或是看Demo的指令。那么今天小编就带大家看看这些看Demo的指令吧。正确答案以demo文件名为 nip.dem为例&#xff0c;Steam安装目录以我的F:/Steam为例1&#xff1a;复制demo文件&#xff0c;放到 \Stea…

C语言输出格式

1 一般格式printf(格式控制&#xff0c;输出表列&#xff09;例如&#xff1a;printf("i%d,ch%c\n",i,ch);说明:(1)“格式控制”是用双撇号括起来的字符串&#xff0c;也称“转换控制字符串”&#xff0c;它包括两种信息&#xff1a;①格式说明&#xff1a;由“%”和…

(Java)反射与文档注释

package com.reflect.test;/*** author Alina* date 2022年02月01日 6:09 下午*/ public class Demo1 {public void method(){System.out.println("Demo1...method");} } package com.reflect.test;import java.lang.annotation.ElementType; import java.lang.anno…