❤️“人工智能”的初生
- 人工智能(Artificial Intelligence,簡稱AI)是指計算機系統通過仿效人的思維和行為方式,實現類似於人類智能的一種技術。20世紀初期,“人工智能”就作為一個概念被提出。當時,科學家們開始思考如何使機器能夠模擬人類的思維過程,以便更好地解決複雜的決策問題。20世紀50年代,AI 的概念逐漸具體化,並在達特茅斯會議上被正式提出
🤷♂️如何定義 AI
- 現在我們希望 AI 的存在能允許計算機系統具備類似於人類智能的某些能力。這些能力包括:
| 能力類型 | 含義 |
|---|---|
| 👀感知能力 | 讓計算機能夠感知周圍環境,包括聽覺、視覺、觸覺等多個方面。 |
| 🙋語言能力 | 讓計算機能夠理解並處理人類語言,包括自然語言處理、語音識別等技術。 |
| 🕹️推理能力 | 讓計算機能夠根據已有的信息進行推理,並做出正確的決策。 |
| 🤔學習能力 | 讓計算機能夠不斷從經驗中學習,並提升自身的智能水平。 |
| 🎶創造能力 | 讓計算機能夠創造新的知識和思想。 |
- 機器學習時代,計算機算力資源很缺乏,大部分研究着重於如何讓計算機從傳感器數據中感知世界,而關於推理能力能有多強,大家並沒有太高的期望。因此涌現出了很多機器學習方法,大多數工作集中在人工的特徵工程上,利用各種獨特的技術抽取數據的特徵來做決策。機器學習也就成為了 AI 實踐的重要方法論
- 2012 年,AlexNet 憑藉 CNN(卷積神經網絡)突破了機器學習最極限的圖像分類性能,自此點燃了神經網絡技術的發展星火。同時隨着並行計算的快速發展,各種基於 CNN 優化的神經網絡算法登上歷史舞台,比如耳熟能詳的 ResNet,徹底奠定了神經網絡端到端算法的地位
- 其實到 ChatGPT 的誕生,已經標誌着 AI 開始全面擁有了以上定義的 5 種能力。AI 能夠關注事物的特點,能夠從語言聯繫到現實,能夠根據提示工程做出最終的判斷,能夠自我評價總結反思,能夠根據知識生成不存在的事物。統一大模型成為了極具誘惑力的香餑餑,為 AI 技術創造出極強的影響力
🕹️優化算法的本質
簡單問題
一個線性關係的學習過程是尋求最擬合一元一次方程的過程(以不同面積房價預測為例)
其中 \( w \)、\( b \) 是 Learnable,代表了其對於預測精度的決定性影像,也代表了它需要一個優化過程,經優化確定之後模型會有越來越好的預測能力
非結構化問題
- 一個非線性關係的學習需要多層非線性變換,實現對 DATA 的高層抽象
- DATA 輸入會更復雜,需要更復雜的數據操作
從 HIDEN LAYER 的 CELL 中理解優化算法
- 在多層感知機中,隱層由圖示的 CELL 組建而成,每一個 CELL 接受上一層的多個 CELL 輸入(\( S_n \)),經過 Activation(激活函數,此處以 ReLU 為例),得到該 CELL 對下一層的輸出(\( S^{\prime} \))
$$ Learnable:w1、w2... wn;bias $$
$$ o=\sum(ws)+bias $$
$$ S^{\prime}=Activation(o) $$
🤔現在我們開始理解什麼是學習
-
首先,我們總結一下簡單問題和非結構化問題的學習目標:
- 在簡單線性關係的學習中,我們的擬合函數在學習一套權重(\( w \) 和 \( b \)),每設置一套權重,我們都能評估直線方程與所有數據點的總距離
- 在非結構化問題的學習中,我們使用了好複雜的神經網絡,權重多了很多。但同樣,每當我設置一套神經網絡的權重,我就可以根據最後一層的兩個神經元的值評估分類的正確性
- 兩種問題的學習都有一些共同點:1. 都需要學習一個或一組權重來計算結果 2. 計算結果都能利用一個精度指標評估
- 現在就好辦了,我們只需要找到一個方法,讓我們根據精度來調整我們的權重。不斷反覆這個過程就是不斷學習,而調整權重的方法就是優化算法
- 這些優化算法的本質,都是根據預測結果與正確結果之間的誤差來構建損失函數,並根據損失函數的圖像來計算參數更新是正是負、具體更新多少
👀CV 的基礎任務
優化算法的突破需要非常深厚的學科積累,而且現有工作遠不如權重結構設計多。因此,在瞭解了學習的過程後,我們就可以直接開始認識一些主流的神經網絡架構啦。這裏以最經典的視覺問題為例
非像素級
IMAGE CLASSIFICTIOIN(分類)
- 一張圖像中是否包含某種物體,對圖像進行類別描述是 Image Classification 的主要研究內容
- 經典 CNN:AlexNet(2012),在其之後,有很多基於CNN的算法也在 ImageNet 上取得了特別好的成績,比如 GoogleNet(2014)、VGGNet(2014)、ResNet(2015)以及 DenseNet(2016)等
-
常用公共數據集(數據複雜度遞增):
- MNIST:60k 訓練圖像、10k 測試圖像、10個類別、圖像大小1×28×28、內容是0-9手寫數字
- CIFAR-10:50k 訓練圖像、10k 測試圖像、10個類別、圖像大小3×32×32
- CIFAR-100:50k 訓練圖像、10k 測試圖像、100個類別、圖像大小3×32×32
- ImageNet:1.2M 訓練圖像、50k 驗證圖像、1k 個類別。2017年及之前,每年會舉行基於 ImageNet 數據集的 ILSVRC 競賽
LOCALIZATION(定位)
- 在 Image Classification 的基礎上,還想知道圖像中的單個主體對象具體在圖像的什麼位置,通常是以包圍盒(bounding box)的形式。網絡帶有兩個輸出頭。一個分支用於做圖像分類,另一個分支用於判斷目標位置,即輸出四個數字標記包圍盒位置(例如中心點橫縱座標和包圍盒長寬),該分支輸出結果只有在分類分支判斷不為“背景”時才使用
OBJECT DETECTION(檢測)
- Object Detection 通常是從圖像中輸出多個目標的 Bounding Box 以及類別,同時完成了 Image Classification 和 Localization 。在 Localization 中,通常只有一個目標,而目標檢測更一般化,其圖像中出現的目標種類和數目都不定。近年來,目標檢測研究趨勢主要向更快、更有效的檢測系統發展
-
經典算法:
- two-stage:R-CNN(第一個高效模型)、Fast R-CNN、Faster R-CNN、R-FCN 等;
- one-stage:YOLO、SSD 等
- PASCAL VOC 包含20個類別。通常是用 VOC07 和 VOC12 的 trainval 並集作為訓練,用 VOC07 的測試集作為測試。
-
常用公共數據集(數據複雜度遞增):
- PASCAL VOC:20個類別。通常是用 VOC07 和 VOC12 的 trainval 並集作為訓練,用 VOC07 的測試集作為測試
- MS COCO:COCO 比 VOC 更困難。80k 訓練圖像、40k 驗證圖像、20k 沒有公開標記的測試圖像(test-dev),80個類別。通常是用80k 訓練和35k 驗證圖像的並集作為訓練,其餘5k 圖像作為驗證,20k 測試圖像用於線上測試
像素級/細粒度級
SEGMENTATION(分割)
分割任務是將整個圖像分成像素組,然後對其進行標記和分類,難度上比非像素級更大,特徵更加複雜
語義分割
- 語義分割試圖在語義上理解圖像中每個像素在大類上的從屬(例如天空、汽車、摩托車等)。
-
基本思路:
- 二分類:我們將圖像輸入模型,得到和圖像一樣長寬的輸出,其輸出為單通道概率圖,每個像素代表其屬於第二類的可能性,進行二值化得到分割結果
- 多分類:我們將圖像輸入模型,得到和圖像一樣長寬的輸出,其輸出為多通道,每個通道代表不同類別,本質是給每個類別一張二值圖以得到多類分割結果
- 經典算法:FCN(全卷積神經網絡)、UNet、PSPNet、DeepLabV3 系列、UPerNet 等
- 常用公共數據集比較雜,涉及了遙感、醫學影像、自動駕駛等各個專業和領域,體量龐大且專業性強,這裏不做展示
實例分割
- 和語義分割的本質區別在於,語義分割是得到在大類上的從屬關係,實例分割進一步區分大類中不同實體間的區別。比如,如果一羣人打排球,語義分割和實例分割都會將其分割結果歸類為「人」,但是語義分割的分割結果是一個大多邊形把人都包起來(圖1),而實例分割會給每個人一個多邊形包起來(圖2)
關鍵點檢測
- 提取分析對象的關鍵點,例如人臉的關鍵點有眼珠、眼角、鼻尖、嘴尖、下顎轉折點等等,通過提取這些點的二維座標就可以得到大概的線狀、面狀分佈特徵,如果能夠提取三位點座標,則可以引入深度特徵,實現更加複雜的應用
🔍為何分類是最基礎的任務?
- 基於分類算法,可以在後面連接到各種其他任務的算法(例如檢測、分割等),或者與其他算法頭並行。總之,如果沒有了分類,檢測器的包圍框將沒有實際的參考價值,分割器的像素之間劃分開的差異也沒有實際意義,所以分類算法是一切人工智能算法的基礎,分類領域的突破是下游任務發展的重要推動力
📐DEEPLEARNING 神經網絡架構的設計
- 從樸素的觀點來説,深度學習模型的隱層只需專心負責特徵提取,輸入層可以任意輸入各種模態的數據。比如,聲音數據可以經過濾波算法以及可視化算法轉化成彩圖和視覺算法共用輸入層;圖像數據可以切分為有序的塊,然後把每個塊映射為高維向量,作為 Token 輸入自然語言的 Transformer 算法。所以,DL 算法本質上只要數據兼容做的好,就可以套用到不同模態的學習過程中
- 但單純將各種模態數據映射為統一的輸入結構,容易損失數據特徵,因此需要針對分析對象的性質和關鍵特徵來設計模型的輸入層,以及隱層中的特徵提取方式
-
例如,而視頻和音頻數據相比於單幀數據,帶有時序特徵,在設計上如何考慮多幀之間的時序關係是非常重要的,因此難度也要更高。常見的應用有:
- 片段引導:劃分視頻片段,並對應某類片段的受眾,引導受眾跳轉到感興趣片段
- 片段查詢:根據用户的自然語言描述,截取出符合描述條件的片段
本文參與了SegmentFault 思否寫作挑戰賽,歡迎正在閲讀的你也加入。