成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

編程和數學基礎不佳如何入門人工智能?

人工智能
人工智能是一個大類,包括專家系統、知識表示、機器學習等等,其中機器學習是目前最火也是發展最好的一個分支,機器學習中又包括監督學習、非監督學習、深度學習,增強學習等等。

一、人工智能的發展現狀

1.1 概念

根據維基百科的解釋,人工智能是被機器展示的智力,與人類和其他動物的自然智能相反,在計算機科學中 AI 研究被定義為 “代理人軟件程序”:任何能夠感受周圍環境并且能最大化它成功機會的設備。

1.2 重大事件

  • 2016 年 3 月 ,AlphaGo 與當時世界排名第四、職業九段棋手李世石,進行圍棋人機大戰,以 4:1 總比分獲勝。
  • 2016 年 10 月 ,美國白宮發布了《為未來人工智能做好準備》和《美國國家人工智能研究與發展策略規劃》兩份重磅報告,詳細闡述了美國未來的人工智能發展規劃以及人工智能給政府工作帶來的挑戰與機遇。

VentureBeat 對這兩份報告進行了總結,得出了 7 個淺顯易懂的要點:

1. 人工智能應當被用于造福人類;

2. 政府應該擁抱人工智能;

3. 需要對自動汽車和無人機進行管制;

4. 要讓所有孩子都跟上技術的發展;

5. 使用人工智能補充而非取代人類工作者;

6. 消除數據中的偏見或不要使用有偏見的數據;

7. 考慮安全和全球影響。

  • 2016 年雙十一 ,魯班首次服務雙十一,制作了 1.7 億章商品展示廣告,提升商品點擊率 100%。如果全靠設計師人手來完成,假設每張圖需要耗時 20 分鐘,滿打滿算需要 100 個設計師連續做 300 年。

2017 年,魯班的設計水平顯著提升,目前已經學習百萬級的設計師創意內容,擁有演變出上億級的設計能力。此外,魯班已經實現一天制作 4000 萬張海報能力,沒有一張會完全一樣。

  • 2017 年 5 月 ,AlphaGo Master 戰勝世界冠軍柯潔。
  • 2017 年 10 月 18 日 ,DeepMind 團隊公布了最強版本 AlphaGo, 代號 AlphaGo Zero。
  • 2017 年 10 月 25 日 ,在沙特舉行的未來投資計劃大會上,沙特阿拉伯授予美國漢森機器人公司生產的 “女性” 機器人索菲亞公民身份。

作為世界上首個獲得公民身份的機器人,索菲亞當天說,“她” 希望用人工智能 “幫助人類過上更好的生活”,同時對支持 “AI 威脅論” 的馬斯克說 “人不犯我,我不犯人”!

會后,馬斯克在推特上說:“把電影《教父》輸入了人工智能系統,還能有什么比這個更糟的?” 教父是好萊塢經典電影,劇情充滿了背叛和謀殺。

索菲亞被授予公民身份后所產生的倫理問題也是人們不得不考慮的

近幾年人工智能領域的大新聞太多,這里不一一列舉

二、人工智能、深度學習、機器學習、增強學習之間的關系是怎樣的

如圖所示,人工智能是一個大類,包括專家系統、知識表示、機器學習等等,其中機器學習是目前最火也是發展最好的一個分支,機器學習中又包括監督學習、非監督學習、深度學習,增強學習等等。

監督學習 ,就是人們常說的分類,通過已有的訓練樣本(即已知數據以及其對應的輸出)去訓練得到一個最優模型(這個模型屬于某個函數的集合,最優則表示在某個評價準則下是最佳的)。

再利用這個模型將所有的輸入映射為相應的輸出,對輸出進行簡單的判斷從而實現分類的目的,也就具有了對未知數據進行分類的能力。

舉例來說,我們上幼兒園的時候經常做的一個活動叫 看圖識字 ,如上圖所示,老師會給我們看很多圖片,下面配了文字,時間長了之后,我們大腦中會形成抽象的概念,兩個犄角,一條短尾巴,胖胖的(特征)… 

