計算機科學基礎_11 - 智能

機器學習&人工智能

  • 分類
  • 分類器
  • 特徵
  • 標記數據
  • 決策邊界
  • 混淆矩陣
  • 未標籤數據
  • 決策樹
  • 支持向量機
  • 人工神經網絡
  • 弱AI,窄AI
  • 強AI
  • 強化學習

計算機很擅長存放,整理,獲取和處理大量數據。很合適有上百萬商品的電商網站,或是存幾十億條健康記錄,方便查看。算法

但若是想根據數據作決定呢?
這是機器學習的本質(根據數據作決定)。機器學習算法讓計算機能夠從數據中學習,而後自行做出預測和決定。
能自我學習的程序頗有用,好比判斷是否是垃圾郵件。人是否有心律失常嗎?下一個視頻該推薦哪一個?等等。雖然有用,但不會說它有人類通常的智能。雖然AI和ML這兩詞常常混着用,大多數計算機科學家會說,機器學習是爲了實現人工智能這個更宏大目標的技術之一,人工智能簡稱AI。數據庫

機器學習和人工智能算法通常都很複雜,說一說概念。編程

分類器

例如:判斷飛蛾是「月娥」仍是「帝娥」,這叫「分類」。
作分類的算法叫「分類器」,雖然用照片和聲音來訓練算法,不少算法會減小複雜性,把數據簡化成「特徵」,「特徵」是用來幫助「分類」的值。網絡

標記數據和決策邊界

對於飛蛾分類的例子,用兩個特徵:「翼展」和「重量」,爲了訓練「分類器」做出好的預測,須要「訓練數據」,爲了獲得數據,須要收集相應相關合適量的數據。收集過程當中,須要記錄數據,而且不僅記錄特徵值,還會把種類記錄上,這叫「標記數據」,由於只有兩個特徵,很容易用散點圖把數據視覺化。可以大體分紅倆組,但仍是會有必定的重疊,須要機器學習算法,找出最佳區分,經過數值估量,翼展小於45毫米的,極可能是帝娥,再加上一個條件,重量必須小於0.75,纔算是帝娥。這些叫作「決策邊界」。併發

混淆矩陣

必定數量的帝娥在正確的區域,但剩下的幾隻,在錯誤的區域,另外一方面,必定數量的月娥在正確的區域,剩下的在錯誤的區域。這個表,記錄正確數和錯誤數,這表叫「混淆矩陣」。app

---------------------------
| 正確區域帝娥 | 錯誤區域帝娥 |
|-------------------------|
| 錯誤區域月娥 | 正確區域月娥 |
---------------------------

機器學習算法的目的,是最大化正確分類 + 最小化錯誤分類機器學習

未標籤數據

用決策邊界,若是是一隻不認識的飛蛾,能夠測量它的特徵,並繪製到決策空間上,這叫「未標籤數據」。
決策邊界能夠猜想飛蛾的種類。編程語言

決策樹

這個把決策空間,切成幾個盒子的簡單方法,能夠用「決策樹」來表示。函數

圖像與if語句:學習

clipboard.png

生成決策樹的機器學習算法,須要選擇用什麼特徵來分類,每一個特徵用什麼值。
有時候一些算法甚至用多個「決策樹」來預測,計算機科學家叫這個「森林」,由於有多棵樹。

支持向量機

本質上使用任意線來切分「決策空間」,不必定是直線,能夠是多項式或其餘數學函數。機器學習算法負責,找出最好的線,最準確的決策邊界。

只有兩個特徵比較好實現,但若是加第三個特徵,好比「觸角長度」,那麼2D線段,會變成3D平面。在三個惟獨上作決策邊界,這些平面沒必要是直的,並且 真正有用的分類器會有不少飛蛾種類。

三個特徵和五個品種,能夠用3D散點圖 實現:

clipboard.png

若是是一次性有4個或更多個特徵,就容易實現,沒有好的方法,更別說成百上千的特徵了。這正是機器學習面臨的問題。

經過想象在一個上千緯度的決策空間裏,給超平面找出一個方程。是不可行的,但機器學習算法能夠作到。

人工神經網絡

「決策樹」和「支持向量機」這些都出至於統計學,統計學早在計算機出現前,就在用數據作決定,有一大類機器學習算法用了統計學,也有不使用統計學的。其中值得注意的是 人工神經網絡,靈感來自大腦裏的神經元。神經元是細胞,用電信號和化學信號,來處理和傳輸消息,它從其餘細胞獲得一個或多個輸入,而後處理信號併發出信號,造成巨大的互聯網絡,能處理複雜的信息。

