《工業(yè)大數(shù)據(jù)導(dǎo)論》 課件 第6、7章 工業(yè)大數(shù)據(jù)分析方法概述、工業(yè)大數(shù)據(jù)與新一代人工智能_第1頁(yè)
《工業(yè)大數(shù)據(jù)導(dǎo)論》 課件 第6、7章 工業(yè)大數(shù)據(jù)分析方法概述、工業(yè)大數(shù)據(jù)與新一代人工智能_第2頁(yè)
《工業(yè)大數(shù)據(jù)導(dǎo)論》 課件 第6、7章 工業(yè)大數(shù)據(jù)分析方法概述、工業(yè)大數(shù)據(jù)與新一代人工智能_第3頁(yè)
《工業(yè)大數(shù)據(jù)導(dǎo)論》 課件 第6、7章 工業(yè)大數(shù)據(jù)分析方法概述、工業(yè)大數(shù)據(jù)與新一代人工智能_第4頁(yè)
《工業(yè)大數(shù)據(jù)導(dǎo)論》 課件 第6、7章 工業(yè)大數(shù)據(jù)分析方法概述、工業(yè)大數(shù)據(jù)與新一代人工智能_第5頁(yè)
已閱讀5頁(yè),還剩142頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

工業(yè)大數(shù)據(jù)分析方法概述2019年11月21日目錄一、大數(shù)據(jù)分析技術(shù)需求二、分布式并行計(jì)算思想三、MapReduce理論基礎(chǔ)四、Spark理論基礎(chǔ)五、編程示例目錄一、大數(shù)據(jù)分析技術(shù)需求二、分布式并行計(jì)算思想三、MapReduce理論基礎(chǔ)四、Spark理論基礎(chǔ)五、編程示例本章問(wèn)題*Q1:數(shù)據(jù)挖掘在數(shù)據(jù)生命周期中處于什么地位?Q2:什么叫做真正意義上的大數(shù)據(jù)?Q3:大數(shù)據(jù)挖掘中的關(guān)鍵技術(shù)有哪些?大數(shù)據(jù)分析技術(shù)需求馬航MH370失聯(lián)飛機(jī)發(fā)動(dòng)機(jī)衛(wèi)星監(jiān)控?cái)?shù)據(jù)服務(wù),成為全球?qū)ふ绎w機(jī)最關(guān)鍵的線索。*大數(shù)據(jù)分析技術(shù)需求GE的商業(yè)模式轉(zhuǎn)型遠(yuǎn)程采集航空發(fā)動(dòng)機(jī)的運(yùn)行數(shù)據(jù)(轉(zhuǎn)速、溫度、油耗、推力、振動(dòng)………)*大數(shù)據(jù)地面發(fā)動(dòng)機(jī)大數(shù)據(jù)挖掘與分析中心*飛機(jī)發(fā)動(dòng)機(jī)汽車曲軸電子產(chǎn)品船用螺旋槳數(shù)控機(jī)床是制造業(yè)的“工作母機(jī)”,機(jī)床運(yùn)行狀態(tài)決定了制造加工質(zhì)量、精度和效率。大數(shù)據(jù)分析技術(shù)需求大數(shù)據(jù)分析技術(shù)需求智能制造-數(shù)據(jù)驅(qū)動(dòng)下的制造業(yè)德國(guó)提出了實(shí)施“工業(yè)4.0”國(guó)家戰(zhàn)略,引領(lǐng)第三次工業(yè)革命。中國(guó)制造2025——數(shù)據(jù)推動(dòng)傳統(tǒng)制造業(yè)轉(zhuǎn)型升級(jí)。*大數(shù)據(jù)分析技術(shù)需求什么是數(shù)據(jù)挖掘從大量的、不完全的、有噪聲的、隨機(jī)的數(shù)據(jù)中提取含在其中的、預(yù)先不被人知的、有用的信息和知識(shí)的過(guò)程。從功能上來(lái)看:從存放在數(shù)據(jù)庫(kù)、數(shù)據(jù)倉(cāng)庫(kù)或其它信息庫(kù)中的大量數(shù)據(jù)中發(fā)現(xiàn)知識(shí)的過(guò)程。***大數(shù)據(jù)分析技術(shù)需求數(shù)據(jù)挖掘的流程信息收集數(shù)據(jù)集成數(shù)據(jù)約規(guī)數(shù)據(jù)清理數(shù)據(jù)變換數(shù)據(jù)挖掘過(guò)程結(jié)果評(píng)估知識(shí)表示預(yù)處理大數(shù)據(jù)分析技術(shù)需求大數(shù)據(jù)有多大?*一天之中,互聯(lián)網(wǎng)產(chǎn)生的全部?jī)?nèi)容可以刻滿1.68億張DVD;一天之中,發(fā)出的郵件有2940億封之多(相當(dāng)于美國(guó)兩年紙質(zhì)信件數(shù)量);一天之中,發(fā)出的社區(qū)帖子達(dá)200萬(wàn)個(gè)(相當(dāng)于《時(shí)代》雜志770年的文字量);互聯(lián)網(wǎng)數(shù)據(jù)告訴你大數(shù)據(jù)有多大。大數(shù)據(jù)分析任務(wù)需求大數(shù)據(jù)有多大?*2016年,據(jù)IBM研究稱,“整個(gè)人類文明所獲得的全部數(shù)據(jù)中,有90%是過(guò)去兩年內(nèi)產(chǎn)生的”。而到了2020年,全世界所產(chǎn)生的數(shù)據(jù)規(guī)模將達(dá)到2016年的44倍,每一天,全世界會(huì)上傳超過(guò)5億張圖片,每分鐘就有20小時(shí)時(shí)長(zhǎng)的視頻被分享。大數(shù)據(jù)分析技術(shù)需求大數(shù)據(jù)有多大?*假設(shè)一種數(shù)據(jù)4個(gè)字節(jié),1ms采集一次,一共32種數(shù)據(jù)。一臺(tái)機(jī)床,4*1000*32*60*60*24=11059200000B/天≈10GB/天;假設(shè)一條產(chǎn)線12臺(tái)機(jī)床,一天的數(shù)據(jù)量大約就是120GB,一個(gè)月的數(shù)據(jù)量可達(dá)3.6T;在勁勝的一個(gè)智能生產(chǎn)車間,數(shù)控機(jī)床達(dá)180臺(tái)以上,一個(gè)月的數(shù)據(jù)量就達(dá)54T。大數(shù)據(jù)分析技術(shù)需求大數(shù)據(jù)時(shí)代下的數(shù)據(jù)挖掘*大數(shù)據(jù)時(shí)代對(duì)人類的數(shù)據(jù)駕馭能力提出了新的挑戰(zhàn),在數(shù)控、航空、商業(yè)、經(jīng)濟(jì)及其他領(lǐng)域中,決策將日益基于數(shù)據(jù)和分析而做出,而并非基于經(jīng)驗(yàn)和直覺(jué),因此應(yīng)對(duì)大數(shù)據(jù)的技術(shù)則緊隨到來(lái)。

海量

復(fù)雜

強(qiáng)實(shí)時(shí)*大數(shù)據(jù)分析技術(shù)需求數(shù)據(jù)挖掘以多學(xué)科關(guān)鍵技術(shù)作為支撐數(shù)據(jù)挖掘BECDA分布式并行計(jì)算數(shù)據(jù)庫(kù)技術(shù)物聯(lián)網(wǎng)其他學(xué)科人工智能目錄一、大數(shù)據(jù)分析技術(shù)需求二、分布式并行計(jì)算思想三、MapReduce理論基礎(chǔ)四、Spark理論基礎(chǔ)五、編程示例本章問(wèn)題*Q1:為什么大數(shù)據(jù)需要分布式并行計(jì)算?Q2:分布式并行計(jì)算的設(shè)計(jì)思想?“古代,人們用牛來(lái)拉重物。當(dāng)一頭牛拉不動(dòng)一根圓木時(shí),他們不曾想過(guò)培育更大更壯的牛。同樣,我們也不需要嘗試開(kāi)發(fā)超級(jí)計(jì)算機(jī),而應(yīng)試著結(jié)合使用更多的計(jì)算機(jī)系統(tǒng)?!薄狦raceHopper分布式并行計(jì)算思想分布式并行計(jì)算思想超級(jí)計(jì)算機(jī)橫向擴(kuò)展縱向擴(kuò)展受到計(jì)算設(shè)備本身架構(gòu)局限所需的升級(jí)成本會(huì)快速上升如何調(diào)度整個(gè)系統(tǒng)、多個(gè)計(jì)算節(jié)點(diǎn)間的資源整個(gè)任務(wù)及各個(gè)子任務(wù)如何監(jiān)控各個(gè)計(jì)算節(jié)點(diǎn)的計(jì)算結(jié)果如何合理調(diào)度系統(tǒng)如何容錯(cuò)如何保證可靠性分布式并行計(jì)算思想分布式并行計(jì)算=分布式計(jì)算+并行計(jì)算分布式計(jì)算,和集中式計(jì)算相對(duì),體現(xiàn)的是“分而治之”,強(qiáng)調(diào)的是任務(wù)的分布執(zhí)行。并行計(jì)算,是相對(duì)于串行計(jì)算而言,體現(xiàn)是單個(gè)任務(wù)的執(zhí)行粒度,強(qiáng)調(diào)的是單個(gè)任務(wù)的并發(fā)執(zhí)行。分布式并行計(jì)算思想什么是分布式并行計(jì)算分布式并行計(jì)算:把一個(gè)需要非常巨大的計(jì)算能力才能解決的問(wèn)題分成許多小的部分,然后把這些部分分配給許多計(jì)算機(jī)進(jìn)行處理,最后把這些計(jì)算結(jié)果綜合起來(lái)得到最終的結(jié)果負(fù)載均衡系統(tǒng)容錯(cuò)數(shù)據(jù)備份*分布式并行計(jì)算思想大數(shù)據(jù)為什么需要分布式并行計(jì)算*ANVFJVFCNDHNFAACNHFNDBUYHNXGB行結(jié)果行結(jié)果行結(jié)果行結(jié)果合并=結(jié)果串行分布式并行單個(gè)計(jì)算節(jié)點(diǎn)計(jì)算節(jié)點(diǎn)2計(jì)算節(jié)點(diǎn)3計(jì)算節(jié)點(diǎn)4計(jì)算節(jié)點(diǎn)1行結(jié)果+行結(jié)果+行結(jié)果+行結(jié)果=結(jié)果分布式并行計(jì)算思想分布式并行計(jì)算體現(xiàn)的優(yōu)勢(shì)高可伸縮性和按需服務(wù)高可靠性、高容錯(cuò)性整合多個(gè)計(jì)算節(jié)點(diǎn)的計(jì)算能力,具備更高的計(jì)算速度和計(jì)算效率系統(tǒng)具備高度開(kāi)放性,本地或遠(yuǎn)程都可以使用分布式計(jì)算服務(wù)成本可控分布式并行計(jì)算思想常見(jiàn)分布式并行計(jì)算框架框架類別MapReduceSparkStorm開(kāi)發(fā)者GoogleUCBerkeleyAMPLabTwitter開(kāi)發(fā)語(yǔ)言JavaScalaJava、Clojure框架性質(zhì)批處理第二代批處理流式數(shù)據(jù)實(shí)時(shí)處理延時(shí)性能較高秒級(jí)實(shí)時(shí)存儲(chǔ)系統(tǒng)HDFS,磁盤內(nèi)存內(nèi)存數(shù)據(jù)吞吐量一般好較好集群支持?jǐn)?shù)千個(gè)點(diǎn)超過(guò)1000節(jié)點(diǎn)超過(guò)1000節(jié)點(diǎn)應(yīng)用平臺(tái)Facebook、Google、IBM、雅虎等Intel、騰訊、淘寶、中國(guó)移動(dòng)、Google等淘寶、百度、Twittle、Groupon、雅虎等適用場(chǎng)景低時(shí)效性(離線式)大批量計(jì)算較數(shù)據(jù)塊、高時(shí)效性的小批量計(jì)算小數(shù)據(jù)塊的實(shí)時(shí)分析計(jì)算目錄一、大數(shù)據(jù)分析技術(shù)需求二、分布式并行計(jì)算思想三、MapReduce理論基礎(chǔ)四、Spark理論基礎(chǔ)五、編程示例本章問(wèn)題*Q1:簡(jiǎn)述MapReduce的編程原理?Q2:MapReduce是怎樣的體系架構(gòu)?Q3:MapReduce的數(shù)據(jù)模型是什么?MapReduce理論基礎(chǔ)分布式并行計(jì)算原始模型谷歌設(shè)計(jì)一個(gè)新的抽象模型,使用這個(gè)抽象模型,普通程序員只要表述他們想要執(zhí)行的簡(jiǎn)單運(yùn)算即可,而不必關(guān)心并行計(jì)算、容錯(cuò)、數(shù)據(jù)分布、負(fù)載均衡等復(fù)雜的細(xì)節(jié),這些問(wèn)題都被封裝了,由后臺(tái)程序來(lái)處理。這個(gè)模型就是MapReduce。谷歌2004年公布的MapReduce編程模型,在工業(yè)界、學(xué)術(shù)界產(chǎn)生巨大影響,以至于談大數(shù)據(jù)必談MapReduce。*MapReduce理論基礎(chǔ)Mapreduce-分布式計(jì)算框架*MapReduce是一個(gè)編程模型,一個(gè)處理和生成超大數(shù)據(jù)集的算法模型的相關(guān)實(shí)現(xiàn)。簡(jiǎn)單的一句話解釋MapReduce就是“任務(wù)的分解與結(jié)果的匯總”。MapReduce理論基礎(chǔ)MapReduce數(shù)據(jù)模型——實(shí)現(xiàn)MapReduce架構(gòu)的基礎(chǔ)

