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

下載本文檔

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

文檔簡介

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

海量

復雜

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

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

Map映射

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

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

LetterCountReducer<Text,

IntWritable,

Text,

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

World

Hello

my

love

Hello

World

,

i

love

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

class

WordCountMapper

extends

Mapper<LongWritable,

Text,

Text,

IntWritable>{

/*

*

map方法是提供給map

task進程來調(diào)用的,map

task進程是每讀取一行文本來調(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理論基礎Mapreduce編程示例*統(tǒng)計單詞所有出現(xiàn)單詞的數(shù)量。Hello

World

Hello

my

love

Hello

World

,

i

love

you

Hello

1World

1Hello

1my

1love1Hello

1World

1

i

1love

1you

1MapReduce理論基礎Mapreduce編程示例-Reduce實現(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

{

//定義一個計數(shù)器

int

count

=

0;

//通過value這個迭代器,遍歷這一組kv中所有的value,進行累加

for(IntWritable

value:values){

count+=value.get();

}

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

context.write(key,

new

IntWritable(count));

}

}

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

3World

2my

1love

2i

1

you1Hello

1World

1Hello

1my

1love1Hello

1World

1

i

1love

1you

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

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

@transient

private

var

_sc:

SparkContext,

@transient

private

var

deps:

Seq[Dependency[_]]

)

extends

Serializable

with

Logging{

<brdata-filtered="filtered">

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

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

protected

def

getPartitions:

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

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

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

編程示例—二維矩陣乘法串行方法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)的方法解決二維矩陣的相乘,計算復雜度為O(n^3)。Spark理論基礎編程示例—二維矩陣乘法MapReduce方法MapReduce將矩陣各個元素的值計算進行分離同時并行計算。顯而易見,MapReduce可以將計算效率提高至串行計算的約m×n倍。Spark理論基礎編程示例—二維矩陣乘法Spark方法//矩陣A,按照行進行并行化valparamatrix1=sc.parallelize(List(Vector(1,2,3),Vector(4,5,0),Vector(7,8,9),Vector(10,11,12)))//矩陣B,按照列進行并行化

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計算方法補完整嗎?你能說出spark計算的優(yōu)勢嗎?大家練習一下吧!推薦資料*

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

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

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

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

溫馨提示

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

評論

0/150

提交評論