這樣的動物是牛;圓的,黃的,發光的,掛在天上的 … 是太陽;人長這樣。等再看到類似的東西時我們便能認出來,即使跟以前看到的不完全一樣,但是符合在我們大腦中形成的概念,如下圖所示。

[[213253]][[213254]]

[[213255]]

非監督學學習 則是另一種研究的比較多的學習方法,它與監督學習的不同之處,在于我們事先沒有任何訓練樣本,而需要直接對數據進行建模。

舉個例子,如圖所示,在沒有任何提示(無訓練集)的情況下,需要把下列六個圖形分成兩類,你會怎么分呢,當然是第一排一類,第二排一類,因為第一排形狀更接近,第二排形狀更接近。

非監督學習就是在實現不知道數據集分類的情況下在數據中尋找特征。

[[213256]]

深度學習 是基于機器學習延伸出來的一個新的領域,由以人大腦結構為啟發的神經網絡算法為起源加之模型結構深度的增加發展,并伴隨大數據和計算能力的提高而產生的一系列新的算法。

深度學習概念由著名科學家 Geoffrey Hinton 等人在 2006 年和 2007 年在《Sciences》等上發表的文章被提出和興起。

[[213258]]

深度學習,作為機器學習中延伸出來的一個領域,被應用在圖像處理與計算機視覺,自然語言處理以及語音識別等領域。

自 2006 年至今,學術界和工業界合作在深度學習方面的研究與應用在以上領域取得了突破性的進展。以 ImageNet 為數據庫的經典圖像中的物體識別競賽為例,擊敗了所有傳統算法,取得了前所未有的精確度。

增強學習 也是機器學習一個重要的分支,是通過觀察來學習做成如何的動作。每個動作都會對環境有所影響,學習對象根據觀察到的周圍環境的反饋來做出判斷。

三、數學基礎有多重要

對于數學基礎知識,需要高中數學知識加上高數、線性代數、統計學、概率論,即使掌握的不是很完善,但是至少要知道概念,在用到的時候知道去哪查。

如果基礎不好,可以先看看吳軍的《數學之美》,講的比較通俗易懂。也可以邊做邊學,實踐是檢驗真理的唯一標準,畢竟大多數人還是以工程實踐為主,如果你想做研究理論的科學家,并不適合看本文。

四、入門級機器學習算法

4.1 決策樹

判定樹是一個類似于流程圖的樹結構:其中,每個內部結點表示在一個屬性上的測試,每個分支代表一個屬性輸出,而每個樹葉結點代表類或類分布。樹的最頂層是根結點。

例:現有一個數據集,表示一些的人的年齡、收入、是否是學生、信用、是否會買電腦。年齡有年輕,中年,老年三種;收入有高中低;信用有一般和很好。數據及保存在 AllElectronics.csv 中。