主結(jié)節(jié)得到所有子節(jié)點(diǎn)的處理結(jié)果,然后把所有結(jié)果組合并且返回到輸出。主節(jié)點(diǎn)讀入輸入數(shù)據(jù),把它分成可以用相同方法解決的小數(shù)據(jù)塊(分而治之),然后把這些小數(shù)據(jù)塊分發(fā)到不同的工作節(jié)點(diǎn)上,并行處理。

Map映射

Reduce規(guī)約MapReduce理論基礎(chǔ)Mapreduce編程模型原理*抽象模型是運(yùn)轉(zhuǎn)在<key,value>鍵值對(duì)上;Map和Reduce的輸入是一組<key,value>鍵值對(duì),同樣輸出的也是一組或多組<key,value>鍵值對(duì);歷經(jīng)Partition(分片)、Map、Shuffle(洗牌)、Reduce等四個(gè)主要階段。map:(key1,value1)---->list(key2,value2)

map:(key1,value3)---->list(key2,value4)reduce:(key2,list(value2,value4))---->(key3,value5)MapReduce理論基礎(chǔ)MapReduce編程原理——Partition(分片)block1block2blockNfilesplit1split2split3split4split5…HDFS分布式文件系統(tǒng)只是在邏輯上對(duì)數(shù)據(jù)分片,與數(shù)據(jù)在HDFS系統(tǒng)中的真實(shí)存儲(chǔ)沒(méi)有實(shí)質(zhì)性的映射關(guān)系。每個(gè)Split是一個(gè)Map任務(wù)的輸入;Map計(jì)算就近拉取數(shù)據(jù);split大小盡量不大于一個(gè)block塊的大小,降低跨節(jié)點(diǎn)拉取數(shù)據(jù)的概率,降低數(shù)據(jù)在網(wǎng)絡(luò)傳輸上的耗時(shí),提高計(jì)算速度;split大小會(huì)有一個(gè)默認(rèn)規(guī)則,將即為block的1/N(N為整數(shù))。MapReduce理論基礎(chǔ)MapReduce編程原理——MapMapReduce理論基礎(chǔ)MapReduce編程原理——ReduceMapReduce理論基礎(chǔ)MapReduce函數(shù)定義Mapper類定義如下:Mapper<LongWritable,Text,Text,IntWritable>Reducer類的模板定義如下:

LetterCountReducer<Text,

IntWritable,

Text,

IntWritable>Mapper的輸出是reducer的輸入mapper函數(shù):在Map節(jié)點(diǎn)執(zhí)行Map任務(wù)reducer函數(shù):在Reduce節(jié)點(diǎn)執(zhí)行Reduce任務(wù)MapReduce理論基礎(chǔ)Mapreduce編程示例*統(tǒng)計(jì)單詞所有出現(xiàn)單詞的數(shù)量。Hello

World

Hello

my

love

Hello

World

,

i

love

youMapReduce理論基礎(chǔ)Mapreduce編程示例-Map實(shí)現(xiàn)*public

class

WordCountMapper

extends

Mapper<LongWritable,

Text,

Text,

