機器學習就是讓機器能自動找到一個函數(function)git
語音識別(Speech Recognition)github
輸入是音頻,輸出是音頻對應的文字。微信
圖像分類網絡
輸入是圖片,輸出是類別(好比貓、狗)。機器學習
AlphaGo下圍棋函數
輸入是當前棋盤的狀態,輸出是下一步落棋的位置。學習
對話/問答系統優化
爲解決不一樣的問題、完成不一樣的任務,須要找到不一樣的函數,那機器學習能找到哪些函數呢?spa
迴歸(Regression)blog
輸出是一個連續的數值、標量,好比PM2.5預測。
分類(Classification)
輸出是一個離散的值。
二分類(Binary Classification)的輸出就是0或一、Yes或No、…,好比文本情感分析的輸出能夠是正面和負面。
多分類(Multi-Category Classification)的輸出就是[1,2,3,...,N],好比圖像分類裏判斷一張圖片是貓仍是狗仍是杯子。
生成(Generation)
不少教科書把機器學習劃分爲迴歸問題和分類問題,但其實不止這兩種問題,還有其它問題,好比生成(Generation)。
生成(Generation)指讓機器學習如何創造/生成,好比生成文本、圖片等。
咱們該如何爲機器提供學習資料?
有監督學習(Supervised Learning)
能夠把有監督學習中的「監督」理解爲「標籤(Label)」,即數據集中不只包括特徵還包括標籤。
有了標籤,咱們就能夠評價一個函數的好壞,進而優化這個函數。
使用Loss判斷函數的好壞,Loss越小,函數越好。我的想法:值得一提的是,Loss/評價指標是多樣的、優化方法也是多樣的。
強化學習(Reinforcement Learning)
原始的AlpahGo是先經過有監督學習優化到必定程度,而後用強化學習繼續優化。
新版本的AlphaGo是徹底經過強化學習實現的,優於原始的AlphaGo。
無監督學習(Unsupervised Learning)
只給機器提供數據特徵,但不提供數據標籤。那機器能學到什麼呢?
下面以讓機器學習下圍棋爲例:有監督學習VS強化學習。
有監督學習
函數的輸入(數據特徵)就是棋盤狀態,函數的輸出(數據標籤)就是下一步落棋的位置。
此時,咱們須要爲機器提供的數據就相似棋譜(若是如今棋局是這樣,那下一步怎麼落棋最好),但其實人類不必定知道怎麼落棋最好。
我的想法:理論上,經過這樣的有監督學習,機器是沒法超越人類的。由於這樣的有監督學習的本質是人類把本身的下棋策略教給機器,機器學習的內容僅僅是人類的下棋策略而沒法「自主進行思考」,因此理論上機器是沒法超越人類的。同時要注意,這裏的人類指全人類。
強化學習
讓機器跟本身、別人下棋,把結果(贏或輸)做爲Reward,引導機器學習如何下棋。
若是它贏了,那它就知道這一盤裏有幾步棋下得好,但不知道是哪幾步;若是它輸了,它就知道這一盤裏有幾步棋下得很差,但不知道是哪幾步。
我的想法:理論上,經過這樣的強化學習,機器是能夠超過人類的。由於二者的學習材料沒有本質區別,但機器的機能卻優於人類,這裏講的機能包括信息共享能力、記憶能力、執行能力等方面
咱們要給定函數形式/範圍(模型)
好比假定函數是線性模型、神經網絡等等。模型就是一個函數集,模型的參數肯定之後,才獲得一個函數。
找到更好的函數:
使用梯度降低(Gradient Descent),找到更好的函數。
AI的可解釋性(Explainable AI)
好比,機器爲何認爲這張圖片裏有一隻貓?
對抗攻擊(Adversarial Attack)
對輸入故意添加一些人沒法察覺的細微的干擾,致使模型以高置信度給出一個錯誤的輸出。
模型壓縮(Network Compression)
把模型壓縮以減小模型對計算資源消耗。
異常檢測(Anomaly Detection)
使機器知道它遇到了本身不知道的東西。
遷移學習(Transfer Learning/Domain Adversarial Learning)
一個模型已經學到了一些知識,將這些知識應用到另外一個任務中。
元學習(Meta Learning)
讓機器學習如何學習。
機器學習是咱們教機器學習某種知識,元學習是咱們教機器如何學習。
終身學習(Life-Long Learning)
讓機器終身學習,學習完任務一、再繼續學任務二、……
Github(github.com):@chouxianyu
Github Pages(github.io):@臭鹹魚
知乎(zhihu.com):@臭鹹魚
博客園(cnblogs.com):@臭鹹魚
B站(bilibili.com):@絕版臭鹹魚
微信公衆號(WeChat Official Accounts):@臭鹹魚的快樂生活
轉載請註明出處,歡迎討論和交流!