人造神經元很相似,能夠接受多個輸入,而後整合併發出一個信號,它不用電信號或化學信號。而是吃數字進去,吐數字出來,它們被放成一層層,造成神經元網絡,所以得名神經網絡。

clipboard.png

飛蛾例子,看如何用神經網絡分類:

  • 第一層,輸入層,提供須要被分類的單個飛蛾數據,一樣,也用重量和翼展。
  • 另外一邊是輸出層,有兩個神經元:一個是月娥,一個是帝娥。2個神經元裏最興奮的,就是分類結果。
  • 中間有一個隱藏層,負責把輸入變成輸出,負責幹分類這個重活。

clipboard.png

抽取一個「隱藏層」裏第一個神經元,神經元作的第一件事是把每一個輸入乘以一個權重。

clipboard.png

假設2.8是第一個輸入,0.1是第二個輸入。而後它會相加輸入,總共是9.74。
0.55 * 2.8 = 1.54, 82 * 0.1 = 8.2, 1.54 + 8.2 = 9.74

而後對這個結果,用一個誤差值處理,意思是加或減一個固定值。好比-6, 9.74 - 6 = 3.74
作神經網絡時,這些誤差和權重,一開始會設置成隨機值,而後算法會調整這些值,來訓練神經網絡,使用「標記數據」來訓練和測試。逐漸提升準確性,很像人類學習的過程。
最後,神經元有激活函數,它也叫傳遞函數。會應用於輸出,對結果執行最後一次數學修改。例如,把值限制在-1+1之間。或把負數改爲0,用線性傳遞函數,它不會改變值,因此,3.74仍是3.74
因此,該最小神經元,輸入0.55和82,輸出3.74。但加權,求和,偏置,激活函數,會應用於一層裏的每一個神經元,並向前傳播,一次一層。數字最高的結果就是:月娥。(根據輸入的不一樣數值,使用不一樣算法,最後弄成一類可比較的數字經行輸出,根據輸出的不一樣經行分類)。

clipboard.png

隱藏層不是隻能有一層,能夠有不少層。「深度學習」所以得名。

clipboard.png

訓練更復雜的網絡,須要更多的計算量和數據,儘管神經網絡50多年前就發明了,深層神經網絡直到最近才成爲可能。須要強大的處理器和超快的GPU,對於幀率的要求。

弱AI,窄AI

展現了深度神經網絡,在照片中識別人臉的準確率,和人同樣高。有了深層神經網絡開車,翻譯,診斷醫療情況等等。這些算法很是複雜,但還不夠「聰明」,它們只能作一件事情,分類飛蛾,找人臉,翻譯。這種AI叫「弱AI」或「窄AI」,只能作特定任務。
能自動做出診斷的醫療設備和自動駕駛的汽車。

強AI

真正通用的,像人同樣聰明的AI,叫「強AI」。目前沒有人作出來,接近人類智能的AI,有些人認爲不可能作出來,但許多人說,數字化知識的爆炸性增加,好比,維基百科,網頁,視頻,是「強AI」的完美引燃物。

AI不只能夠吸取大量信息,也能夠不斷學習進步,並且通常比人類快得多,學習什麼管用,什麼無論用,本身發現成功的策略。這叫「強化學習」,是一種很強大的方法。和人類的學習方式很是相似。計算機如今纔剛學會反覆試錯來學習,對於不少狹窄的問題,強化學習已被普遍使用。

計算機視覺

  • 檢測垂直邊緣的算法
  • 核/過濾器 kernel or filter
  • 卷積 convolution
  • Prewitt 算子
  • 卷積神經網絡
  • 識別出臉以後,能夠進一步用其餘算法定位面部標誌,如眼睛和眉毛具體位置,從而判斷心情等信息
  • 跟蹤全身的標記點,如肩部,手臂等。
視覺的重要性

大部分人靠視覺來工做,越過障礙,讀路牌,看視頻,以及無數其它任務。
視覺是信息最多的感官,好比周圍的世界是怎樣的,如何和世界交互。
所以,一直以來,計算機科學家一直在想辦法讓計算機有視覺,所以有了「計算機視覺」這個領域。

目標是:讓計算機理解圖像和視頻。

「聽到」不等於「聽懂」;
「看到」不等於「看懂」。