IntWritable>{

/*

*

map方法是提供給map

task進(jìn)程來(lái)調(diào)用的,map

task進(jìn)程是每讀取一行文本來(lái)調(diào)用一次我們自定義的map方法

*/

@Override

protected

void

map(LongWritable

key,

Text

value,Context

context)

throws

IOException,

InterruptedException

{

String

line

=

value.toString();

String[]

words=line.split("

");

//輸出<單詞,1>

for(String

word:words){

context.write(new

Text(word),

new

IntWritable(1));

}

}

}

MapReduce理論基礎(chǔ)Mapreduce編程示例*統(tǒng)計(jì)單詞所有出現(xiàn)單詞的數(shù)量。Hello

World

Hello

my

love

Hello

World

,

i

love

you

Hello

1World

1Hello

1my

1love1Hello

1World

1

i

1love

1you

1MapReduce理論基礎(chǔ)Mapreduce編程示例-Reduce實(shí)現(xiàn)*public

public

class

WordCountReducer

extends

Reducer<Text,

IntWritable,

Text,

IntWritable>{

@Override

protected

void

reduce(Text

key,

Iterable<IntWritable>

values,Context

context)

throws

IOException,

InterruptedException

{

//定義一個(gè)計(jì)數(shù)器

int

count

=

0;

//通過(guò)value這個(gè)迭代器,遍歷這一組kv中所有的value,進(jìn)行累加

for(IntWritable

value:values){

count+=value.get();

}

//輸出這個(gè)單詞的統(tǒng)計(jì)結(jié)果

context.write(key,

new

IntWritable(count));

}

}

MapReduce理論基礎(chǔ)Mapreduce編程示例*統(tǒng)計(jì)單詞所有出現(xiàn)單詞的數(shù)量。Hello

3World

2my

1love

2i

1

you1Hello

1World

1Hello

1my

1love1Hello

1World

1

i

1love

1you

1MapReduce理論基礎(chǔ)MapReduce資源調(diào)度Client向NameNode節(jié)點(diǎn)提交計(jì)算任務(wù),NameNode將任務(wù)分配給多個(gè)DataNode節(jié)點(diǎn)進(jìn)行實(shí)際計(jì)算(Map計(jì)算和Reduce計(jì)算),最后將結(jié)果反饋給Client。一個(gè)MapReduce作業(yè)稱為一個(gè)Job;一個(gè)Job會(huì)被拆分為很多個(gè)子任務(wù),即Task集,分為多個(gè)MapTask和多個(gè)ReduceTask;一個(gè)Job的生命周期可分為4個(gè)階段:Job提交、Task調(diào)度與監(jiān)控、Task執(zhí)行和Task輸出。在Hadoop1.x版本中,MapReduce任務(wù)調(diào)度系統(tǒng)主要包括三個(gè)關(guān)鍵組件:JobTracker、TaskTracker和TaskSchedulerMapReduce理論基礎(chǔ)MapReduce資源調(diào)度——JobTrackerJobTracker運(yùn)行在NameNode節(jié)點(diǎn)上,在系統(tǒng)中是唯一的,主要任務(wù)是將一個(gè)Job拆分的多個(gè)Task分配給TaskTracker;Job拆分后,得到Map和Reduce的數(shù)量,并統(tǒng)計(jì)哪些DataNode節(jié)點(diǎn)可以處理哪些SplitJobClient向JobTracker傳輸數(shù)據(jù)在HDFS系統(tǒng)的存儲(chǔ)路徑以及JobID;MapReduce理論基礎(chǔ)MapReduce資源調(diào)度——TaskTrackerJobTracker只是將Task拆分信息緩存在NameNode節(jié)點(diǎn),并不進(jìn)行實(shí)時(shí)性分配,也不通知計(jì)算節(jié)點(diǎn),而是等待TaskTracker來(lái)主動(dòng)讀取;TaskTracker是任務(wù)的真正執(zhí)行者,運(yùn)行在每一個(gè)DataNode節(jié)點(diǎn),并在每一個(gè)節(jié)點(diǎn)保持唯一;TaskTracker將任務(wù)可執(zhí)行力度設(shè)置為“槽(slot)”,通過(guò)配置文件設(shè)置當(dāng)前節(jié)點(diǎn)可同時(shí)執(zhí)行的最大Map和Reduce任務(wù)數(shù)量。MapReduce理論基礎(chǔ)MapReduce資源調(diào)度——心跳機(jī)制Client周期性發(fā)送一個(gè)固定信息給Server,Server收到信息后,回復(fù)一個(gè)固定信息給Client,如果Server在指定時(shí)間內(nèi)沒(méi)有收到Client的固定信息,則視Client已斷開(kāi)連接。TaskTracker可告知JobTracker其所在節(jié)點(diǎn)是否健康;TaskTracker通過(guò)心跳信息將當(dāng)前節(jié)點(diǎn)可用的Map和Reduce任務(wù)數(shù)目、占用的數(shù)目以及所承擔(dān)Task的詳細(xì)信息發(fā)送給JobTracker,然后JobTracker根據(jù)這些信息為TaskTracker提供新的Task信息。MapReduce理論基礎(chǔ)MapReduce資源調(diào)度——TaskSchedulerTaskScheduler是MapReduce的任務(wù)調(diào)度器。當(dāng)一個(gè)TaskTracker通過(guò)心跳告知JobTracker自己還有空閑的任務(wù)Slot時(shí),JobTracker就會(huì)向其分派任務(wù),而具體應(yīng)該分派一些什么樣的任務(wù)給這臺(tái)TaskTracker。目錄一、大數(shù)據(jù)分析技術(shù)需求二、分布式并行計(jì)算思想三、MapReduce理論基礎(chǔ)四、Spark理論基礎(chǔ)五、編程示例本章問(wèn)題*Q1:Spark較MapReuce的優(yōu)勢(shì)體現(xiàn)在哪里?Q1:簡(jiǎn)述Spark的編程原理?Q2:Spark是怎樣的體系架構(gòu)?Q3:Spark的數(shù)據(jù)模型是什么?Q3:Spark的資源調(diào)度是如何實(shí)現(xiàn)的?Spark理論基礎(chǔ)Mapreduce局限性僅支持Map和Reduce兩種操作Map中間結(jié)果需要寫磁盤任務(wù)調(diào)度和啟動(dòng)開(kāi)銷大無(wú)法充分利用內(nèi)存只能處理離線數(shù)據(jù)不適合迭代計(jì)算*快速支持復(fù)雜查詢通用多種運(yùn)行模式Spark理論基礎(chǔ)Spark-高效的分布式計(jì)算框架Spark是專為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用的計(jì)算引擎。Spark是基于內(nèi)存計(jì)算的大數(shù)據(jù)并行計(jì)算框架。Spark的內(nèi)存計(jì)算提高大數(shù)據(jù)環(huán)境下的數(shù)據(jù)處理的實(shí)時(shí)性,同時(shí)保證高容錯(cuò)性和高可伸縮性,允許用戶將Spark部署在大量廉價(jià)硬件之上,形成集群。*Spark理論基礎(chǔ)Spark發(fā)展史*2009誕生于伯克利大學(xué)2010正式開(kāi)源2013成為Apache基金項(xiàng)目2016發(fā)布2.0版本/matei/《大型集群上的快速和通用數(shù)據(jù)處理架構(gòu)》Mataizaharia2019發(fā)布3.0版本Spark理論基礎(chǔ)Spark版本發(fā)展*截止2019年11月:Spark的developers比2014年漲了4倍,達(dá)到1200多人,來(lái)自超過(guò)300家公司;Spark的committers來(lái)自超過(guò)25個(gè)組織;在開(kāi)源社區(qū)的貢獻(xiàn)下,Spark版本更新速度很快,平均1-2個(gè)月推出一個(gè)新版本;Spark用戶達(dá)到1000多個(gè),正不斷深入到傳統(tǒng)工業(yè)界和互聯(lián)網(wǎng)/傳統(tǒng)行業(yè)交叉的應(yīng)用領(lǐng)域。Spark代碼貢獻(xiàn)者每年的增長(zhǎng)曲線Spark理論基礎(chǔ)Spark的快速性基于內(nèi)存計(jì)算,執(zhí)行效率實(shí)時(shí)數(shù)據(jù)處理能力。擅長(zhǎng)迭代計(jì)算,支持機(jī)器學(xué)習(xí)。*實(shí)驗(yàn)表明,在處理迭代式應(yīng)用上Spark比MapReduce快20多倍;計(jì)算數(shù)據(jù)分析類報(bào)表的性能提高了40多倍;Spark能夠在5-7秒的延時(shí)內(nèi)交互式掃描1TB數(shù)據(jù)集。Spark理論基礎(chǔ)Spark的易用性易用性:Spark通過(guò)提供豐富的Scala,Java,PythonAPI及交互式Shell來(lái)提高可用性。Scala是Spark框架的開(kāi)發(fā)語(yǔ)言,所以使用Scala語(yǔ)言可以和Spark的源代碼進(jìn)行更好的無(wú)縫結(jié)合,更方便調(diào)用其相關(guān)功能。*編程語(yǔ)言運(yùn)行平臺(tái)騰訊廣點(diǎn)通是最早使用Spark的應(yīng)用之一。騰訊大數(shù)據(jù)借助Spark快速迭代的優(yōu)勢(shì),最終成功應(yīng)用于廣點(diǎn)通pCTR投放系統(tǒng)上,支持每天上百億的請(qǐng)求量。使用SparkSQL,利用其快速查詢以及內(nèi)存表等優(yōu)勢(shì),承擔(dān)了日志數(shù)據(jù)的即席查詢工作。在性能方面,普遍比Hive高2-10倍,如果使用內(nèi)存表的功能,性能將會(huì)比Hive快百倍。YahooYahoo將Spark用在AudienceExpansion中的應(yīng)用AudienceExpansion是廣告中尋找目標(biāo)用戶的一種方法:首先廣告者提供一些觀看了廣告并且購(gòu)買產(chǎn)品的樣本客戶,據(jù)此進(jìn)行學(xué)習(xí),尋找更多可能轉(zhuǎn)化的用戶,對(duì)他們定向廣告。淘寶淘寶技術(shù)團(tuán)隊(duì)使用了Spark來(lái)解決多次迭代的機(jī)器學(xué)習(xí)算法、高計(jì)算復(fù)雜度的算法等。將Spark運(yùn)用于淘寶的推薦相關(guān)算法上。同時(shí)還利用Graphx解決了許多生產(chǎn)問(wèn)題,包括以下計(jì)算場(chǎng)景:基于度分布的中樞節(jié)點(diǎn)發(fā)現(xiàn)、基于最大連通圖的社區(qū)發(fā)現(xiàn)、基于三角形計(jì)數(shù)的關(guān)系衡量、基于隨機(jī)游走的用戶屬性傳播等。優(yōu)酷土豆目前Spark已經(jīng)廣泛使用在優(yōu)酷土豆的視頻推薦(圖計(jì)算)、廣告業(yè)務(wù)等。通過(guò)實(shí)踐發(fā)現(xiàn)Spark性能比MapReduce提升很多。首先,交互查詢響應(yīng)快,性能比Hadoop提高若干倍;模擬廣告投放計(jì)算效率高、延遲小(同hadoop比延遲至少降低一個(gè)數(shù)量級(jí));機(jī)器學(xué)習(xí)、圖計(jì)算等迭代計(jì)算,大大減少了網(wǎng)絡(luò)傳輸、數(shù)據(jù)落地等,極大的提高的計(jì)算性能。Spark理論基礎(chǔ)Spark在互聯(lián)網(wǎng)中的典型應(yīng)用案例*Spark之上提供四種應(yīng)用庫(kù):SparkSQL

:為處理結(jié)構(gòu)化數(shù)據(jù)而設(shè)計(jì)的模塊。SparkStreaming:很容易地創(chuàng)建可擴(kuò)展和容錯(cuò)性的流式應(yīng)用。Mllib:可擴(kuò)展機(jī)器學(xué)習(xí)庫(kù)。GraphX:并行圖計(jì)算API。Spark理論基礎(chǔ)Spark生態(tài)圈*Spark理論基礎(chǔ)Spark整體體系架構(gòu)*SparkSQLSparkStreamingGraphX(graph)MLlib(machinelearning)MesosYARNS3SparkStandalone存儲(chǔ)層資源調(diào)度層計(jì)算層工具層CassandraHbase…TachyonHDFSSpark理論基礎(chǔ)Spark核心概念-SparkCoreSparkCore提供Spark最基礎(chǔ)與最核心的功能。SparkContext在Spark應(yīng)用程序的執(zhí)行過(guò)程中起著主導(dǎo)作用,它負(fù)責(zé)與程序和spark集群進(jìn)行交互,包括申請(qǐng)集群資源、創(chuàng)建RDD及廣播變量等。*Spark理論基礎(chǔ)Spark運(yùn)行架構(gòu)模型*采用分布式計(jì)算中的Master-Slave模型:Master負(fù)責(zé)整個(gè)集群的正常運(yùn)行,Slave通常被稱為Worker,負(fù)責(zé)接受Master命令執(zhí)行計(jì)算操作。ClusterManager(Master)負(fù)責(zé)整個(gè)系統(tǒng)的計(jì)算資源的分配與管理;集群資源管理器:為上層應(yīng)用提供統(tǒng)一的資源管理和調(diào)度;Worker接受主節(jié)點(diǎn)命令以及進(jìn)行狀態(tài)匯報(bào)Executor可以看做是一個(gè)計(jì)算任務(wù)(Task)的監(jiān)控和執(zhí)行容器;DriverApp:負(fù)責(zé)運(yùn)行程序的main()方法,將上述任務(wù)定義轉(zhuǎn)換為RDD和DGA。Spark理論基礎(chǔ)Spark核心概念*Spark任務(wù)提供多層分解的概念,Spark組件將用戶的應(yīng)用程序分解為內(nèi)部執(zhí)行任務(wù)并提供執(zhí)行容器,資源管理為spark組件提供資源調(diào)度。HDFSInput1Input2stage2stage3TaskJobstage1Client:負(fù)責(zé)提交應(yīng)用;Driver:是應(yīng)用的邏輯執(zhí)行起點(diǎn);Job:可以認(rèn)為是SparkRDD里面的操作,每個(gè)操作的計(jì)算會(huì)生成一個(gè)Job,Job最終會(huì)被分為多個(gè)Stage和Task;Task:每一個(gè)Job被拆分多個(gè)Task;Executor:負(fù)責(zé)Task的調(diào)度和執(zhí)行;Stage:每個(gè)Job包含多個(gè)Stage,每個(gè)Stage包含多個(gè)Task。Driver包含用戶的應(yīng)用程序;Driver完成task的解析和生成;Driver向ClusterManager申請(qǐng)運(yùn)行task需要的資源;集群資源管理器為task分配滿足要求的節(jié)點(diǎn),并在節(jié)點(diǎn)按照要求創(chuàng)建Executor;創(chuàng)建的Executor向Driver注冊(cè);Driver將Spark應(yīng)用程序的代碼和文件傳送給分配的Executor;Executor運(yùn)行task,運(yùn)行完后將結(jié)果返回Driver或者寫入HDFS等介質(zhì)。Spark理論基礎(chǔ)Spark端到端流程*DriveProgramSpark理論基礎(chǔ)SparkvsMapReduce*擁有DAG(有向無(wú)環(huán)圖)執(zhí)行引擎,支持內(nèi)存中對(duì)數(shù)據(jù)進(jìn)行迭代計(jì)算。Spark實(shí)現(xiàn)了數(shù)據(jù)的抽象,稱為彈性分布式數(shù)據(jù)集(RDDs),在很大程度上增加了系統(tǒng)的通用性。中間結(jié)果在內(nèi)存中存取Spark理論基礎(chǔ)Spark核心概念-RDD*RDD是什么?RDD,彈性分布式數(shù)據(jù)集,是對(duì)分布式內(nèi)存的抽象使用,實(shí)現(xiàn)了以操作本地集合的方式來(lái)操作分布式數(shù)據(jù)集的抽象實(shí)現(xiàn)。RDD是Spark中待處理的數(shù)據(jù)的抽象,它是邏輯中的實(shí)體。RDD存儲(chǔ)可以在內(nèi)存和磁盤之間手動(dòng)或自動(dòng)切換;RDD可以通過(guò)轉(zhuǎn)換成其它的RDD;RDD可以存儲(chǔ)任意類型的數(shù)據(jù);RDD數(shù)據(jù)的計(jì)算具備分布式的特點(diǎn);Task或Stage如果失敗會(huì)自動(dòng)進(jìn)行特定次數(shù)的重試;RDD支持緩存,提高存取速度。彈性?Spark理論基礎(chǔ)Spark核心概念-RDD來(lái)源*rdd1=sparkContext.textFile(“hdfs://…”)rdd1是一個(gè)MappedRDD,該RDD是從外部文件創(chuàng)建的。rdd2=rdd1.filter(_.startsWith(“ERROR”))rdd2也是一個(gè)FilteredRDD,是從rdd1這個(gè)RDD衍生(即計(jì)算)得到的。rdd1是rdd2的父節(jié)點(diǎn),即rdd2依賴rdd1。filter是RDD的操作,即每個(gè)分片需要計(jì)算的函數(shù)。創(chuàng)建:從外部數(shù)據(jù)集中讀取,來(lái)源于文件系統(tǒng)(HDFS,HBASE,Cassandra等)。轉(zhuǎn)化:從一個(gè)RDD生成另一個(gè)RDD的過(guò)程。Spark用lineage的方式表示各個(gè)RDD的依賴關(guān)系。Spark理論基礎(chǔ)Spark核心概念-RDD操作作用于RDD上的Operation分為轉(zhuǎn)換(transformantion)和動(dòng)作(action)。Spark中的所有“轉(zhuǎn)換”都是惰性的,在執(zhí)行“轉(zhuǎn)換”操作,并不會(huì)提交Job,只有在執(zhí)行“動(dòng)作”操作,所有operation才會(huì)被提交到cluster中真正的被執(zhí)行。這樣可以大大提升系統(tǒng)的性能。*Operation轉(zhuǎn)換從現(xiàn)有的數(shù)據(jù)集創(chuàng)建一個(gè)新的數(shù)據(jù)集即數(shù)據(jù)集中的內(nèi)容會(huì)發(fā)生更改,由數(shù)據(jù)集A轉(zhuǎn)換成為數(shù)據(jù)集B。動(dòng)作在數(shù)據(jù)集上運(yùn)行計(jì)算后,返回一個(gè)值給驅(qū)動(dòng)程序。即數(shù)據(jù)集的內(nèi)容會(huì)被歸約為一個(gè)具體的數(shù)值。操作名稱示例意義MapRDD.map(fun)函數(shù)應(yīng)用于RDD每一個(gè)元素,返回值是新的RDDflatmapRDD.flatmap(fun)函數(shù)應(yīng)用于RDD每一個(gè)元素,將數(shù)據(jù)進(jìn)行拆分,變成迭代器,返回值是新的RDDfilterRDD.filter(fun)過(guò)濾distinctRDD.distinct()去重unionRDD.union(RDD1)兩個(gè)RDD求并集intersectionRDD.intersection(RDD1)兩個(gè)RDD求交集cartesianRDD.cartesian(RDD1)生成RDD與RDD1的笛卡爾積groupByRDD.groubBy(key)根據(jù)key的取值,分組reduceByKeyRDD.reduceByKey()根據(jù)key的取值聚合sortByKeyRDD.sortByKey()根據(jù)key的值排序Spark理論基礎(chǔ)Spark核心概念-RDD常見(jiàn)“轉(zhuǎn)換”操作*操作名稱示例意義foreach()RDD.foreach(fun)對(duì)RDD中的每個(gè)元素使用給定的函數(shù)collect()RDD.collect()返回RDD中的所有元素。countByVale()RDD.countByValue()每個(gè)元素在RDD中出現(xiàn)的次數(shù)。count()RDD.count()統(tǒng)計(jì)RDD中元素的個(gè)數(shù)take()RDD.take(n)返回RDD中的n個(gè)元素top()RDD.top(N)返回RDD中的前N個(gè)元素takeOrdered()RDD.takeOrdered(n)按照要求的順序返回前n個(gè)元素takeSample()RDD.takeSample(n)從RDD中任意返回n個(gè)元素reduce()RDD.reduce(fun)并行整合RDD中所有的元素fold()RDD.fold(num)(fun)提供初始值的reduceSpark理論基礎(chǔ)Spark核心概念-RDD常用“動(dòng)作”操作*Spark理論基礎(chǔ)Spark操作示例import

org.apache.spark.SparkContextimport

org.apache.spark.SparkContext._import

org.apache.spark.SparkConfobject

SimpleApp

{ def

main(args:

Array[String])

{ val

logFile

=

"YOUR_SPARK_HOME/README.md"

//Shouldbesomefile val

conf

=

new

SparkConf().setAppName("SimpleApplication")//設(shè)置程序名字 val

sc

=

new

SparkContext(conf) val

logData

=

sc.textFile(logFile,

2).cache()//加載文件為RDD,并緩存 val

numAs

=

logData.filter(line

=>

line.contains("a")).count()//包含a的行數(shù) val

numBs

=

logData.filter(line

=>

line.contains("b")).count()//包含b的行數(shù) println("Lineswitha:%s,Lineswithb:%s".format(numAs,

numBs)) }}創(chuàng)建一個(gè)RDD轉(zhuǎn)換算子動(dòng)作算子Spark理論基礎(chǔ)Spark核心概念-RDD存儲(chǔ)直觀上,RDD就是一個(gè)只讀的數(shù)據(jù);但是,RDD其實(shí)不存儲(chǔ)真實(shí)的數(shù)據(jù),只存儲(chǔ)數(shù)據(jù)的獲取方法、分區(qū)方法、以及數(shù)據(jù)類型。*//只保留兩個(gè)抽象方法<brdata-filtered="filtered">abstractclassRDD[T:ClassTag](

