所謂“人工智慧”通常是泛指讓機器具有像人一樣的智慧的技術,其目的是讓機器像人一樣能夠感知、思考和解決問題;而“機器學習”通常是指讓計算機透過學習現有的資料,實現認知的更新和進步。顯然,機器學習是實現人工智慧的一種途徑,這也是我們的課程要討論的內容。現如今,“機器學習”和“大資料”可以說是最時髦的兩個詞彙,而在弱人工智慧階段,無論是“機器學習”還是“大資料”最終要解決的問題本質上是一樣的,就是讓計算機將紛繁複雜的資料處理成有用的資訊,這樣就可以發掘出資料帶來的意義以及隱藏在資料背後的規律,簡單的說就是用現有的資料對將來的狀況做出預測和判斷。
在討論機器學習相關內容之前,我們先按照問題的“輸入”和“輸出”對用計算機求解的問題進行一個分類,如下所示:
- 輸入的資訊是精確的,要求輸出最優解。
- 輸入的資訊是精確的,無法找到最優解,只能獲得滿意解。
- 輸入的資訊是模糊的,要求輸出最優解。
- 輸入的資訊是模糊的,無法找到最優解,只能獲得滿意解。
在上面的四大類問題中,第1類問題是計算機最擅長解決的,這類問題其實就是“數值計算”和“邏輯推理”方面的問題,而傳統意義上的人工智慧也就是利用邏輯推理來解決問題(如早期的“人機對弈”)。一直以來,我們都習慣於將計算機稱為“電腦”,而基於“馮諾依曼”體系結構的“電腦”實際上只是實現了“人腦”理性思維這部分的功能,而且在這一點上“電腦”的表現通常是優於“人腦”的;但是“人腦”在處理模糊輸入資訊時表現出來的強大處理能力,在很多場景下“電腦”是難以企及的。所以我們研究機器學習的演算法,就是要解決在輸入模糊資訊時讓計算機給出滿意解甚至是最優解的問題。
人類透過記憶和歸納這兩種方式進行學習,透過記憶可以積累單個事實,使用歸納可以從舊的事實推匯出新的事實。所以機器學習其實是一種訓練,讓計算機透過這種訓練能夠學會根據資料隱含模式進行合理推斷的能力,其基本流程如下所示:
- 觀察一組例項,通常稱為訓練資料,它們可以表示某種統計現象的不完整資訊;
- 對觀測到的例項進行擴充套件,並使用推斷技術對擴充套件過程建模;
- 使用這個模型對未知例項進行預測。
監督學習是從給定的訓練資料集中學習得到一個函式,當新的資料到來時,可以根據這個函式預測結果,監督學習的訓練集包括輸入和輸出,也可以說是特徵和目標。監督學習的目標是由人來標註的,而非監督學習的資料沒有類別資訊,訓練集也沒有人為標註結果,透過無監督學習可以減少資料特徵的維度,以便我們可以使用二維或三維圖形更加直觀地展示資料中的資訊 。
- 歐氏距離
- 曼哈頓距離
- 切比雪夫距離
- 閔可夫斯基距離
- 當$p=1$時,就是曼哈頓距離
- 當$p=2$時,就是歐式距離
- 當$p \to \infty$時,就是切比雪夫距離
- 餘弦距離 $$ cos(\theta) = \frac{\sum_{k=1}^n x_{1k}x_{2k}}{\sqrt{\sum_{k=1}^n x_{1k}^2} \sqrt{\sum_{k=1}^n x_{2k}^2}} $$
根據上面的論述,我們可以給“機器學習”下一個正式的定義:機器學習是一門專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身效能的學科。即使對於機器學習這個概念不那麼熟悉,但是機器學習的成果已經廣泛滲透到了生產生活的各個領域,下面的這些場景對於你來說一定不陌生。
場景1:搜尋引擎會根據搜尋和使用習慣,最佳化下一次搜尋的結果。
場景2:電商網站會根據你的訪問歷史自動推薦你可能感興趣的商品。
場景3:金融類產品會透過你最近的金融活動資訊綜合評定你的貸款申請。
場景4:影片和直播平臺會自動識別圖片和影片中有沒有不和諧的內容。
場景5:智慧家電和智慧汽車會根據你的語音指令做出相應的動作。
簡單的總結一下,機器學習可以應用到但不限於以下領域:
-
計算機視覺。計算機視覺是指機器感知環境的能力,目前在物體檢測和人臉識別這兩個領域已經非常成熟且產生了大量的應用。
-
刷臉支付
-
-
自然語言處理(NLP)。自然語言處理是目前機器學習中一個非常熱門的分支,具體的又可以分為三類應用場景。其中文字挖掘主要是對文字進行分類,包括句法分析、情緒分析和垃圾資訊檢測等;而機器翻譯和語音識別相信不用太多的解釋大家也都清楚。
-
機器人。機器人可以分為固定機器人和移動機器人兩大類。固定機器人通常被用於工業生產,例如用於裝配流水線。常見的移動機器人應用有貨運機器人、空中機器人和自動載具。機器人需要軟硬體的協作才能實現最優的作業,其中硬體包含感測器、反應器和控制器等,而軟體主要是實現感知能力,包括定位、測繪、目標檢測和識別等。
實現機器學習的一般步驟:
- 資料收集
- 資料準備
- 資料分析
- 訓練演算法
- 測試演算法
- 應用演算法
Scikit-learn源於Google Summer of Code專案,由David Cournapeau在2007年發起,它提供了機器學習可能用到的工具,包括資料預處理、監督學習(分類、迴歸)、非監督學習(聚類)、模型選擇、降維等。
官網地址:https://scikit-learn.org/stable/index.html
安裝方法:pip install scikit-learn