圖像是像素網格,每一個像素的顏色,經過三種基色定義:紅,綠,藍。
經過組合三種顏色的強度,能夠獲得任何顏色,也叫RGB值。

最簡單計算機視覺算法,是跟蹤一個顏色物體,好比一個粉色的球。

  • 首先,記錄下球的顏色,保存最中心像素的RGB的值。
  • 而後,給程序喂入圖像,讓它找最接近這個顏色的像素。
  • 算法能夠從左上角開始,逐個檢查像素,計算和目標顏色的差別,檢查了每一個像素後,最貼近的像素,極可能就是球。

clipboard.png

clipboard.png

不僅是一張圖片,能夠在視頻的每一幀圖片中跑這個算法,跟蹤球的位置。
固然,由於光線,陰影和其它影響。球的顏色會有所變化,不會存在和RGB值徹底同樣,但會很接近。
若是狀況更極端一些,好比比賽是晚上,追蹤效果可能會不好。若是球衣的顏色和球同樣,算法就徹底暈了。
所以不多用這類顏色跟蹤算法,除非環境能夠嚴格控制,顏色跟蹤算法是一個個像素搜索,由於顏色是在一個像素裏。
但這種方法,不適合多個像素的特徵,好比物體的邊緣,是多個像素組成的,爲了識別這些特徵,算法要一塊塊像素來處理,每一塊都叫作「塊」。

垂直邊緣算法

找垂直邊緣的算法,假設用來幫無人機躲避障礙,爲了簡單,須要把圖像轉成灰度,不過大部分算法能夠處理顏色

clipboard.png

放大其中一個杆子,看看邊緣是怎樣的:

clipboard.png

很容易地看到 杆子地左側邊緣從哪裏開始,由於有垂直地顏色變化,能夠定一個規則說,某像素是垂直邊緣的可能性,取決於左右兩邊像素的顏色差別程度。
左右像素的區別越大,這個像素越多是邊緣。若是色差很小,就不是邊緣。

clipboard.png

這個操做的數學符號,看起來像這樣:

clipboard.png

這個叫作「核」或「過濾器」

找垂直邊緣的算法,假設用來幫無人機躲避障礙,爲了簡單,須要把圖像轉成灰度,不過大部分算法能夠處理顏色

裏面的數字用來作像素乘法,總和,存到中心像素裏。

例如,
把全部像素已經轉成灰度值,把「核」的中心,對準感興趣的像素:

clipboard.png

這指定了每一個像素要乘的值,而後把全部數字加起來,在這裏,最後的結果是147

clipboard.png

成爲新的像素值,把「核」應用於像素塊,這種操做叫「卷積」。

卷積

結果值,色差很小,不是邊緣。

若是把「核」用於照片中每一個像素,結果,會成爲這樣:

clipboard.png

垂直邊緣的像素值很高,注意,水平邊緣,幾乎看不見。若是要突出那些特徵,要用不一樣的「核」,用於水平邊緣敏感的「核」。

clipboard.png

這兩個邊緣加強的核叫「Prewitt算子」,以發明者命名,衆多「核」的兩個例子,「核」能做出不少種圖像轉換。

例如,銳化的「核」:

clipboard.png

模糊圖像的「核」:

clipboard.png

「核」也能夠像餅乾模具同樣,匹配特定形狀,以前作檢測邊緣的「核」,會檢查左右或上下的差別,但也能夠做出擅長找線段的「核」。
或者包了一圈對比色的區域,這類「核」能夠描述簡單的形狀,
好比鼻樑每每比鼻子兩側更亮,因此線段敏感的「核」對這裏的值更高。
眼睛也很獨特,一個黑色圓圈被外層更亮的一層像素包着,有其它「核」對這種模式敏感。

卷積神經網絡

當計算機掃描圖像時,最多見的是用一個窗口來掃,能夠找出人臉的特徵組合。

當計算機掃描圖像時,最多見的是用一個窗口來掃,能夠找出人臉的特徵組合。
雖然每一個「核」單獨找出臉的能力很弱,但組合在一塊兒會至關準確,不是臉但又有一堆臉的特徵在正確的位置,這種狀況不太可能。
這種檢測算法叫:人臉檢測算法。

熱門算法是:卷積神經網絡。
神經網絡是最基本單元,是神經元,它有多個輸入,而後會把每一個輸入,乘一個權重值,而後求總和。

clipboard.png