@transient

private

var

_sc:

SparkContext,

@transient

private

var

deps:

Seq[Dependency[_]]

)

extends

Serializable

with

Logging{

<brdata-filtered="filtered">

//計(jì)算某個(gè)分區(qū)數(shù)據(jù)的方法

//計(jì)算分區(qū)信息只會(huì)被調(diào)用一次

protected

def

getPartitions:

Array[Partition]}通過(guò)RDD的這兩個(gè)抽象方法,可以看出:RDD其實(shí)是不存儲(chǔ)真是數(shù)據(jù)的,存儲(chǔ)的的只是真實(shí)數(shù)據(jù)的分區(qū)信息getPartitions,還有就是針對(duì)單個(gè)分區(qū)的讀取方法。Spark理論基礎(chǔ)Spark核心概念-RDD分區(qū)RDD內(nèi)部的數(shù)據(jù)集合在邏輯上被劃分為多個(gè)分片,每一個(gè)分片稱為分區(qū)。RDD內(nèi)部使用分區(qū)來(lái)表示并行計(jì)算的一個(gè)計(jì)算單元。分區(qū)的個(gè)數(shù)決定并行計(jì)算的粒度。*TraintPartitionextendsSerializable{Defindex:IntOverridedefhashCode():Int=index}Rdd編號(hào)分區(qū)編號(hào)Data+存儲(chǔ)介質(zhì)寬依賴:一個(gè)父RDD的Partition會(huì)被多個(gè)子RDD的Partition所使用;例如:groupByKey、sort、partitionBy等。Spark理論基礎(chǔ)Spark核心概念-RDD依賴RDD針對(duì)“轉(zhuǎn)換”操作,都提供了對(duì)應(yīng)的繼承自RDD的類型。提供數(shù)據(jù)的RDD稱為父RDD,新的RDD稱為子RDD。RDD繼承具備單向性。*窄依賴:一個(gè)父RDD最多對(duì)應(yīng)一個(gè)子RDD;在一個(gè)集群節(jié)點(diǎn)上管道式執(zhí)行;比如map、filter、union等。Spark理論基礎(chǔ)Spark核心概念-RDD依賴與Stage切分Stage的依據(jù):調(diào)度器會(huì)計(jì)算RDD之間的依賴關(guān)系,將擁有持續(xù)窄依賴的RDD歸并到同一個(gè)Stage中,寬依賴則作為劃分不同Stage的判斷標(biāo)準(zhǔn)。*從后往前推,遇到寬依賴就斷開(kāi),劃分為一個(gè)stage;遇到窄依賴,將該RDD加入當(dāng)前stage。Spark理論基礎(chǔ)Spark核心概念—Stage分類ResultStage是最終Stage,不進(jìn)行輸出,而是直接產(chǎn)生結(jié)果或存儲(chǔ)。ShuffleMapStage

