姓名:李濤
學(xué)號(hào):17021211100
轉(zhuǎn)載自http://mp.weixin.qq.com/s/mRSU31HqF7hcINUaEevAuw有修改
【嵌牛導(dǎo)讀】:新智元智庫(kù)專家王飛躍教授在新智元于2016年3月出版的《新智元:機(jī)器+人類=超智能時(shí)代》一書中就人工智能發(fā)展歷史竿秆,技術(shù)瓶頸、未來(lái)發(fā)展趨勢(shì)等問(wèn)題給出真知灼見(jiàn)因篇。王飛躍認(rèn)為羹奉,回顧人工智能發(fā)展的歷史沪停,至少有15個(gè)人是不可忽視的煤辨,是他們構(gòu)成了AI發(fā)展的主心骨,其中包括剛剛過(guò)世的M. Minsky木张。
我們正身處一個(gè)只要愿意思考众辨,就能改變世界的時(shí)代。那么你是愿意去改變世界舷礼,還是等待被世界改變呢鹃彻?
【嵌牛鼻子】:人工智能;
【嵌牛提問(wèn)】:未來(lái)人工智能如何入門妻献?
【嵌牛正文】:
一蛛株、人工智能的發(fā)展現(xiàn)狀
1.1 概念
根據(jù)維基百科的解釋,人工智能是被機(jī)器展示的智力育拨,與人類和其他動(dòng)物的自然智能相反泳挥,在計(jì)算機(jī)科學(xué)中 AI 研究被定義為 “代理人軟件程序”:任何能夠感受周圍環(huán)境并且能最大化它成功機(jī)會(huì)的設(shè)備。
1.2 重大事件
2016 年 3 月至朗,AlphaGo 與當(dāng)時(shí)世界排名第四、職業(yè)九段棋手李世石剧浸,進(jìn)行圍棋人機(jī)大戰(zhàn)锹引,以 4:1 總比分獲勝。
2016 年 10 月唆香,美國(guó)白宮發(fā)布了《為未來(lái)人工智能做好準(zhǔn)備》和《美國(guó)國(guó)家人工智能研究與發(fā)展策略規(guī)劃》兩份重磅報(bào)告嫌变,詳細(xì)闡述了美國(guó)未來(lái)的人工智能發(fā)展規(guī)劃以及人工智能給政府工作帶來(lái)的挑戰(zhàn)與機(jī)遇。
VentureBeat 對(duì)這兩份報(bào)告進(jìn)行了總結(jié)躬它,得出了 7 個(gè)淺顯易懂的要點(diǎn):
1. 人工智能應(yīng)當(dāng)被用于造福人類腾啥;
2. 政府應(yīng)該擁抱人工智能;
3. 需要對(duì)自動(dòng)汽車和無(wú)人機(jī)進(jìn)行管制;
4. 要讓所有孩子都跟上技術(shù)的發(fā)展倘待;
5. 使用人工智能補(bǔ)充而非取代人類工作者疮跑;
6. 消除數(shù)據(jù)中的偏見(jiàn)或不要使用有偏見(jiàn)的數(shù)據(jù);
7. 考慮安全和全球影響凸舵。
2016 年雙十一祖娘,魯班首次服務(wù)雙十一,制作了 1.7 億章商品展示廣告啊奄,提升商品點(diǎn)擊率 100%渐苏。如果全靠設(shè)計(jì)師人手來(lái)完成,假設(shè)每張圖需要耗時(shí) 20 分鐘菇夸,滿打滿算需要 100 個(gè)設(shè)計(jì)師連續(xù)做 300 年琼富。
2017 年,魯班的設(shè)計(jì)水平顯著提升庄新,目前已經(jīng)學(xué)習(xí)百萬(wàn)級(jí)的設(shè)計(jì)師創(chuàng)意內(nèi)容鞠眉,擁有演變出上億級(jí)的設(shè)計(jì)能力。此外摄咆,魯班已經(jīng)實(shí)現(xiàn)一天制作 4000 萬(wàn)張海報(bào)能力凡蚜,沒(méi)有一張會(huì)完全一樣。
2017 年 5 月吭从,AlphaGo Master 戰(zhàn)勝世界冠軍柯潔朝蜘。
2017 年 10 月 18 日,DeepMind 團(tuán)隊(duì)公布了最強(qiáng)版本 AlphaGo涩金, 代號(hào) AlphaGo Zero谱醇。
2017 年 10 月 25 日,在沙特舉行的未來(lái)投資計(jì)劃大會(huì)上步做,沙特阿拉伯授予美國(guó)漢森機(jī)器人公司生產(chǎn)的 “女性” 機(jī)器人索菲亞公民身份副渴。
作為世界上首個(gè)獲得公民身份的機(jī)器人,索菲亞當(dāng)天說(shuō)全度,“她” 希望用人工智能 “幫助人類過(guò)上更好的生活”煮剧,同時(shí)對(duì)支持 “AI 威脅論” 的馬斯克說(shuō) “人不犯我,我不犯人”!
會(huì)后将鸵,馬斯克在推特上說(shuō):“把電影《教父》輸入了人工智能系統(tǒng)勉盅,還能有什么比這個(gè)更糟的?” 教父是好萊塢經(jīng)典電影顶掉,劇情充滿了背叛和謀殺草娜。
索菲亞被授予公民身份后所產(chǎn)生的倫理問(wèn)題也是人們不得不考慮的
近幾年人工智能領(lǐng)域的大新聞太多,這里不一一列舉
二痒筒、人工智能宰闰、深度學(xué)習(xí)茬贵、機(jī)器學(xué)習(xí)、增強(qiáng)學(xué)習(xí)之間的關(guān)系是怎樣的
如圖所示移袍,人工智能是一個(gè)大類解藻,包括專家系統(tǒng)、知識(shí)表示咐容、機(jī)器學(xué)習(xí)等等舆逃,其中機(jī)器學(xué)習(xí)是目前最火也是發(fā)展最好的一個(gè)分支,機(jī)器學(xué)習(xí)中又包括監(jiān)督學(xué)習(xí)戳粒、非監(jiān)督學(xué)習(xí)路狮、深度學(xué)習(xí),增強(qiáng)學(xué)習(xí)等等蔚约。
監(jiān)督學(xué)習(xí)奄妨,就是人們常說(shuō)的分類,通過(guò)已有的訓(xùn)練樣本(即已知數(shù)據(jù)以及其對(duì)應(yīng)的輸出)去訓(xùn)練得到一個(gè)最優(yōu)模型(這個(gè)模型屬于某個(gè)函數(shù)的集合苹祟,最優(yōu)則表示在某個(gè)評(píng)價(jià)準(zhǔn)則下是最佳的)砸抛。
再利用這個(gè)模型將所有的輸入映射為相應(yīng)的輸出,對(duì)輸出進(jìn)行簡(jiǎn)單的判斷從而實(shí)現(xiàn)分類的目的树枫,也就具有了對(duì)未知數(shù)據(jù)進(jìn)行分類的能力直焙。
舉例來(lái)說(shuō),我們上幼兒園的時(shí)候經(jīng)常做的一個(gè)活動(dòng)叫看圖識(shí)字砂轻,如上圖所示奔誓,老師會(huì)給我們看很多圖片,下面配了文字搔涝,時(shí)間長(zhǎng)了之后厨喂,我們大腦中會(huì)形成抽象的概念,兩個(gè)犄角庄呈,一條短尾巴蜕煌,胖胖的(特征)…
這樣的動(dòng)物是牛;圓的诬留,黃的斜纪,發(fā)光的,掛在天上的 … 是太陽(yáng)文兑;人長(zhǎng)這樣傀广。等再看到類似的東西時(shí)我們便能認(rèn)出來(lái),即使跟以前看到的不完全一樣彩届,但是符合在我們大腦中形成的概念,如下圖所示誓酒。
非監(jiān)督學(xué)學(xué)習(xí)則是另一種研究的比較多的學(xué)習(xí)方法樟蠕,它與監(jiān)督學(xué)習(xí)的不同之處贮聂,在于我們事先沒(méi)有任何訓(xùn)練樣本,而需要直接對(duì)數(shù)據(jù)進(jìn)行建模寨辩。
舉個(gè)例子吓懈,如圖所示,在沒(méi)有任何提示(無(wú)訓(xùn)練集)的情況下靡狞,需要把下列六個(gè)圖形分成兩類耻警,你會(huì)怎么分呢,當(dāng)然是第一排一類甸怕,第二排一類甘穿,因?yàn)榈谝慌判螤罡咏诙判螤罡咏?/p>
非監(jiān)督學(xué)習(xí)就是在實(shí)現(xiàn)不知道數(shù)據(jù)集分類的情況下在數(shù)據(jù)中尋找特征梢杭。
深度學(xué)習(xí)是基于機(jī)器學(xué)習(xí)延伸出來(lái)的一個(gè)新的領(lǐng)域温兼,由以人大腦結(jié)構(gòu)為啟發(fā)的神經(jīng)網(wǎng)絡(luò)算法為起源加之模型結(jié)構(gòu)深度的增加發(fā)展,并伴隨大數(shù)據(jù)和計(jì)算能力的提高而產(chǎn)生的一系列新的算法武契。
深度學(xué)習(xí)概念由著名科學(xué)家 Geoffrey Hinton 等人在 2006 年和 2007 年在《Sciences》等上發(fā)表的文章被提出和興起募判。
深度學(xué)習(xí),作為機(jī)器學(xué)習(xí)中延伸出來(lái)的一個(gè)領(lǐng)域咒唆,被應(yīng)用在圖像處理與計(jì)算機(jī)視覺(jué)届垫,自然語(yǔ)言處理以及語(yǔ)音識(shí)別等領(lǐng)域。
自 2006 年至今全释,學(xué)術(shù)界和工業(yè)界合作在深度學(xué)習(xí)方面的研究與應(yīng)用在以上領(lǐng)域取得了突破性的進(jìn)展装处。以 ImageNet 為數(shù)據(jù)庫(kù)的經(jīng)典圖像中的物體識(shí)別競(jìng)賽為例,擊敗了所有傳統(tǒng)算法恨溜,取得了前所未有的精確度符衔。
增強(qiáng)學(xué)習(xí)也是機(jī)器學(xué)習(xí)一個(gè)重要的分支,是通過(guò)觀察來(lái)學(xué)習(xí)做成如何的動(dòng)作糟袁。每個(gè)動(dòng)作都會(huì)對(duì)環(huán)境有所影響判族,學(xué)習(xí)對(duì)象根據(jù)觀察到的周圍環(huán)境的反饋來(lái)做出判斷。
三项戴、數(shù)學(xué)基礎(chǔ)有多重要
對(duì)于數(shù)學(xué)基礎(chǔ)知識(shí)形帮,需要高中數(shù)學(xué)知識(shí)加上高數(shù)、線性代數(shù)周叮、統(tǒng)計(jì)學(xué)辩撑、概率論,即使掌握的不是很完善仿耽,但是至少要知道概念合冀,在用到的時(shí)候知道去哪查。
如果基礎(chǔ)不好项贺,可以先看看吳軍的《數(shù)學(xué)之美》君躺,講的比較通俗易懂峭判。也可以邊做邊學(xué),實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)棕叫,畢竟大多數(shù)人還是以工程實(shí)踐為主林螃,如果你想做研究理論的科學(xué)家,并不適合看本文俺泣。
四疗认、入門級(jí)機(jī)器學(xué)習(xí)算法
4.1 決策樹(shù)
判定樹(shù)是一個(gè)類似于流程圖的樹(shù)結(jié)構(gòu):其中,每個(gè)內(nèi)部結(jié)點(diǎn)表示在一個(gè)屬性上的測(cè)試伏钠,每個(gè)分支代表一個(gè)屬性輸出横漏,而每個(gè)樹(shù)葉結(jié)點(diǎn)代表類或類分布。樹(shù)的最頂層是根結(jié)點(diǎn)贝润。
例:現(xiàn)有一個(gè)數(shù)據(jù)集绊茧,表示一些的人的年齡、收入打掘、是否是學(xué)生华畏、信用、是否會(huì)買電腦尊蚁。年齡有年輕亡笑,中年,老年三種横朋;收入有高中低仑乌;信用有一般和很好。數(shù)據(jù)及保存在 AllElectronics.csv 中琴锭。
現(xiàn)在在有一個(gè)新的人(數(shù)據(jù))晰甚,要判斷這個(gè)人是否會(huì)買電腦。
allElectronicsData = open(r'D:\deeplearning\AllElectronics.csv', 'rb')
reader = csv.reader(allElectronicsData)
headers = reader.next()
print(headers)
featureList = []
labelList = [] #最后一列
for row in reader:
#print(row)
labelList.append(row[len(row)-1]) ?#在元祖末尾添加元素
rowDict = {}
for i in range(1,len(row)-1):
rowDict[headers[i]] = row[i]
featureList.append(rowDict)
print(featureList)
print(labelList)
vec = DictVectorizer()
dummyX = vec.fit_transform(featureList).toarray()
print("dummyX:" + str(dummyX))
print(vec.get_feature_names())
lb = preprocessing.LabelBinarizer()
dummyY = lb.fit_transform(labelList)
print("dummyY:" + str(dummyY))
clf = tree.DecisionTreeClassifier(criterion='entropy')
clf = clf.fit(dummyX,dummyY)
print("clf: "+ str(clf))
with open("allElectronicInformationGainDri.dot",'w') as f:
f = tree.export_graphviz(clf,feature_names=vec.get_feature_names(),out_file = f) ?#在當(dāng)前工作目錄生成 ?.dot 文件
oneRowX = dummyX[0, :]
print("oneRowx: " + str(oneRowX))
newRowX = oneRowX
newRowX[0] = 1
newRowX[2] = 0
print("newRowX: " + str(newRowX))
predictedY = clf.predict(newRowX)
print("predictedY:" + str(predictedY))
4.2 最臨近取樣
最臨近取樣就是把已有數(shù)據(jù)分成幾類决帖,對(duì)新輸入的數(shù)據(jù)計(jì)算與已知數(shù)據(jù)的距離厕九,距離哪一個(gè)近,就把新數(shù)據(jù)分到哪一類地回,例如下圖所示的電影分類扁远,對(duì)于最后一行未知電影類型的電影,根據(jù)打斗次數(shù)和接吻次數(shù)刻像,距離浪漫型更近畅买,應(yīng)該被歸類為浪漫型電影。
例:irisdata.txt 實(shí)在網(wǎng)上下載的鳶尾屬植物數(shù)據(jù)集细睡,根據(jù)數(shù)據(jù)集合谷羞,對(duì)新的數(shù)據(jù)進(jìn)行分類
# coding:utf-8
#不調(diào)用庫(kù),自己實(shí)現(xiàn) knn 算法
import csv ? #讀取 CSV 文件用的模塊溜徙,讀取數(shù)據(jù)用的
import random #隨機(jī)數(shù)計(jì)算
import math ?#數(shù)學(xué)計(jì)算
import operator
from bokeh.util.session_id import random
from boto.beanstalk import response
from dask.array.learn import predict
# 裝載數(shù)據(jù)集 ?filename:數(shù)據(jù)集文件名 split:以數(shù)據(jù)集中某個(gè)位置為結(jié)點(diǎn)湃缎,把數(shù)據(jù)集分為 trainingSet 和 testSet
def loadDataSet(filename, split, trainingSet=[], testSet=[]):
with open(filename, 'rb') as csvfile:
lines = csv.reader(csvfile) ?#把所有行存入 lines
dataset = list(lines) #把數(shù)據(jù)轉(zhuǎn)換為 list 格式
for x in range(len(dataset)-1):
for y in range(4):
dataset[x][y] = float(dataset[x][y])
if random.random() < split: ? #如果隨機(jī)值小于 split
trainingSet.append(dataset[x]) ?#則加到 trainingSet
else:
testSet.append(dataset[x])
#歐幾里德距離 :坐標(biāo)差的平方的和再開(kāi)根號(hào) ? ?還有曼哈頓距離
def euclideanDistance(instance1, instance2, length):
distance = 0
for x in range(length):
distance += pow((instance1[x] -instance2[x]), 2)
return math.sqrt(distance)
#返回距離 testInstance 最近 trainingSet 的 K 個(gè)鄰居
def getNeighbours(trainingSet, testInstance, k):
distances = []
length =len(testInstance) - 1
for x in range(len(trainingSet)):
dist = euclideanDistance(testInstance, trainingSet[x], length) ?#每一個(gè)訓(xùn)練集數(shù)據(jù)和實(shí)例數(shù)據(jù)之間的距離
distances.append((trainingSet[x],dist))
distances.sort(key=operator.itemgetter(1)) #sort 排序?yàn)閺男〉酱?/p>
#取前 k 個(gè)最近的 neighbors
neighbors = []
for x in range(k):
neighbors.append(distances[x][0])
return neighbors
#根據(jù)少數(shù)服從多數(shù)的原則判斷要預(yù)測(cè)實(shí)例屬于哪一類购公。計(jì)算 testInstance 到 trainingSet 距離最近的個(gè)數(shù),返回最多的那一類
def getResponse(neighbors):
classVotes = {}
for x in range(len(neighbors)):
response = neighbors[x][-1]
if response in classVotes:
classVotes[response] += 1
else:
classVotes[response] = 1
sortedVotes = sorted(classVotes.iteritems(), key=operator.itemgetter(1), reverse=True)
return sortedVotes[0][0]
#獲取預(yù)測(cè)的準(zhǔn)確率 testSet:測(cè)試數(shù)據(jù)集 ?predictions:用代碼預(yù)測(cè)的類別集合
def getAccuracy(testSet, predictions):
correct = 0
for x in range(len(testSet)):
if testSet[x][-1] == predictions[x]: ?#-1 表示數(shù)組的最后一個(gè)值雁歌。
correct += 1
return(correct/float(len(testSet))) * 100.0
def main():
trainingSet=[]
testSet=[]
split = 0.67 ?#三分之二為訓(xùn)練集 , 三分之一為數(shù)據(jù)集
loadDataSet(r'C:\Users\ning\workspace\KNNdata\irisdata.txt', split, trainingSet, testSet)
print 'Train Set: ' + repr(len(trainingSet)) #repr 轉(zhuǎn)化為字符串
print 'Test Set: ' + repr(len(testSet))
predictions = []
k = 3
for x in range(len(testSet)):
neighbors = getNeighbours(trainingSet, testSet[x], k)
result = getResponse(neighbors)
predictions.append(result)
print("> predicted=" + repr(result) + ', actual=' + repr(testSet[x][-1]))
accuarcy = getAccuracy(testSet, predictions)
print('Accuracy: ' + repr(accuarcy) + '%')
main()
4.3 支持向量機(jī)
支持向量機(jī)(SVM)是從線性可分情況下的最優(yōu)分類面發(fā)展而來(lái)知残。最優(yōu)分類面就是要求分類線不但能將兩類正確分開(kāi) (訓(xùn)練錯(cuò)誤率為 0), 且使分類間隔最大靠瞎。
SVM 考慮尋找一個(gè)滿足分類要求的超平面 , 并且使訓(xùn)練集中的點(diǎn)距離分類面盡可能的遠(yuǎn) , 也就是尋找一個(gè)分類面使它兩側(cè)的空白區(qū)域 (margin) 最大。
這兩類樣本中離分類面最近的點(diǎn)且平行于最優(yōu)分類面的超平面上 H1,H2 的訓(xùn)練樣本就叫做支持向量求妹。
例:使用 sklearn 庫(kù)實(shí)現(xiàn) svm 算法乏盐, 俗稱調(diào)庫(kù),實(shí)際上調(diào)庫(kù)是一個(gè)很簡(jiǎn)單的過(guò)程制恍,初級(jí)階段甚至都不需要知道原理父能。
# coding:utf-8
from sklearn import svm
X = [[2,0], [1,1], [2,3]]
y = [0,0,1]
clf = svm.SVC(kernel = 'linear')
clf.fit(X,y) ?#?通過(guò) .fit 函數(shù)已經(jīng)可以算出支持向量機(jī)的所有參數(shù)并保存在 clf 中
print clf
# get support vectors
print clf.support_vectors_
#get index of support vectors
print clf.support_
#get number of support vectors for each class
print clf.n_support_
#predict data , 參數(shù)是二維數(shù)組
print clf.predict([[2, 0], [10,10]])
五、書單推薦
《數(shù)學(xué)之美》吳軍
《機(jī)器學(xué)習(xí)》 ?周志華
《漫談人工智能》 集智俱樂(lè)部
《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》 ?Peter Harrington
《TensorFlow 技術(shù)解析與實(shí)戰(zhàn)》 ?李嘉璇
《統(tǒng)計(jì)學(xué)習(xí)方法》 ?李航
六净神、學(xué)習(xí)人工智能的誤區(qū)—人工智能又是一個(gè)泡沫何吝?
人工智能很大程度上被一些科技巨頭公司夸大了,為了拿到資本的錢鹃唯,這也在情理之中爱榕,但是普通大眾一定要有自己的鑒別能力,客觀地分析自己到底是否適合做這一行坡慌。
縱觀互聯(lián)網(wǎng)發(fā)展史黔酥,人工智能這種發(fā)展態(tài)勢(shì)并不是首例,像 2014 年爆紅的 O2O 模式洪橘,那時(shí)候不懂點(diǎn) O2O 都不敢說(shuō)自己是互聯(lián)網(wǎng)圈的人跪者。
到現(xiàn)在,一批又一批的創(chuàng)業(yè)大軍倒下去熄求,當(dāng)然也會(huì)留下像亞馬遜渣玲、阿里巴巴這樣的巨頭,每個(gè)行業(yè)都有它的金字塔抡四。
我上大二的時(shí)候可以說(shuō) 3D 打印柜蜈、VR 技術(shù)處在風(fēng)口浪尖,各種 3D 打印創(chuàng)業(yè)公司指巡、VR 創(chuàng)業(yè)公司層出不窮淑履,大四就已經(jīng)開(kāi)始倒了一家又一家,包括我也做過(guò) 3D 打印方面的項(xiàng)目藻雪,實(shí)際上做的東西也不過(guò)時(shí)改進(jìn)一些邊邊角角的東西秘噪,最核心的框架早已被大牛們?cè)O(shè)計(jì)好了。
盲目追隨科技的潮流勉耀,我們永遠(yuǎn)只能在潮流的后面指煎。
最近看 CCTV 上都已經(jīng)有撒貝寧主持的人工智能綜藝節(jié)目了蹋偏,這說(shuō)明人工智能早已成了一片紅海,與現(xiàn)在的移動(dòng)互聯(lián)網(wǎng)技術(shù)并沒(méi)有本質(zhì)上的區(qū)別至壤。
自從谷歌開(kāi)源 tensorflow 框架(還有很多其他優(yōu)秀的框架)威始,寫機(jī)器學(xué)習(xí)的代碼很多都是調(diào)調(diào)參數(shù),有的甚至都不用知道原理像街,當(dāng)然大爬杼模肯定是有,還是那句話镰绎,每個(gè)行業(yè)都有的它的金字塔脓斩,只不過(guò)到達(dá)塔尖的路徑不同。
在我看來(lái)畴栖,調(diào)用 tensorflow 的框架進(jìn)行人工智能的開(kāi)發(fā)與調(diào)用 android 的 API 開(kāi)發(fā) app 并沒(méi)有本質(zhì)的區(qū)別随静,真正偉大的是谷歌公司,后來(lái)者只不過(guò)是追隨者吗讶。
題外話燎猛,不知道大家是否聽(tīng)過(guò)21 世紀(jì)是生物的世紀(jì),這一概念興起之時(shí)关翎,眾多高考生選擇生物相關(guān)的專業(yè)扛门。之前有個(gè)對(duì)國(guó)內(nèi)某著名高校生物專業(yè)畢業(yè)生的就業(yè)去向調(diào)查,其中一個(gè)結(jié)論是生物專業(yè)學(xué)生最好的出路就是離開(kāi)這個(gè)專業(yè)纵寝。
當(dāng)然我們不得不說(shuō)生物技術(shù)跟我們每個(gè)人的生活息息相關(guān)论寨,但是其發(fā)展周期之長(zhǎng),又怎是一個(gè)人等得起的爽茴?如何把個(gè)人認(rèn)同與社會(huì)認(rèn)同葬凳,自我價(jià)值與社會(huì)價(jià)值協(xié)調(diào)統(tǒng)一,也是我們需要思考的問(wèn)題室奏。
人工智能是否是個(gè)泡沫火焰?這個(gè)概念還能火多久?