「核」也能夠像餅乾模具同樣,匹配特定形狀,以前作檢測邊緣的「核」,會檢查左右或上下的差別,但也能夠做出擅長找線段的「核」。
或者包了一圈對比色的區域,這類「核」能夠描述簡單的形狀,
好比鼻樑每每比鼻子兩側更亮,因此線段敏感的「核」對這裏的值更高。
眼睛也很獨特,一個黑色圓圈被外層更亮的一層像素包着,有其它「核」對這種模式敏感。

若是給神經元輸入二維像素,徹底就像「卷積」,輸入權重等於「核」的值,但和預約義「核」不一樣,神經網絡能夠學習對本身有用的「核」,來識別圖像中的特徵。

「卷積神經網絡」用一堆神經元處理圖像數據,每一個都會輸出一個新圖像,本質上是被不一樣「核」處理了,輸出會被後面一層神經元處理,卷積卷積再卷積。

clipboard.png

第一層可能會發現「邊緣」這樣的特徵,單次卷積能夠識別出這樣的東西,下一層能夠再這些基礎上識別,好比由「邊緣」組成的角落,
而後下一層能夠在「角落」上繼續卷積,下一層可能識別簡單物體的神經元,好比,嘴和眉毛。而後不斷重複,逐漸增長複雜度,
直到某一層把全部的特徵都放在一塊兒:眼睛,耳朵,嘴巴,鼻子。

「卷積神經網絡」不是非要不少不少層,但通常會有不少層,來識別複雜的物體和場景,因此算是「深度學習」了。
還能夠識別手寫文字,在CT掃描中發現腫瘤,監測馬路是否擁堵。

無論用什麼算法,識別出臉以後,能夠用更專用的計算機視覺算法,來定位面部標誌,好比鼻尖和嘴角。有了標誌點,判斷眼睛有沒有張開就很容易了,只是點之間的距離罷了,
也能夠跟蹤眉毛的位置,眉毛相對眼睛的位置,能夠表明驚喜或喜悅,根據嘴巴的標誌點,檢測出微笑也很簡單。
這些信息能夠用「情感識別算法」來識別,讓電腦知道你是開心,憂傷,沮喪,困惑等等。而後計算機能夠做出合適的行爲。
好比當你不明白的時候,給你提示,心情很差的時候,就不彈更新提示了。不僅是物理環境。

面部標記點,也能夠捕捉臉的形狀,好比兩隻眼睛之間的距離,以及前額有多高,作生物識別,讓有攝像頭的計算機能認出你,
無論是手機解鎖,仍是政府用攝像頭跟蹤人,人臉識別有無限應用場景。
跟蹤手臂和全身的標記點,也有突破,讓計算機理解用戶的身體語言。

抽象是構建複雜系統的關鍵。
計算機視覺也同樣,硬件層面,有工程師在造更好的攝像頭,讓計算機有愈來愈好的視力。

用來自攝像頭的數據,能夠用視覺算法找出臉和手,而後能夠用其它算法,接着處理,解釋圖片中的東西。好比用戶的表情和手勢。

計算機視覺的應用:

  • 商店裏的掃條形碼
  • 等紅燈的自動駕駛汽車
  • 自拍添加一些搞怪的東西的App

視覺能力達到人類水平的計算機會完全改變交互方式。

天然語言處理

  • 詞性
  • 短語結構規則
  • 分析樹
  • 語音識別
  • 譜圖,Spectrogram
  • 快速傅立葉變換
  • 音速
  • 語音合成

計算機視覺 - 讓電腦能看到並理解。

計算機如何理解天然語言?

編程語言,詞彙量少,並且很是結構化,代碼只能在拼寫和語法徹底正確時,編譯運行。

天然語言有大量詞彙,有些詞有多種含義,不一樣口音,以及各類有趣的文字遊戲。
人類有強大的語言能力,所以,讓計算機擁有語音對話的能力,這個想法從構思計算機的時候,就已經誕生了。

所以有「天然語言處理」,簡稱「NLP」。
結合了計算機科學和語言學的 一個跨學科領域。

單詞組成句子的方式有無限種,無法給計算機一個字典,包含全部可能的句子,讓計算機理解人類在嘟嚷什麼。

因此NLP早期的一個基本問題是 怎麼把句子切成一塊塊。

英語單詞有九種基本類型:
名詞,代詞,冠詞,動詞,形容詞,副詞,介詞,連詞和感嘆詞。

這些叫「詞性」。

還有各類子類,好比:

單詞名詞 vs 複數名詞
副詞最高級 vs 副詞比較級

分析樹