為“非最終Stage”,后面還有其他的Stage,它的輸出需要進(jìn)行Shuffle后作為后續(xù)Stage的輸入一個(gè)Job里面必須包含至少一個(gè)ResultStage,但可以沒(méi)有ShuffleMapStage!Spark理論基礎(chǔ)Spark核心概念-RDD依賴與容錯(cuò)機(jī)制*RDD實(shí)現(xiàn)了基于血統(tǒng)的容錯(cuò)機(jī)制(Lineage)。RDD的轉(zhuǎn)換關(guān)系構(gòu)成computechain,便是RDD之間演化的Lineage。在部分計(jì)算結(jié)果丟失時(shí),只需要根據(jù)Lineage重算即可。在很多分布式數(shù)據(jù)處理系統(tǒng)中通過(guò)備份來(lái)進(jìn)行容錯(cuò),這種容錯(cuò)方式會(huì)導(dǎo)致巨大存儲(chǔ)消耗,spark的lineage圖只需要十幾kb存儲(chǔ)空間。Spark允許用戶將數(shù)據(jù)cache下來(lái)。Spark理論基礎(chǔ)Spark核心概念-RDD依賴與容錯(cuò)機(jī)制檢查點(diǎn)支持(checkpoint):雖然lineage可用于錯(cuò)誤后RDD的恢復(fù),但對(duì)于很長(zhǎng)的lineage的RDD來(lái)說(shuō),這樣的恢復(fù)耗時(shí)較長(zhǎng)。由此,可以考慮將某些RDD進(jìn)行checkpoint,保存到穩(wěn)定存儲(chǔ)上。Spark提供為RDD設(shè)置檢查點(diǎn)操作的API,讓用戶自行決定需要為哪些數(shù)據(jù)設(shè)置檢查點(diǎn)操作。由于RDD的只讀特性使得比常用的共享內(nèi)存更容易做checkpoint。由于不需要關(guān)心一致性的問(wèn)題,RDD的寫出可在后臺(tái)進(jìn)行,而不需要程序暫?;蜻M(jìn)行分布式快照。*Spark理論基礎(chǔ)Spark核心概念-任務(wù)調(diào)度Scheduler模塊主要有兩個(gè):DAGScheduler和TaskScheduler。*Spark理論基礎(chǔ)Spark核心概念-任務(wù)調(diào)度*DAGScheduler負(fù)責(zé)將Task拆分成不同Stage的具有依賴關(guān)系的多批任務(wù),然后提交給TaskScheduler進(jìn)行具體處理。TaskScheduler負(fù)責(zé)實(shí)際每個(gè)具體Task的物理調(diào)度。Spark理論基礎(chǔ)Spark部署模式Y(jié)ARN*ResourceManager(RM)全局的資源管理器,負(fù)責(zé)系統(tǒng)的資源管理和分配;NodeManager(NM)每個(gè)節(jié)點(diǎn)的資源和任務(wù)管理器;ApplicationMaster(AM)每個(gè)應(yīng)用程序都有一個(gè),負(fù)責(zé)任務(wù)的調(diào)度和監(jiān)視,并與RM調(diào)度器協(xié)商為任務(wù)獲取資源。YARN是Hadoop2.0的資源管理系統(tǒng),目標(biāo)不再局限于只支持MapReduce,而是朝多種框架統(tǒng)一管理的方向發(fā)展(即共享集群),使資源的利用率更高。Spark理論基礎(chǔ)Spark部署模式standalone*Driver運(yùn)行在ClientDriver運(yùn)行在Worker執(zhí)行流程描述(Jar的方式起任務(wù))客戶端把作業(yè)發(fā)布到Master;Master讓一個(gè)Worker啟動(dòng)Driver,并將作業(yè)推送給Driver;Driver進(jìn)程生成一系列task;Driver向Master申請(qǐng)資源;Master讓調(diào)度的Worker啟動(dòng)Exeuctor;Exeuctor啟動(dòng)后向Driver注冊(cè);Driver將task調(diào)度到Exeuctor執(zhí)行;Executor執(zhí)行結(jié)果寫入文件或返回Driver。執(zhí)行流程描述(IDE里面起任務(wù))客戶端啟動(dòng)后直接運(yùn)行用戶程序,啟動(dòng)Driver;Driver進(jìn)程生成一系列task;Driver向Master申請(qǐng)資源;Master讓調(diào)度的Worker啟動(dòng)Exeuctor;Exeuctor啟動(dòng)后向Driver注冊(cè);Driver將task調(diào)度到Exeuctor執(zhí)行;Executor執(zhí)行結(jié)果寫入文件或返回Driver。Spark理論基礎(chǔ)Spark部署模式Y(jié)ARN*YarnClientYarnClusterDriver運(yùn)行在AM(ApplicationMaster):客戶端把作業(yè)發(fā)布到Y(jié)ARN;RM為該job在某個(gè)NM上分配一個(gè)AM,NM啟動(dòng)AppMaster,AppMaster啟動(dòng)Driver;AM啟動(dòng)后完成初始化作業(yè)。Driver生成一系列Task;AM向RM申請(qǐng)資源,RM返回Executor信息;AM通過(guò)RPC啟動(dòng)相應(yīng)的SparkExecutor;Driver向Executor分配task;Executor執(zhí)行結(jié)果寫入文件或返回Driver。Driver運(yùn)行在Cleint:客戶端啟動(dòng)后直接運(yùn)行用戶程序,直接啟動(dòng)Driver;2.

Driver初始化并生成一系列Task;客戶端將AppCommands發(fā)布到Y(jié)ARN;RM為該job在某個(gè)NM上分配一個(gè)AM;AM向RM申請(qǐng)資源,RM返回Executor信息;AM通過(guò)RPC啟動(dòng)相應(yīng)的SparkExecutor;Exeuctor啟動(dòng)后向Driver注冊(cè);Driver向Executor分配task;Executor執(zhí)行結(jié)果寫入文件或返回Driver。Spark理論基礎(chǔ)Spark應(yīng)用*適用場(chǎng)景Spark是基于內(nèi)存的迭代計(jì)算框架,適用于需要多次操作特定數(shù)據(jù)集的應(yīng)用場(chǎng)合。需要反復(fù)操作的次數(shù)越多,所需讀取的數(shù)據(jù)量越大,受益越大,數(shù)據(jù)量小但是計(jì)算密集度較大的場(chǎng)合,受益就相對(duì)較小由于RDD的特性,Spark不適用那種異步細(xì)粒度更新?tīng)顟B(tài)的應(yīng)用。對(duì)于增量修改的應(yīng)用模型不適合。總的來(lái)說(shuō)Spark的適用面比較廣泛且比較通用。不適用場(chǎng)景目前大數(shù)據(jù)在互聯(lián)網(wǎng)公司主要把Spark應(yīng)用在廣告、報(bào)表、推薦系統(tǒng)等業(yè)務(wù)上。在廣告業(yè)務(wù)方面需要大數(shù)據(jù)做應(yīng)用分析、效果分析、定向優(yōu)化等在推薦系統(tǒng)方面則需要大數(shù)據(jù)優(yōu)化相關(guān)排名、個(gè)性化推薦以及熱點(diǎn)點(diǎn)擊分析等。這些應(yīng)用場(chǎng)景的普遍特點(diǎn)是計(jì)算量大、效率要求高。Spark恰恰滿足了這些要求。目錄一、大數(shù)據(jù)分析技術(shù)需求二、分布式并行計(jì)算思想三、MapReduce理論基礎(chǔ)四、Spark理論基礎(chǔ)五、編程示例編程示例編程示例—二維矩陣乘法

編程示例—二維矩陣乘法串行方法intA[m][n],B[n][p],C[m][n];for(i=0;i<m;i++){for(j=0;j<p;j++){C[i][j]=0;for(k=0;k<n;k++)C[i][j]+=A[i][k]*B[k][j];}}采用3層串行循環(huán)的方法解決二維矩陣的相乘,計(jì)算復(fù)雜度為O(n^3)。Spark理論基礎(chǔ)編程示例—二維矩陣乘法MapReduce方法MapReduce將矩陣各個(gè)元素的值計(jì)算進(jìn)行分離同時(shí)并行計(jì)算。顯而易見(jiàn),MapReduce可以將計(jì)算效率提高至串行計(jì)算的約m×n倍。Spark理論基礎(chǔ)編程示例—二維矩陣乘法Spark方法//矩陣A,按照行進(jìn)行并行化valparamatrix1=sc.parallelize(List(Vector(1,2,3),Vector(4,5,0),Vector(7,8,9),Vector(10,11,12)))//矩陣B,按照列進(jìn)行并行化

valparamatrix2=sc.parallelize(List(Vector(10,0,11),Vector(15,2,9),))valm2=

paramatrix1.cartesian(paramatrix2)valtemp=m2.map(x=>x._1.dot(x._2))你能將spark計(jì)算方法補(bǔ)完整嗎?你能說(shuō)出spark計(jì)算的優(yōu)勢(shì)嗎?大家練習(xí)一下吧!推薦資料*