現在在有一個新的人(數據),要判斷這個人是否會買電腦。

 

  1. allElectronicsData = open(r'D:\deeplearning\AllElectronics.csv''rb'
  2.  
  3. reader = csv.reader(allElectronicsData)    
  4.  
  5. headers = reader.next()  
  6.  
  7.  
  8. print(headers) 
  9.  
  10. featureList = [] 
  11.  
  12. labelList = [] #最后一列  
  13.  
  14.  
  15. for row in reader: 
  16.  
  17.     #print(row) 
  18.  
  19.     labelList.append(row[len(row)-1])  #在元祖末尾添加元素 
  20.  
  21.     rowDict = {} 
  22.  
  23.     for i in range(1,len(row)-1): 
  24.  
  25.         rowDict[headers[i]] = row[i] 
  26.  
  27.     featureList.append(rowDict) 
  28.  
  29. print(featureList) 
  30.  
  31. print(labelList)  
  32.  
  33.  
  34. vec = DictVectorizer() 
  35.  
  36. dummyX = vec.fit_transform(featureList).toarray()   
  37.  
  38. print("dummyX:" + str(dummyX)) 
  39.  
  40. print(vec.get_feature_names())  
  41.  
  42.  
  43. lb = preprocessing.LabelBinarizer() 
  44.  
  45. dummyY = lb.fit_transform(labelList) 
  46.  
  47. print("dummyY:" + str(dummyY))   
  48.  
  49.  
  50.  
  51. clf = tree.DecisionTreeClassifier(criterion='entropy')  
  52.  
  53. clf = clf.fit(dummyX,dummyY) 
  54.  
  55. print("clf: "+ str(clf))   
  56.  
  57.  
  58. with open("allElectronicInformationGainDri.dot",'w'as f: 
  59.  
  60.     f = tree.export_graphviz(clf,feature_names=vec.get_feature_names(),out_file = f)  #在當前工作目錄生成  .dot 文件  
  61.  
  62.  
  63. oneRowX = dummyX[0, :] 
  64.  
  65. print("oneRowx: " + str(oneRowX))   
  66.  
  67.  
  68. newRowX = oneRowX  
  69.  
  70.  
  71.  
  72. newRowX[0] = 1 
  73.  
  74. newRowX[2] = 0 
  75.  
  76. print("newRowX: " + str(newRowX))  
  77.  
  78.  
  79. predictedY = clf.predict(newRowX) 
  80.  
  81. print("predictedY:" + str(predictedY))   

 

4.2 最臨近取樣

最臨近取樣就是把已有數據分成幾類,對新輸入的數據計算與已知數據的距離,距離哪一個近,就把新數據分到哪一類,例如下圖所示的電影分類,對于最后一行未知電影類型的電影,根據打斗次數和接吻次數,距離浪漫型更近,應該被歸類為浪漫型電影。

例:irisdata.txt 實在網上下載的鳶尾屬植物數據集,根據數據集合,對新的數據進行分類

  1. # coding:utf-8  
  2.  
  3.  
  4.   #不調用庫,自己實現 knn 算法 
  5.  
  6.   import csv   #讀取 CSV 文件用的模塊,讀取數據用的 
  7.  
  8.   import random #隨機數計算 
  9.  
  10.   import math  #數學計算 
  11.  
  12.   import operator 
  13.  
  14.   from bokeh.util.session_id import random 
  15.  
  16.   from boto.beanstalk import response 
  17.  
  18.   from dask.array.learn import predict  
  19.  
  20.  
  21.  
  22.   # 裝載數據集  filename:數據集文件名 split:以數據集中某個位置為結點,把數據集分為 trainingSet 和 testSet 
  23.  
  24.   def loadDataSet(filename, split, trainingSet=[], testSet=[]): 
  25.  
  26.       with open(filename, 'rb'as csvfile: 
  27.  
  28.           lines = csv.reader(csvfile)  #把所有行存入 lines 
  29.  
  30.           dataset = list(lines) #把數據轉換為 list 格式 
  31.  
  32.           for x in range(len(dataset)-1): 
  33.  
  34.               for y in range(4): 
  35.  
  36.                   dataset[x][y] = float(dataset[x][y]) 
  37.  
  38.               if random.random() < split:   #如果隨機值小于 split 
  39.  
  40.                   trainingSet.append(dataset[x])  #則加到 trainingSet 
  41.  
  42.               else
  43.  
  44.                   testSet.append(dataset[x])  
  45.  
  46.  
  47.   #歐幾里德距離 :坐標差的平方的和再開根號    還有曼哈頓距離 
  48.  
  49.   def euclideanDistance(instance1, instance2, length):    
  50.  
  51.       distance = 0 
  52.  
  53.       for x in range(length): 
  54.  
  55.           distance += pow((instance1[x] -instance2[x]), 2) 
  56.  
  57.       return math.sqrt(distance)  
  58.  
  59.  
  60.   #返回距離 testInstance 最近 trainingSet 的 K 個鄰居 
  61.  
  62.   def getNeighbours(trainingSet, testInstance, k): 
  63.  
  64.       distances = [] 
  65.  
  66.       length =len(testInstance) - 1 
  67.  
  68.       for x in range(len(trainingSet)): 
  69.  
  70.           dist = euclideanDistance(testInstance, trainingSet[x], length)  #每一個訓練集數據和實例數據之間的距離 
  71.  
  72.           distances.append((trainingSet[x],dist)) 
  73.  
  74.       distances.sort(key=operator.itemgetter(1)) #sort 排序為從小到大 
  75.  
  76.   #取前 k 個最近的 neighbors     
  77.  
  78.       neighbors = [] 
  79.  
  80.       for x in range(k):   
  81.  
  82.           neighbors.append(distances[x][0])   
  83.  
  84.       return neighbors  
  85.  
  86.  
  87.   #根據少數服從多數的原則判斷要預測實例屬于哪一類。計算 testInstance 到 trainingSet 距離最近的個數,返回最多的那一類 
  88.  
  89.   def getResponse(neighbors): 
  90.  
  91.       classVotes = {} 
  92.  
  93.       for x in range(len(neighbors)): 
  94.  
  95.           response = neighbors[x][-1] 
  96.  
  97.           if response in classVotes: 
  98.  
  99.               classVotes[response] += 1 
  100.  
  101.           else
  102.  
  103.               classVotes[response] = 1 
  104.  
  105.       sortedVotes = sorted(classVotes.iteritems(), key=operator.itemgetter(1), reverse=True
  106.  
  107.       return sortedVotes[0][0]  
  108.  
  109.  
  110.   #獲取預測的準確率 testSet:測試數據集  predictions:用代碼預測的類別集合 
  111.  
  112.   def getAccuracy(testSet, predictions): 
  113.  
  114.       correct = 0 
  115.  
  116.       for x in range(len(testSet)): 
  117.  
  118.           if testSet[x][-1] == predictions[x]:  #-1 表示數組的最后一個值。  
  119.  
  120.               correct += 1 
  121.  
  122.       return(correct/float(len(testSet))) * 100.0  
  123.  
  124.  
  125.   def main(): 
  126.  
  127.       trainingSet=[] 
  128.  
  129.       testSet=[] 
  130.  
  131.       split = 0.67  #三分之二為訓練集 , 三分之一為數據集 
  132.  
  133.       loadDataSet(r'C:\Users\ning\workspace\KNNdata\irisdata.txt', split, trainingSet, testSet) 
  134.  
  135.       print 'Train Set: ' + repr(len(trainingSet)) #repr 轉化為字符串 
  136.  
  137.       print 'Test Set: ' + repr(len(testSet))  
  138.  
  139.  
  140.       predictions = [] 
  141.  
  142.       k = 3 
  143.  
  144.       for x in range(len(testSet)): 
  145.  
  146.           neighbors = getNeighbours(trainingSet, testSet[x], k) 
  147.  
  148.           result = getResponse(neighbors) 
  149.  
  150.           predictions.append(result) 
  151.  
  152.           print("> predicted=" + repr(result) + ', actual=' + repr(testSet[x][-1])) 
  153.  
  154.       accuarcy = getAccuracy(testSet, predictions) 
  155.  
  156.       print('Accuracy: ' + repr(accuarcy) + '%'
  157.  
  158.   main() 

4.3 支持向量機

支持向量機(SVM)是從線性可分情況下的最優分類面發展而來。最優分類面就是要求分類線不但能將兩類正確分開 (訓練錯誤率為 0), 且使分類間隔最大。

SVM 考慮尋找一個滿足分類要求的超平面 , 并且使訓練集中的點距離分類面盡可能的遠 , 也就是尋找一個分類面使它兩側的空白區域 (margin) 最大。

這兩類樣本中離分類面最近的點且平行于最優分類面的超平面上 H1,H2 的訓練樣本就叫做支持向量。

例:使用 sklearn 庫實現 svm 算法, 俗稱調庫,實際上調庫是一個很簡單的過程,初級階段甚至都不需要知道原理。   

  1. # coding:utf-8 
  2.  
  3.     from sklearn import svm 
  4.  
  5.     X = [[2,0], [1,1], [2,3]] 
  6.  
  7.     y = [0,0,1] 
  8.  
  9.     clf = svm.SVC(kernel = 'linear'
  10.  
  11.     clf.fit(X,y)  #ͨ通過 .fit 函數已經可以算出支持向量機的所有參數并保存在 clf 中   
  12.  
  13.     print clf  
  14.  
  15.  
  16.     # get support vectors  
  17.  
  18.     print clf.support_vectors_  
  19.  
  20.  
  21.     #get index of support vectors 
  22.  
  23.     print clf.support_  
  24.  
  25.  
  26.     #get number of support vectors for each class 
  27.  
  28.     print clf.n_support_  
  29.  
  30.  
  31.     #predict data , 參數是二維數組 
  32.  
  33.     print clf.predict([[2, 0], [10,10]]) 

 

五、書單推薦

  • 《數學之美》吳軍
  • 《機器學習》  周志華
  • 《漫談人工智能》 集智俱樂部
  • 《機器學習實戰》  Peter Harrington
  • 《TensorFlow 技術解析與實戰》  李嘉璇
  • 《統計學習方法》  李航 
責任編輯:龐桂玉 來源: GitChat技術雜談
相關推薦

2022-10-19 07:04:12

?人工智能云服務Alaas

2024-01-24 14:14:59

人工智能矩陣

2023-08-11 16:30:06

2024-02-26 11:31:33

人工智能數據中心

2022-09-07 14:05:18

人工智能AI

2022-06-30 15:55:04

人工智能垂直智能數據挑戰

2023-06-19 15:46:25

2021-11-23 17:57:50

編程語言Java python

2023-08-09 16:13:11

2024-08-01 11:23:11

2022-07-29 15:47:25

人工智能AI

2021-12-05 22:32:13

人工智能機器人技術

2023-10-30 11:37:12

2023-06-30 11:55:09

人工智能機器學習

2022-09-19 13:29:57

人工智能ERP

2020-07-03 09:42:13

人工智能機器學習技術

2024-01-25 14:30:08

人工智能

2024-03-22 10:17:09

人工智能數字化轉型AI

2024-03-01 19:05:20

2022-08-04 13:29:50

人工智能自動化數據研究
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品一区二区三区久久 | 国产香蕉视频 | 青娱乐自拍 | 国产福利91精品一区二区三区 | 日本欧美国产在线 | 国产精品看片 | 日本精品视频在线观看 | 日韩精品在线观看视频 | 国产精品高清一区二区三区 | 中文成人在线 | 国产免费xxx | 99久久久久久 | 亚洲精品日韩在线观看 | 成年网站在线观看 | 91精品国产日韩91久久久久久 | 久久国产精品一区 | 成人国产精品久久 | 久久国产精品99久久久久久丝袜 | 一区二区三区视频在线观看 | 欧美福利视频一区 | 免费国产精品久久久久久 | 欧美精品一二区 | 亚洲精品456 | 91大神在线资源观看无广告 | 亚洲精品中文字幕av | av中文字幕在线观看 | 日本激情视频中文字幕 | 人人爽人人爽人人片av | 天天天天天操 | 西西裸体做爰视频 | 成人在线精品视频 | 中文字幕一区在线观看视频 | www日本在线观看 | 欧美成人一区二区 | a级大片免费观看 | 中文字幕精品一区二区三区精品 | 国产精品久久久久一区二区三区 | 久久久激情视频 | 99国产精品久久久 | 久久久精品影院 | 天天操天天拍 |