瞭解單詞類型有用,但不幸的是,不少詞有多重含義,有些還能夠做動詞或形容詞。僅靠字典,不能解決這種模糊問題。因此電腦也要知道語法。
所以開發了「短語結構規則」來表明語法規則。
例如,英語中有一條規則,句子能夠由名詞短語和一個動詞短語組成。
名詞短語能夠是冠詞,而後一個名詞,或一個形容詞後面跟一個名詞。

能夠給一門語言制定出一堆規則,用這些規則,能夠做出「分析樹」,它給每一個單詞標了多是什麼詞性,也標明瞭句子的結構。

語音識別

例如,

THE MONGOLS ROSE FROM THE LEAVES

它給每一個單詞標了多是什麼詞性,也標明句子的結構。
句子的名詞重點是the mongols, 在作rising行爲, 從leaves rising。

數據塊更小,更容易處理。

clipboard.png

每次的語音搜索,都有這樣的流程。

計算機能明白這是「哪裏」(where)的問題。
把語言像樂高同樣拆分,方便計算機處理,計算機能夠回答問題,以及處理命令。
若是句子複雜一點計算機就無法理解。

還有,「短語結構規則」和其餘語言結構轉化的方法,能夠用來生成句子。

數據存在語義信息網絡時,這種方法特別有效,實體互相鏈接在一塊兒,提供構造句子的全部成分。

Google稱之爲「知識圖譜」,在2016年,包含大概七百億個事實,以及不一樣實體間的關係。


處理,分析,生成文字,是聊天機器人的最基本部件。

聊天機器人就是能和你聊天的程序,早期的聊天機器人大多用的是規則。
把用戶可能會說的話,和機器人應該回復什麼,寫成上百個規則,顯然,這很難維護,並且對話不能太複雜。

聊天機器人和對話系統,在過去發展極快,現在能夠和真人很像。
現在大多數用機器學習,用上GB的真人聊天數據 來訓練機器人。

聽到一個句子,計算機怎麼從聲音中提取詞彙?
這個領域叫「語音識別」。

處理天然語言的新算法,再也不是手工定規則,而是用機器學習,從語言數據庫中學習。
現在準確度最高的語音識別系統,用深度神經網絡。

理解原理:
先看看元音,好比ae

clipboard.png

這是兩個聲音的波形,這個信號來自麥克風內部隔膜震動的頻率,在這個視圖中,橫軸是時間,豎軸是隔膜移動的幅度,或者說振幅。
雖然能夠看到2個波形有區別,但不能看出那個表示e或那個表示a
爲了更容易識別,換個方式看:譜圖。

clipboard.png

這裏橫軸仍是時間,但豎軸不是振幅,而是不一樣頻率的振幅,顏色越亮,那個頻率的聲音就越大,這種波形到頻率的轉換,是用一種算法作的:快速傅立葉變換(FFT)。

若是盯過立體聲系統的EQ可視化器,差很少是一回事。

clipboard.png

譜圖是隨時間變化的。

譜圖中,信號有種螺紋圖案,那是聲道回聲,爲了發出不一樣聲音,須要嘴巴和舌頭變成不一樣形狀,放大或減小不一樣的共振,能夠看到有些區域更亮,有些更暗。

clipboard.png

若是從底向上看,標出高峯,叫「共振峯」:

clipboard.png

全部的元音都是如此,這讓計算機能夠識別元音,而後識別出整個單詞。

clipboard.png

例如:
當說「she... was.. happy」。

能夠看到e聲,和a聲,以及其它不一樣的聲音。

clipboard.png

好比she中的shh聲,was中的wahsss等等。

clipboard.png

這些構成單詞的聲音片斷,叫「音素」,語音識別軟件,知道這些音素,英語有大概44種音素,因此本質上變成了音素識別。
還要把不一樣的詞分開,弄清句子的開始和結束點,最後把語音轉成文字。
結合語言模型後,語音轉文字的準確度會大大提升,裏面有單詞順序的統計信息。

語音合成

讓計算機輸出語音,它很像語音識別,不過反過來,把一段文字,分解成多個聲音,而後播放這些聲音,早期語音合成技術,能夠清楚聽到音素是拼在一塊兒的。

到了1980年代,技術改進了不少,但音素混合依然很差,產生明顯的機器人聲音。創造一個正循環反饋,人們用語音交互的頻率會提升,給更多公司提供數據,來訓練語音系統。提升準確性,準確度高了,更願意使用語音交互。

相關文章
相關標籤/搜索