AnArchitectureforFastandGeneralDataProcessingonLargeClusters/docs/latest/工業(yè)大數(shù)據(jù)與新一代人工智能目錄傳統(tǒng)人工智能與新一代人工智能新一代人工智能的基礎(chǔ)算法工業(yè)大數(shù)據(jù)在新一代人工智能的定位010203學(xué)習(xí)目標(biāo)1.了解人工智能“三起兩落”的發(fā)展史以及每一階段的特征2.了解人工智能的基本概念、研究?jī)?nèi)容和實(shí)現(xiàn)方法3.了解新一代人工智能的研究?jī)?nèi)容及其去傳統(tǒng)人工智能的三大區(qū)別4.掌握深層神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)的基本原理5.了解深度學(xué)習(xí)的發(fā)展方向6.了解工業(yè)大數(shù)據(jù)與新一代人工智能的關(guān)系01傳統(tǒng)人工智能與新一代人工智能傳統(tǒng)人工智能與新一代人工智能新一代人工智能及其與傳統(tǒng)人工智能區(qū)別人工智能發(fā)展史人工智能概述人工智能發(fā)展史自機(jī)械設(shè)備使人類從重復(fù)繁重的體力勞動(dòng)中解放以來(lái),人們還希望能從腦力勞動(dòng)中解放出來(lái),因而研究者們開(kāi)始轉(zhuǎn)向智能化人工系統(tǒng)的研究。1956年,達(dá)特茅斯會(huì)議正式標(biāo)志著人工智能研究進(jìn)入第一次發(fā)展階段。斯坦福大學(xué)JohnMcCarthy教授麻省理工學(xué)院MarvinLeeMinsky教授卡內(nèi)基梅隆大學(xué)HerbertSimont卡內(nèi)基梅隆大學(xué)AllenNewell教授在美國(guó)召開(kāi)的達(dá)特茅斯會(huì)議上正式確立“人工智能”為獨(dú)立的新興學(xué)科“信息理論之父”ClaudeElwoodShannonIBM公司NathanielRochester第一次發(fā)展與低谷階段知識(shí)人為提供,決策固化盡管這些成果在一定程度上可以代替人類重復(fù)性的腦力勞動(dòng),但當(dāng)時(shí)的AI程序基本屬于確定性的輸入輸出,即輸入的對(duì)象特征、分析的規(guī)則都是人為制定,得到的輸出結(jié)果同樣是確定的,稱之為“知識(shí)人為提供,決策固化”。顯然,這也決定此類算法所能解決問(wèn)題的局限性,導(dǎo)致第一次研究熱潮逐漸褪去。上世紀(jì)50~70年代是人工智能發(fā)展的第一次黃金時(shí)代。1.具有學(xué)習(xí)特性的“感知機(jī)模型”被提出2.“尤尼梅特”作為世界上首款工業(yè)機(jī)器人在通用公司生產(chǎn)線上服役工作3.IBM公司的360型計(jì)算機(jī)稱為第一款規(guī)模化生產(chǎn)的計(jì)算機(jī)等第二次發(fā)展階段知識(shí)人為提供,決策靈活知識(shí)層面決策層面上世紀(jì)80年代,人工智能開(kāi)始復(fù)蘇。專家系統(tǒng)隨機(jī)算法專家系統(tǒng)是一種可模擬人類專家解決相關(guān)領(lǐng)域問(wèn)題的計(jì)算機(jī)程序系統(tǒng),它被眾多公司采納并實(shí)現(xiàn)了市場(chǎng)化應(yīng)用。該系統(tǒng)由人機(jī)界面、知識(shí)庫(kù)、推理機(jī)、解釋器、綜合數(shù)據(jù)庫(kù)和知識(shí)獲取六大部分組成。計(jì)算機(jī)根據(jù)知識(shí)庫(kù)通過(guò)推理機(jī)對(duì)問(wèn)題進(jìn)行分析學(xué)習(xí)。以蒙特卡羅樹(shù)搜索算法為代表的隨機(jī)算法是將抽取樣本進(jìn)行遍歷,減小計(jì)算量同時(shí)保障較優(yōu)解來(lái)解決上述問(wèn)題,這種選取較優(yōu)解的方法使得決策更加靈活。隨機(jī)算法:蒙特卡羅樹(shù)搜索算法蒙特卡羅樹(shù)搜索(MonteCarloTreeSearch,MCTS)算法:它因賭博中多用到隨機(jī)算法而以賭城蒙特卡羅命名,其基本原理可通過(guò)簡(jiǎn)易的“黑箱摸球”示例理解。假定黑箱中有100個(gè)相同大小的球,每球貼有數(shù)字,大小不一;隨機(jī)取一球,再隨機(jī)取一球,挑數(shù)字大者,如此循環(huán),挑出的球的數(shù)字至少不比上一次所挑數(shù)字小;隨取球次數(shù)增加,挑出的數(shù)字越接近箱中最大數(shù)。簡(jiǎn)言之,經(jīng)一定搜索采樣后,選擇樣本最優(yōu)者,其接近全局最優(yōu)但不一定是全局最優(yōu)。此類算法受歡迎在于:盡管遍歷數(shù)據(jù)集再作出決策固然能得到最優(yōu)解,但當(dāng)輸入為高維隨機(jī)變量時(shí),可能的結(jié)果種類將達(dá)到指數(shù)級(jí)的數(shù)據(jù)量,這對(duì)計(jì)算機(jī)決策而言將造成維數(shù)災(zāi)難,隨機(jī)算法采用折中辦法,既減小計(jì)算量又保障較優(yōu)解,因而決策靈活?!吧钏{(lán)”戰(zhàn)勝國(guó)際象棋世界冠軍1997年,IBM公司的超級(jí)計(jì)算機(jī)“深藍(lán)”以3.5:2.5戰(zhàn)勝當(dāng)時(shí)的國(guó)際象棋世界冠軍卡斯帕羅夫。盡管卡斯帕羅夫本人及部分人認(rèn)為人有情緒波動(dòng)而計(jì)算機(jī)無(wú)此缺陷,才使深藍(lán)“作弊”勉勝,但是——(1)當(dāng)時(shí)的深藍(lán)計(jì)算機(jī)已使用專家系統(tǒng),基于大量棋譜訓(xùn)練集遍歷所有走法;(2)由于“下一步棋”的走法可能性過(guò)多,故通過(guò)蒙特卡羅樹(shù)搜索決定較優(yōu)落子方法,使其在國(guó)際象棋方面有機(jī)會(huì)與頂級(jí)選手較量。因此,“深藍(lán)”的成功也標(biāo)志著人工智能往前大跨一步,實(shí)現(xiàn)“知識(shí)人為提供,決策靈活”。第二次低谷階段2.人工神經(jīng)網(wǎng)絡(luò)的理論模型可以解決專家系統(tǒng)的弊端,但其需要的超級(jí)計(jì)算能力與海量數(shù)據(jù)這兩大基礎(chǔ)在當(dāng)時(shí)無(wú)法實(shí)現(xiàn)。1.專家系統(tǒng)終究是依賴于人類整理的知識(shí)庫(kù),無(wú)法實(shí)現(xiàn)對(duì)更復(fù)雜問(wèn)題的求解;因此,人工智能的研究熱再次熄滅。第三次發(fā)展階段知識(shí)自主學(xué)習(xí),決策靈活2016年,區(qū)別于深藍(lán)的勉勝,Google公司的智能機(jī)器人AlphaGo以4:1的大比分戰(zhàn)勝圍棋世界冠軍李世石,甚至李世石本人也對(duì)AlphaGo棋藝的大幅進(jìn)步而震驚。這一重大事件也標(biāo)志著人工智能終于迎來(lái)全新發(fā)展階段?!吧钏{(lán)”AlphaGo深藍(lán)嚴(yán)格意義上只可稱為“手工”程序。保留深藍(lán)的優(yōu)點(diǎn)基礎(chǔ)上,還真正實(shí)現(xiàn)自我學(xué)習(xí)的能力。李世石與AlphaGo的人機(jī)大戰(zhàn)第三次發(fā)展階段第三次發(fā)展源自計(jì)算機(jī)的計(jì)算量與海量數(shù)據(jù)兩大問(wèn)題已不再是瓶頸,這也使得人工神經(jīng)網(wǎng)絡(luò)得以發(fā)揮作用;且“評(píng)價(jià)網(wǎng)絡(luò)”與“策略網(wǎng)絡(luò)”兩種深層神經(jīng)網(wǎng)絡(luò)成功應(yīng)用于AlphaGo的圍棋算法中。1.評(píng)價(jià)網(wǎng)絡(luò)可根據(jù)當(dāng)前局勢(shì)計(jì)算己方最終的勝率;2.策略網(wǎng)絡(luò)則可以判斷對(duì)手最可能的落子點(diǎn);3.決策仍是基于蒙特卡羅樹(shù)搜索算法確定己方的下一步最佳落子點(diǎn)。受限于專家系統(tǒng),深藍(lán)更多只可適用于國(guó)際象棋的對(duì)弈。AlphaGo的算法則因?yàn)槿斯ど窠?jīng)網(wǎng)絡(luò)自學(xué)習(xí)知識(shí)的特點(diǎn)沒(méi)有領(lǐng)域限制,更容易實(shí)現(xiàn)泛化。盡管人工神經(jīng)網(wǎng)絡(luò)往往在具備海量數(shù)據(jù)集的前提下才能發(fā)揮優(yōu)勢(shì),這與人類大腦對(duì)于任意領(lǐng)域均能實(shí)現(xiàn)基于少量樣例便可進(jìn)行演繹推理的能力無(wú)法比擬,也正說(shuō)明與強(qiáng)人工智能的愿景尚有差距,但技術(shù)的不斷突破與商業(yè)化應(yīng)用無(wú)疑使人工智能更進(jìn)一步。人工智能概述:基本概念人工智能(ArtificialIntelligence,AI)自誕生以來(lái)出現(xiàn)過(guò)多種定義。美國(guó)斯坦福大學(xué)人工智能研究中心的尼爾遜(Nelson)教授曾認(rèn)為,“人工智能是關(guān)于知識(shí)的學(xué)科——即怎樣表示知識(shí)以及怎樣獲得知識(shí)并使用知識(shí)的科學(xué)?!泵绹?guó)麻省理工學(xué)院的溫斯頓(Winston)教授則定義,“人工智能就是研究如何使計(jì)算機(jī)去做過(guò)去只有人才能做的智能工作?!比斯ぶ悄埽貉芯咳祟愔悄芑顒?dòng)的規(guī)律,通過(guò)計(jì)算機(jī)的軟硬件模擬、延伸和擴(kuò)展人的某些思維過(guò)程和智能行為,從而創(chuàng)造出具有一定智能程度的人工系統(tǒng)。從另一個(gè)角度,人工智能雖是計(jì)算機(jī)科學(xué)的一個(gè)分支,但又涉及心理學(xué)、哲學(xué)、語(yǔ)言學(xué)等多種社會(huì)科學(xué),已遠(yuǎn)遠(yuǎn)超出計(jì)算機(jī)科學(xué)的范疇,因此她可獨(dú)立成為一門研究智能理論、方法、技術(shù)及應(yīng)用系統(tǒng)的新技術(shù)科學(xué)。人工智能概述:研究?jī)?nèi)容人類通過(guò)將小白鼠的聽(tīng)覺(jué)中樞與視覺(jué)神經(jīng)進(jìn)行人為連接,發(fā)現(xiàn)聽(tīng)覺(jué)中樞擁有視覺(jué)功能,驗(yàn)證了包括人類在內(nèi)的哺乳動(dòng)物的大腦中各塊區(qū)域都擁有類似的學(xué)習(xí)機(jī)制,這為研究具有通用性智能的機(jī)器或稱為具備多元智能的系統(tǒng)提供了理論基礎(chǔ)。但是考慮到通用性智能的實(shí)現(xiàn)復(fù)雜性,研究者們決定先從單一模塊分別實(shí)現(xiàn)突破。人工智能研究?jī)?nèi)容人類特征眼耳口鼻舌等感官語(yǔ)言交流能力運(yùn)動(dòng)能力學(xué)習(xí)能力情感規(guī)劃知識(shí)庫(kù)自主感知自然語(yǔ)言處理運(yùn)動(dòng)與控制機(jī)器學(xué)習(xí)情感社交智能規(guī)劃知識(shí)表示法人工智能概述:研究?jī)?nèi)容【自主感知】包括機(jī)器視覺(jué)、計(jì)算機(jī)視覺(jué)等圖像處理類技術(shù),以及機(jī)器聽(tīng)覺(jué)、語(yǔ)音識(shí)別等技術(shù);【自然語(yǔ)言處理】就狹義角度而言,即將語(yǔ)音識(shí)別的結(jié)果以及其他來(lái)源作為自然語(yǔ)言處理的素材,并轉(zhuǎn)化成適于另一群體使用的語(yǔ)言結(jié)果的技術(shù);【運(yùn)動(dòng)控制】智能系統(tǒng)如智能機(jī)器人能根據(jù)環(huán)境完成正確的運(yùn)動(dòng)并實(shí)現(xiàn)自主控制的技術(shù);【機(jī)器學(xué)習(xí)】模擬人類的學(xué)習(xí)行為獲取新的知識(shí)并實(shí)現(xiàn)知識(shí)的轉(zhuǎn)化應(yīng)用,機(jī)器學(xué)習(xí)也是人工智能的核心技術(shù),是計(jì)算機(jī)具備智能的根本途徑;【情感社交】計(jì)算機(jī)通過(guò)情感計(jì)算對(duì)人給予的反應(yīng)作出表情、姿態(tài)、語(yǔ)氣等的變化,實(shí)現(xiàn)人機(jī)交互更加和諧;【智能規(guī)劃】通過(guò)建立自我的世界模型,并與真實(shí)世界進(jìn)行對(duì)比,根據(jù)預(yù)測(cè)與現(xiàn)實(shí)的差別進(jìn)行計(jì)劃的制定與調(diào)整;【知識(shí)表示法】通過(guò)邏輯表示法或產(chǎn)生式表示法等表示方法搭建常識(shí)知識(shí)庫(kù),用作計(jì)算機(jī)決策的知識(shí)來(lái)源之一。此外,人類也具備創(chuàng)造力,即在某些特定情況下的一種不依賴于量變而產(chǎn)生質(zhì)變的特殊模式,這也是人工智能尚待研究攻克的內(nèi)容之一。人工智能概述:實(shí)現(xiàn)方法【機(jī)器學(xué)習(xí)】正如Google所言,“先解決智能問(wèn)題,再用智能解決一切問(wèn)題?!比说母呒?jí)屬性在于可通過(guò)學(xué)習(xí)獲取知識(shí),然后用于解決問(wèn)題,并且良性循環(huán),不斷提高;因而人工智能的關(guān)鍵就在于能否真正使計(jì)算機(jī)如人類一般進(jìn)行學(xué)習(xí)和提高,這便是為什么機(jī)器學(xué)習(xí)是人工智能的核心技術(shù)。從學(xué)習(xí)策略角度,機(jī)器學(xué)習(xí)可進(jìn)行如下分類。機(jī)器學(xué)習(xí)歸納學(xué)習(xí):經(jīng)驗(yàn)性歸納學(xué)習(xí)事實(shí)上,分類與回歸問(wèn)題本質(zhì)上均為根據(jù)輸入對(duì)輸出作預(yù)測(cè),而分類問(wèn)題的輸出是一種定性輸出,即離散型變量;而回歸問(wèn)題的輸出則是一種定量輸出,即連續(xù)型變量。經(jīng)驗(yàn)性歸納學(xué)習(xí)主要用于解決分類問(wèn)題和回歸問(wèn)題:分類可理解為數(shù)據(jù)劃分界限,譬如輸入人臉圖片輸出人物身份識(shí)別結(jié)果;回歸可理解為數(shù)據(jù)擬合,譬如輸入人臉圖片輸出人物年齡預(yù)測(cè)。經(jīng)驗(yàn)性歸納學(xué)習(xí)決策樹(shù)模型算法樸素貝葉斯模型算法支持向量機(jī)算法等邏輯回歸算法歸納學(xué)習(xí):經(jīng)驗(yàn)性歸納學(xué)習(xí)決策樹(shù)模型決策樹(shù)模型(DecisionTreeModel,DTM)是在已知各種情況發(fā)生概率的基礎(chǔ)上,通過(guò)構(gòu)成決策樹(shù)來(lái)求取各期望值的概率(非負(fù)數(shù)),評(píng)價(jià)事件風(fēng)險(xiǎn)來(lái)判斷其可行性的決策分析方法,是直觀運(yùn)用概率分析的一種樹(shù)狀結(jié)構(gòu)的圖解法,也是最簡(jiǎn)單的歸納學(xué)習(xí)算法,并且決策過(guò)程近似于人類在社會(huì)環(huán)境中的邏輯思維過(guò)程。建立決策樹(shù)模型主要包括四項(xiàng)內(nèi)容:1.模型欲實(shí)現(xiàn)的目標(biāo);2.根節(jié)點(diǎn),表示訓(xùn)練數(shù)據(jù)集;4.葉節(jié)點(diǎn),表示模型的判定結(jié)果。3.內(nèi)部節(jié)點(diǎn),表示多層測(cè)試條件,以對(duì)數(shù)據(jù)進(jìn)行分類純化;注:訓(xùn)練數(shù)據(jù)集是已知特征屬性的數(shù)據(jù)樣本,是決策樹(shù)結(jié)構(gòu)形成過(guò)程的數(shù)據(jù)源。歸納學(xué)習(xí):經(jīng)驗(yàn)性歸納學(xué)習(xí)“高爾夫球場(chǎng)的顧客”問(wèn)題在不同環(huán)境下,高爾夫球場(chǎng)的顧客量會(huì)出現(xiàn)很大的波動(dòng),這當(dāng)然也會(huì)影響服務(wù)員人員的需求量。比如在下雨時(shí),顧客量會(huì)很少,服務(wù)人員的需求量就會(huì)小,而在陰天時(shí),顧客量可能就會(huì)多,服務(wù)人員的需求量自然就大。因此,球場(chǎng)可以記錄不同天氣情況下的顧客訪問(wèn)量,從而預(yù)測(cè)出未來(lái)指定時(shí)間段內(nèi)的服務(wù)人員需求量。日期天氣氣溫(℃)相對(duì)濕度(%)有/無(wú)風(fēng)有/無(wú)顧客1晴2985無(wú)無(wú)2晴2790有無(wú)3多云2878無(wú)有4雨2196無(wú)有5雨2080無(wú)有6雨1870有無(wú)7多云1765有有8晴2295無(wú)無(wú)9晴2070無(wú)有10雨2480無(wú)有11晴2470有有12多云2290有有13多云2775無(wú)有14雨2180有無(wú)兩周高爾夫球場(chǎng)顧客數(shù)據(jù)集歸納學(xué)習(xí):經(jīng)驗(yàn)性歸納學(xué)習(xí)“高爾夫球場(chǎng)的顧客”問(wèn)題建立高爾夫球場(chǎng)顧客問(wèn)題的決策樹(shù)模型:歸納學(xué)習(xí):經(jīng)驗(yàn)性歸納學(xué)習(xí)“高爾夫球場(chǎng)的顧客”問(wèn)題由此,本示例建立的決策樹(shù)模型將顧客打球時(shí)間與原因進(jìn)行了有效的分類,并為將來(lái)的實(shí)際待測(cè)數(shù)據(jù)集提供了預(yù)測(cè)模型,即只要根據(jù)今后的天氣相關(guān)指標(biāo)值便可推測(cè)出當(dāng)日是否會(huì)有顧客光臨,從而靈活調(diào)整雇員數(shù)量,包括固定員工與臨時(shí)工的合理搭配等。1.單論天氣情況,可得出第一層結(jié)論,即多云天氣時(shí),顧客總是喜歡打高爾夫球,而晴雨天則視情況而定;2.晴天時(shí),顧客喜歡在相對(duì)濕度低于70的日子里打高爾夫球,或在雨天時(shí),只要無(wú)風(fēng),也有狂熱的愛(ài)好者前來(lái)打球;但在晴雨天的其他情況下,顧客則不會(huì)選擇打球。上述決策樹(shù)模型的根節(jié)點(diǎn)的訓(xùn)練數(shù)據(jù)集即來(lái)自“兩周高爾夫球場(chǎng)顧客數(shù)據(jù)集”表格,其中天氣、氣溫、相對(duì)濕度、有/無(wú)風(fēng)等特征值為測(cè)試條件,且須遵從選擇可令子集純度更高的測(cè)試條件作為最優(yōu)特征值進(jìn)行劃分。根據(jù)決策樹(shù)模型可知:歸納學(xué)習(xí):經(jīng)驗(yàn)性歸納學(xué)習(xí)樸素貝葉斯模型樸素貝葉斯模型(NaiveBayesianModel,NBM)算法也是一種基于概率論的預(yù)測(cè)算法。其核心法則是基于如下條件概率公式:

假設(shè)有特征:性別、有無(wú)紋身等,根據(jù)這些樣貌特征,我們訓(xùn)練出一個(gè)標(biāo)準(zhǔn)的“好人模型”和“壞人模型”。這樣,當(dāng)一個(gè)品行未知的人來(lái)以后,我們迅速獲取TA的樣貌特征向量,分布輸入“好人模型”和“壞人模型”,得到兩個(gè)概率值。如果“壞人模型”輸出的概率值大一些,那這個(gè)人很有可能就是個(gè)大壞蛋了。歸納學(xué)習(xí):經(jīng)驗(yàn)性歸納學(xué)習(xí)邏輯回歸支持向量機(jī)支持向量機(jī)(SupportVectorMachine,SVM)算法通過(guò)尋找兩個(gè)平行的超平面并使之距離最大化實(shí)現(xiàn)分類。邏輯回歸(LogisticRegression,LR)算法通過(guò)擬合曲線實(shí)現(xiàn)分類或回歸。盡管用于分類的算法眾多,但因各自優(yōu)缺點(diǎn)而有各自的適用范圍。1.決策樹(shù)的優(yōu)點(diǎn)在于屬于白盒模型,即無(wú)需專業(yè)解讀,具有天然的解釋性;但缺點(diǎn)在于對(duì)異常值敏感,易導(dǎo)致樹(shù)結(jié)構(gòu)的巨大變化,以及對(duì)未出現(xiàn)過(guò)的值束手無(wú)策導(dǎo)致泛化能力不足;2.樸素貝葉斯模型優(yōu)點(diǎn)是其源于古典數(shù)學(xué)理論,分類效率穩(wěn)定,且對(duì)缺失數(shù)據(jù)不敏感;但其缺點(diǎn)在于各個(gè)特征相互獨(dú)立的假設(shè)在實(shí)際應(yīng)用中往往不成立,這對(duì)概率計(jì)算值的真實(shí)性造成影響;3.邏輯回歸的優(yōu)點(diǎn)是其計(jì)算代價(jià)低,易于實(shí)現(xiàn);缺點(diǎn)在于易出現(xiàn)欠擬合,導(dǎo)致分類精度可能不高;4.持向量機(jī)的優(yōu)點(diǎn)在于其對(duì)異常值敏感度低,易于泛化;缺點(diǎn)是對(duì)大規(guī)模訓(xùn)練數(shù)據(jù)集難以實(shí)施,以及難以解決多分類的問(wèn)題。歸納學(xué)習(xí):遺傳算法遺傳算法的基本過(guò)程如下:確定實(shí)際問(wèn)題的參數(shù)集并進(jìn)行編碼得到初始化的種群,再通過(guò)適應(yīng)度函數(shù)評(píng)價(jià)種群,若當(dāng)前解已滿足評(píng)價(jià)要求,則結(jié)束,此解即所求期望解;若當(dāng)前解不滿足停止規(guī)則,則進(jìn)行遺傳操作,包括選擇、交叉和變異,從而迭代產(chǎn)生新一種群,隨后重復(fù)評(píng)估適應(yīng)度及后續(xù)過(guò)程,直至得到期望解。遺傳算法(GeneticAlgorithm,GA)主要用于解決搜索問(wèn)題。自上世紀(jì)90年代后,它的應(yīng)用已從函數(shù)優(yōu)化、車間調(diào)度等范圍擴(kuò)展至基于遺傳算法的機(jī)器學(xué)習(xí)領(lǐng)域,并且遺傳算法也正日益和人工神經(jīng)網(wǎng)絡(luò)、模糊推理及混沌理論等其他智能計(jì)算方法互相滲透融合。歸納學(xué)習(xí):遺傳算法以典型的“袋鼠跳”來(lái)描述遺傳算法的求解過(guò)程。假定需要求解函數(shù)曲線的最大值,而函數(shù)曲線圖有多個(gè)極大、極小值?,F(xiàn)將曲線圖理解為一座山脈,有多處山峰與山谷,令隨機(jī)得到的一組解作為第一群袋鼠散落于山脈不同位置中,并讓袋鼠不斷往高處跳(逼近),直至有袋鼠跳至最高山峰處。袋鼠跳的方法有多種:1.

“爬山法”:由于是依賴隨機(jī)產(chǎn)生的單點(diǎn)往周邊進(jìn)行跳躍尋找高峰,故易導(dǎo)致到達(dá)局部最優(yōu)解即停止,而可能無(wú)法到達(dá)全局最優(yōu)解;1.遺傳算法:不以單點(diǎn)跳躍,而是多點(diǎn)并行,即隨機(jī)產(chǎn)生一群袋鼠散落于山脈中,每隔一個(gè)周期,對(duì)低海拔的袋鼠進(jìn)行全體射殺,剩下高海拔的袋鼠存活,并且存活的袋鼠可進(jìn)行繁殖,在此地產(chǎn)生更多的袋鼠,同時(shí)袋鼠可以往周邊跳躍尋找附近的高峰;如此循環(huán),最后僅最高峰的袋鼠得以存活,即找到全局最優(yōu)解。若求最小值同理。2.

“模擬退火法”:通過(guò)令袋鼠有較大的跳躍量以解決遇到局部最優(yōu)解即停止的問(wèn)題,而可以有足夠能量跳過(guò)局部點(diǎn)并在接近全局最優(yōu)解時(shí)降低跳躍量直至到達(dá)全局最優(yōu)解,但仍是單點(diǎn)跳躍,跳躍時(shí)間長(zhǎng);注:遺傳算法具有其獨(dú)特的優(yōu)勢(shì),即算法與問(wèn)題涉及領(lǐng)域無(wú)關(guān),適用廣泛,同時(shí)不采用確定性規(guī)則而以概率的變遷規(guī)則指導(dǎo)搜索方向;但其不足在于搜索速度較慢,欲得到精確解需較長(zhǎng)訓(xùn)練時(shí)間等。歸納學(xué)習(xí):聯(lián)結(jié)學(xué)習(xí)聯(lián)結(jié)學(xué)習(xí)主要指人工神經(jīng)網(wǎng)絡(luò)(ArtificialNeuralNetwork,ANN)算法,是一種模擬人腦神經(jīng)元網(wǎng)絡(luò)的信息處理模型,自上世紀(jì)50年代起,至今已發(fā)展60余年。經(jīng)歷了淺層神經(jīng)網(wǎng)絡(luò)到深層神經(jīng)網(wǎng)絡(luò)(深度學(xué)習(xí)算法)的發(fā)展歷程。深層神經(jīng)網(wǎng)絡(luò)淺層神經(jīng)網(wǎng)絡(luò)單層線性感知機(jī)模型多層非線性感知機(jī)模型歸納學(xué)習(xí):聯(lián)結(jié)學(xué)習(xí)淺層神經(jīng)網(wǎng)絡(luò)起初,F(xiàn)rankRosenblatt教授在由美國(guó)心理學(xué)家McCulloch和數(shù)學(xué)家Pitts提出的“人工神經(jīng)元模型”,或稱為“M-P神經(jīng)元模型”的基礎(chǔ)上,于1958年正式定義“感知機(jī)(MultilayerPerceptron,MLP)模型”。圖中的單層單神經(jīng)元感知機(jī)模型中,x1~xn為n個(gè)從研究對(duì)象提取的特征值,w為權(quán)重值,b為激活閾值,所有特征值xi通過(guò)線性加權(quán)和作為輸入,f為激活函數(shù)。當(dāng)模型完成輸入后,經(jīng)激活函數(shù)作用,若其值大于設(shè)定閾值,則輸出階躍值1激活,反之則輸出階躍值0抑制,從形式上仿照人體神經(jīng)元突觸處的興奮和抑制機(jī)制。歸納學(xué)習(xí):聯(lián)結(jié)學(xué)習(xí)淺層神經(jīng)網(wǎng)絡(luò)感知機(jī)模型還在于將各輸入值的權(quán)重定義為可變,通過(guò)設(shè)置基于誤分類的損失函數(shù),利用梯度下降法對(duì)損失函數(shù)不斷迭代求得極小值,即可將權(quán)重調(diào)整至最接近真實(shí)的情況,這也使“感知機(jī)模型”被賦予學(xué)習(xí)的特性。但是單個(gè)神經(jīng)元的輸出只有0和1兩種情況,而實(shí)際對(duì)象的輸出往往有多種,需要通過(guò)多個(gè)神經(jīng)元共同完成分類。右圖是單層多神經(jīng)元感知機(jī)模型,由m個(gè)神經(jīng)元構(gòu)成,最多可區(qū)分出2^m種輸入模式。但無(wú)論神經(jīng)元個(gè)數(shù)有多少,它仍是單層的感知機(jī)模型。歸納學(xué)習(xí):聯(lián)結(jié)學(xué)習(xí)淺層神經(jīng)網(wǎng)絡(luò)在上世紀(jì)60年代末70年代初,盡管“感知機(jī)模型”調(diào)整權(quán)值的算法十分簡(jiǎn)潔,但隨著它的深入使用,研究者們遇到三層阻礙:1.單層的感知機(jī)模型只能解決可線性分割的問(wèn)題,對(duì)于非線性分割問(wèn)題如異或門則束手無(wú)策;2.當(dāng)時(shí)作為樣本輸入的數(shù)據(jù)量缺失;3.由于單層感知機(jī)模型的局限性,當(dāng)問(wèn)題復(fù)雜度提高,多神經(jīng)元感知機(jī)模型的神經(jīng)元數(shù)量增加,分類結(jié)果也將呈指數(shù)級(jí)增長(zhǎng),伴隨的是計(jì)算難度的指數(shù)級(jí)增長(zhǎng),而當(dāng)時(shí)計(jì)算機(jī)的計(jì)算量是遠(yuǎn)遠(yuǎn)達(dá)不到要求的。因此,人工神經(jīng)網(wǎng)絡(luò)自身的“單層感知機(jī)模型”存在不足與時(shí)代發(fā)展階段的外部因素共同限制進(jìn)一步其發(fā)展。歸納學(xué)習(xí):聯(lián)結(jié)學(xué)習(xí)深層神經(jīng)網(wǎng)絡(luò)直至80年代,“深層神經(jīng)網(wǎng)絡(luò)(DeepNeuralNetwork,DNN)”的出現(xiàn)有效克服了“單層感知機(jī)模型”無(wú)法解決異或運(yùn)算的問(wèn)題?!岸鄬印焙汀胺蔷€性”是“深層神經(jīng)網(wǎng)絡(luò)”的兩大特性:【多層】區(qū)別于單層感知機(jī)模型,其在輸入和輸出層間加入“隱層”,從而擴(kuò)展為多層感知機(jī)模型?!径鄬印矿w現(xiàn)在激活函數(shù)采用非線性函數(shù)。歸納學(xué)習(xí):聯(lián)結(jié)學(xué)習(xí)深層神經(jīng)網(wǎng)絡(luò)20世紀(jì)80-90年代21世紀(jì)至今80年代末90年代初,卷積神經(jīng)網(wǎng)絡(luò)與循環(huán)神經(jīng)網(wǎng)絡(luò)等當(dāng)下熱門的人工神經(jīng)網(wǎng)絡(luò)算法,與深層神經(jīng)網(wǎng)絡(luò)同樣得到較好的發(fā)展,并在當(dāng)下均被稱為“深度學(xué)習(xí)”算法。但同時(shí),神經(jīng)網(wǎng)絡(luò)的發(fā)展再次遇阻,此時(shí)的人工神經(jīng)網(wǎng)絡(luò)理論模型已取得可觀的進(jìn)展,卻仍然受制于當(dāng)時(shí)的計(jì)算機(jī)計(jì)算能力不足,以及可供使用的數(shù)據(jù)量無(wú)法達(dá)到訓(xùn)練深層神經(jīng)網(wǎng)絡(luò)所需的要求。直到近年來(lái),云計(jì)算等技術(shù)極大地提高計(jì)算系統(tǒng)的計(jì)算量,同時(shí)大數(shù)據(jù)的出現(xiàn)亦使得深層神經(jīng)網(wǎng)絡(luò)所需的海量數(shù)據(jù)不再成為制約,因此人工神經(jīng)網(wǎng)絡(luò)在自身理論成熟與外部技術(shù)環(huán)境支持的共同驅(qū)動(dòng)下,得到了空前的發(fā)展與應(yīng)用,也直接推動(dòng)了新一代人工智能的到來(lái)。演繹學(xué)習(xí):分析學(xué)習(xí)【歸納學(xué)習(xí)】從經(jīng)驗(yàn)性歸納學(xué)習(xí)、遺傳算法、聯(lián)結(jié)學(xué)習(xí)等算法的實(shí)現(xiàn)原理可以看出,歸納學(xué)習(xí)是指在大量樣例的前提下總結(jié)一般規(guī)律,創(chuàng)立新的概念、理論,再用于預(yù)測(cè)分析、解決智能問(wèn)題?!狙堇[學(xué)習(xí)】指在已知事實(shí)規(guī)律的前提下就少量樣例進(jìn)行推理分析,并不產(chǎn)生新的概念、知識(shí),是一種基于解釋的學(xué)習(xí)策略,以分析學(xué)習(xí)為典型實(shí)現(xiàn)算法。相對(duì)于歸納學(xué)習(xí),分析學(xué)習(xí)在可用訓(xùn)練數(shù)據(jù)不足的情況下較有優(yōu)勢(shì)。以珍稀物種中華鱘的識(shí)別為例,若歸納學(xué)習(xí)需要通過(guò)大量中華鱘圖片作為訓(xùn)練數(shù)據(jù)集得到識(shí)別中華鱘的算法模型,分析學(xué)習(xí)則是基于先驗(yàn)知識(shí),即將中華鱘相較其他動(dòng)物所特有的特征屬性與訓(xùn)練數(shù)據(jù)共同作為輸入,分析少量的訓(xùn)練數(shù)據(jù),明確這些樣例如何滿足中華鱘的目標(biāo)特征,則可基于邏輯推理而非統(tǒng)計(jì)推理對(duì)樣例進(jìn)行泛化。新一代人工智能及其與傳統(tǒng)人工智能區(qū)別人工智能自誕生以來(lái)每一次發(fā)展都會(huì)受阻,但沉默期之后也都會(huì)重新迎來(lái)曙光,現(xiàn)今正處于第三次發(fā)展階段。之所以稱為“新一代人工智能”,主要在于社會(huì)需求的變化、技術(shù)環(huán)境的變革以及人工神經(jīng)網(wǎng)絡(luò)理論的成熟這三大關(guān)鍵因素,這也是其與傳統(tǒng)人工智能的區(qū)別所在。有別于上世紀(jì)以學(xué)術(shù)牽引為主的AI研究,21世紀(jì)的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論