Deep Learning 101, Taiwan’s pioneering and highest deep learning meetup, launched on 2016/11/11 @ 83F, Taipei 101
AI是一條孤獨且充滿惶恐及未知的旅程,花俏絢麗的收費課程或活動絕非通往成功的捷徑。
衷心感謝當時來自不同單位的AI同好參與者實名分享的寶貴經驗;如欲移除資訊還請告知。
由 TonTon Huang Ph.D. 發起,及其當時任職公司(台灣雪豹科技)無償贊助場地及茶水點心。
去 YouTube 訂閱 | Facebook | 回 GitHub Pages | 到 GitHub 點星 | 網站 | 到 Hugging Face Space 按愛心
大語言模型 | 語音處理 | 自然語言處理 | 電腦視覺 |
Large Language Model | Speech Processing | Natural Language Processing, NLP | Computer Vision |
用 AI 懂 AI
AI 技術 體驗/分享
手把手帶你一起踩 AI 坑:https://www.twman.org/AI
- 白話文手把手帶你科普 GenAI:淺顯介紹生成式人工智慧核心概念,強調硬體資源和數據的重要性。
- 大型語言模型直接就打完收工?:回顧 LLM 領域探索歷程,討論硬體升級對 AI 開發的重要性。
- 檢索增強生成(RAG)不是萬靈丹之優化挑戰技巧:探討 RAG 技術應用與挑戰,提供實用經驗分享和工具建議。
- 大型語言模型 (LLM) 入門完整指南:原理、應用與未來:探討多種 LLM 工具的應用與挑戰,強調硬體資源的重要性。
- 解析探索大型語言模型:模型發展歷史、訓練及微調技術的 VRAM 估算:探討 LLM 的發展與應用,硬體資源在開發中的作用。
- Diffusion Model 完全解析:從原理、應用到實作 (AI 圖像生成);深入探討影像生成與分割技術的應用,強調硬體資源的重要性。
- ASR/TTS 開發避坑指南:語音辨識與合成的常見挑戰與對策:探討 ASR 和 TTS 技術應用中的問題,強調數據質量的重要性。
- 那些 NLP 踩的坑:分享 NLP 領域的實踐經驗,強調數據質量對模型效果的影響。
- 那些語音處理踩的坑:分享語音處理領域的實務經驗,強調資料品質對模型效果的影響。
- 手把手學深度學習安裝環境:詳細介紹在 Ubuntu 上安裝深度學習環境的步驟,分享實際操作經驗。
AI 技術 開源/試用
Deep Bilateral Learning for Real-Time Image Enhancement YouTube
2018/08/17 黃俊仁 (Ken Huang)
研究關鍵重點彙整
1. 社交網絡情緒分析 (Social Network Sentiment Analysis / 輿情監控)
這是一個利用自然語言處理 (NLP) 技術來分析社群媒體上文字留言情緒的應用 [1, 2]。
- 研究背景與目標
- 我們觀察到,有些加密貨幣(ICO)在社群網絡上的討論度很高,但在某些評分網站上的分數卻偏低 [1]。這讓我們懷疑現有的評分機制可能沒有充分反映真實的使用者情緒 [1, 2]。
- 因此,研究的目標是希望透過分析 Facebook、Twitter 等社交網絡上的文字留言 [1, 2],判斷這些文字是表達正面或負面的情緒 [1, 2],進而計算出整體的社群情緒評分 [1]。這項技術可以被視為一種「威脅情報 (threat intelligence)」,用來判斷特定項目(如 ICO)的公眾情緒是正面還是負面,並監控其隨時間的變化趨勢 [2]。這也被稱為語情監控 (Public Opinion Monitoring) [3, 4]。
- 核心技術與流程
- 這個項目主要使用了 LSTM (長短期記憶網絡) 和 CNN (卷積神經網絡) 這兩種深度學習模型來進行情緒分析 [1, 2]。對於新手來說,LSTM 擅長處理序列資料(如文字句子的順序),而 CNN 雖然常用於圖像,但在文字處理中也能捕捉詞語的局部關聯,兩者結合能提升情緒判斷的準確性。
- 分析流程包含幾個重要步驟 [1, 5]:
- 資料預處理 (Data Preprocessing):這是 NLP 中非常基礎但關鍵的一步。原始的文字資料往往很「髒」,包含許多符號、錯字、非標準用語等 [1, 4, 5]。預處理的目的是清理和規範化這些數據,例如移除符號、替換常用詞,或濾掉不必要的雜質,以獲得更「純淨」的資料 [1, 4, 5]。這能大幅降低模型處理的難度 [4]。
- Tokenization (編碼):將清理後的文字分解成更小的單元(如單詞或子詞),並將這些文字單元轉換成數字編碼 [1, 5, 6]。神經網絡需要數字輸入,這一步就是將人類可讀的文字轉化為機器可讀的數字表示 [5]。
- Embedding (詞嵌入):這是深度學習處理文字資料中一個非常核心的概念 [1, 5, 6]。Embedding 層會將前面得到的數字編碼轉換成連續的、低維度的特徵向量 (Feature Vector) [1, 5, 6]。這些向量不僅僅是數字,更重要的是它們能夠捕捉詞語之間的語義和語法關係 [6]。簡單來說,意思相似或用法相似的詞語,在嵌入空間中的向量會比較靠近 [5]。Embedding Layer 通常是神經網絡處理文字輸入的第一層 [1, 5]。
- 模型訓練與預測:將 Embedding 層輸出的特徵向量輸入到 LSTM 和 CNN 模型中 [1, 2]。模型會根據已有的標註資料集(例如論文或 Kaggle 上的公開數據集)進行訓練 [1, 7],學習文字模式與情緒之間的關聯 [1, 5]。訓練好的模型就可以用來預測新的文字評論是正面還是負面,並給出一個情緒分數 [1, 5]。分數以 +/- 2.5 作為判斷正面或負面的基準 [1, 7, 8]。
- 系統建構與展示
- 研究團隊開發了一個網頁應用程式來展示分析結果,這個應用程式被稱為 SOCINT 網站 (未公開) 或簡稱為 sock (Social Intelligence) [1, 3, 7, 8]。
- 系統會收集大量社交網絡數據,目前主要爬取 Facebook 的公開評論,已經收集了約 150 萬筆資料 [1, 4, 7, 8]。Twitter 資料由於 API 限制和變動頻繁等原因,整合遇到較多困難 [1, 4, 8, 9]。
- 根據每日收集到的留言內容計算情緒分數 [1, 7]。
- 提供時間區間選擇(如 3天、7天、10天或 14天)來觀察情緒趨勢 [1, 7, 8, 10]。
- 展示「好的評論」(good comment) 和「壞的評論」(bad comment) 範例供用戶參考 [1, 4, 8]。
- 整合其他 ICO 相關資訊,例如 Facebook 和 Twitter 連結、ing token 上的介紹頁面(主要針對對 ICO 感興趣的用戶,提供白皮書分析、社群媒體成長趨勢、Github commit 次數等資訊)[1, 4, 7, 8]、ICO 基本資訊、社群媒體成長趨勢、Github 資料 [1, 4, 8] 以及合約檢測功能 [4, 8]。
- 設置類似 Help Us 的頁面,展示模型預測的情緒分數,並鼓勵用戶調整評分,以收集更多真實用戶的感受,持續優化模型 [4, 8]。這對於提升模型在真實世界數據上的泛化能力非常重要 [4]。
- 面臨的挑戰
- 社交網絡數據收集困難重重,尤其是 Twitter 的 API 限制多,爬取規則變動頻繁 [1, 4, 8, 9]。Facebook 爬蟲也容易遇到被暫停帳號或需要額外驗證的問題 [9, 11].
- 確保用於訓練模型的數據集能夠代表真實世界中各種複雜的語言情況和情緒表達 [1].
- 模型的原始輸出結果不一定直接適用,可能需要根據實際應用場景進行調整和優化 [1, 12].
- 模型訓練需要大量的時間和計算資源 [1].
- 文字預處理中的許多邊角情況需要特別處理,例如連續的驚嘆號、表情符號等 [1, 4].
- 未來發展方向
- 將情緒分析的應用範圍擴展到 ICO 以外的其他領域,例如餐廳評價、旅遊景點評論或網路產品評價等 [1, 10].
- 考慮開放 API 供開發者使用歷史數據進行研究或開發 [1, 10].
- 持續優化模型性能,提高分析的準確性和效率 [1].
- 可能會探索如何處理更加細微或帶有隱喻的情緒表達 [11].
2. 深度推理 (Deep Reasoning / Machine Reasoning)
這項研究的核心目標是讓機器能夠執行類似人類的高階認知行為,而不僅僅是感知層面的任務 [2, 13]。
- 核心概念
- 深度推理 / 機器推理 指的是機器能夠進行更複雜的邏輯思考,包括演繹 (Deduction) 和歸納 (Induction) [2, 3, 13]。
- 這與現有深度學習在感知 (Perception) 問題上的成功有所不同 [2, 13]。感知任務如圖像識別、語音識別主要依賴於從大量數據中學習模式,例如使用 CNN、RNN、LSTM 等模型 [13]。而推理需要更高的抽象能力和邏輯結構理解 [2, 13]。
- 推理的類型:
- 歸納法 (Induction):從具體的、個別的案例或觀察中總結出一般性的規律或原則(Bottom-up 方式) [3, 13, 14]。例如,觀察到許多天鵝是白色的,歸納出「天鵝可能是白色的」或「所有天鵝都是白色的」(這個結論有時不一定完全準確,取決於觀察的完整性) [14, 15]。
- 演繹法 (Deduction):從已知的一般原則或前提中推導出具體的、必然的結論(Top-down 方式) [3, 13, 14]。例如,已知「所有人都會死」和「蘇格拉底是人」,可以演繹出「蘇格拉底會死」 [14]. 演繹推理在邏輯上更為嚴謹 [15].
- 推理與記憶的關係
- 人類進行推理的過程與記憶密切相關 [2, 13, 16, 17]。我們需要將接收到的信息存儲到大腦的記憶中,並在需要時讀取、運用這些信息來進行思考和推導 [2, 13, 16, 17]。
- 大腦的額葉 (Frontal Lobe) 被認為與高階認知和推理能力有關 [13, 17]。神經科學研究認為,額葉的功能機制可能涉及一個類似控制器 (Controller) 的部分,它控制著如何處理和存取記憶緩衝區 (Memory Buffer) 中的信息 [13, 17]。
- 研究人員希望能夠將人類大腦中處理記憶和控制的機制應用到神經網絡模型中,藉此增強模型的推理能力 [2, 17]。具有更強記憶能力的模型被認為可能更能進行推理 [16, 17].
- 相關研究與數據集
- bAbI 數據集 (bAbI Dataset):由 Facebook AI Research 提出的數據集 [2, 3, 13, 18],專門用於測試機器的推理能力 [2, 3, 13]. 這對於新手來說是理解機器推理能力評估的一個重要資源。
- 它包含 20 種不同類型的推理任務 [13, 18],例如單步或多步的支持事實推理(需要從故事中找到支持答案的事實)、位置推理、計數、集合操作、路徑尋找等 [13, 18]。
- 數據集是由機器生成的 [13, 14],結構化程度較高 [13]。每個任務通常包含一個簡短的故事或描述,以及一個相關的問題,目標是從故事中推導出答案 [13, 18]。答案往往是明確的 [17]。
- 測試的準確性通常以 100 分為滿分 [13, 18]。目前大多數模型在 bAbI 數據集上的表現看似不錯(例如 RNN 可以達到 100 分,但這是針對訓練集中出現過的實體) [13, 18]。
- 然而,bAbI 這類數據集由於是結構化的合成數據,與真實世界的自然語言推理有所不同 [13]。一個重要的挑戰在於處理未出現過的實體名稱 (entity) 的推理 [13, 19]。如果模型在訓練時沒有見過某個實體,但在測試時出現了,它能否對其進行正確推理?這比在訓練集中出現過的實體推理更困難 [13, 19]。
- 記憶增強的神經網絡 (Memory-Augmented Neural Networks):研究正在探索將神經網絡與外部記憶體結合的模型,例如 神經圖靈機 (Neural Turing Machine, NTM) 和 可微分神經計算機 (Differentiable Neural Computer, DNC) [2, 3, 16, 17].
- NTM 的核心思想是將神經網絡(作為控制器)與可讀寫的外部記憶體(Memory Matrix)結合 [2, 3, 16, 17],旨在模仿傳統電腦的 CPU 和記憶體架構 [2, 3, 19, 20]. LSTM 雖然有內部記憶單元 (Cell state),但 NTM 和 DNC 的外部記憶體更大、更靈活,並且控制器可以學習如何精確地讀取和寫入記憶體的特定位置 [18-20].
- NTM 提供了兩種主要的記憶體定址方式 (Memory Addressing):基於內容 (Content-based) 定址(根據輸入內容與記憶體中存儲內容的相似度來決定讀寫位置)和基於位置 (Location-based) 定址(通過在現有位置上進行移位或結合歷史位址信息來確定位置)[3, 21]。這使得模型可以學習更複雜的數據結構和存取模式,處理需要記憶和推理的任務 [2, 16, 17].
- 這些記憶增強模型在理論上具有處理更複雜推理問題的潛力 [16]。然而,目前的挑戰在於訓練難度較高 [16, 22],模型可能不穩定 [22],離實際應用還有一定距離 [16, 22]。研究正在探索更簡化且有效的記憶增強模型 [16].
- NTM 的 IO(輸入/輸出)與傳統 RNN/LSTM 類似 [22]。雖然 NTM 的記憶能力理論上更強且能處理更長的序列 [22],但實際應用不普及的主要原因是訓練困難且結果不穩定 [22]。
- 其他相關研究:與語言學(特別是語義學)的結合被認為可以幫助理解自然語言的邏輯結構 [16],這對於設計推理模型非常有指導意義 [15, 16].
- bAbI 數據集 (bAbI Dataset):由 Facebook AI Research 提出的數據集 [2, 3, 13, 18],專門用於測試機器的推理能力 [2, 3, 13]. 這對於新手來說是理解機器推理能力評估的一個重要資源。
- 總結與未來方向
- 推理能力是機器邁向更高層次智能的關鍵 [2, 13]。
- 記憶增強模型為實現機器推理提供了潛在的方向 [2, 16]。
- 未來的研究可能包括將這些模型應用於更自然的推理任務 [16],提高模型的訓練穩定性和泛化能力 [16]。
- 如何處理非結構化或邏輯不那麼嚴謹的自然語言中的推理問題仍然是重要的挑戰 [15, 17].
3. 深度學習應用於即時圖像處理 (Real-time Image Processing with Deep Learning)
這部分主要探討了如何利用深度學習加速圖像處理演算法,使其能在移動裝置上達到即時 (Real-time) 性能 [12, 23]。核心技術圍繞著 雙邊濾波器 (Bilateral Filter) 及其加速方法展開 [23, 24]。
- 雙邊濾波器 (Bilateral Filter)
- 概念:雙邊濾波器是一種圖像處理濾波器 [3, 23],它在進行加權平均時,不僅考慮像素的空間距離 (Spatial Domain)(就像傳統的高斯濾波器 Gaussian Filter)[3, 24],還額外考慮了像素之間的像素值差異 (Pixel Value)(亮度或顏色差異)[3, 6, 24]。
- 優勢:正是因為考慮了像素值差異,雙邊濾波器在平滑圖像(降低雜訊)的同時,能夠有效地保留邊緣 (Edge Preservation) 細節 [3, 6, 24]。在高斯濾波中,如果像素距離近,即使它們的像素值差異很大(代表邊緣),它們的權重仍然可能很高,導致邊緣被模糊 [24]。而雙邊濾波器在遇到像素值差異大的地方(如物體邊緣),會降低這些像素的權重,從而減少邊緣的模糊程度 [24]。這項特性使得雙邊濾波器非常適合用於美顏磨皮等應用,可以在平滑皮膚的同時保留五官的邊緣清晰度 [24]。
- 問題:傳統雙邊濾波器的主要缺點是計算速度很慢 (Performance is poor) [6, 24],難以在行動裝置上實現即時處理 [23, 24]。這是因為它的計算過程包含兩個高斯函數的計算 [24],而且對於圖像中的每一個像素,都需要考慮其周圍鄰域像素的空間距離和像素值差異來計算權重並進行加權平均 [6, 24]。
- 加速技術的演進
- 早期加速方法:針對傳統雙邊濾波器計算速度慢的問題,研究人員開始探索加速方法 [24]。嘉文程 (Jiawen Chen) 等人曾在 2006 年和 2007 年提出了雙邊濾波器的加速演算法,包括一些 GPU 加速的實作細節 [24-26]。
- 雙邊格網 (Bilateral Grid):作為加速方法的一部分,雙邊格網這種資料結構被提出 [3, 26]。它的核心思想是將圖像從二維平面擴展到包含像素強度(或顏色)資訊的三維空間 [3, 26]。在這個三維格網中進行操作(例如卷積)可以比在原始圖像上直接應用雙邊濾波器更快 [6, 26]。然後再從這個三維格網中切片 (Slicing) 或採樣回二維圖像 [3, 27]。你可以把 Bilateral Grid 想像成一個三維的查找表或數據結構,裡面儲存了圖像轉換的資訊 [26].
- 基於降採樣與格網的加速 (Bilateral guided upsampling - 2016 paper):嘉文程等人在 2016 年又提出了新的加速技術 [24, 26]。他們觀察到,不論多複雜的圖像處理演算法,如果只看圖像的一小塊區域(局部區域),輸入像素與輸出像素之間的轉換關係其實相對簡單,可以用一個線性函數來逼近 [26]。基於這個觀察,他們的方法是先將高解析度的輸入圖像降採樣 (Downsampling) 到一個較低的解析度(例如 256x256)[3, 26, 27]。在低解析度的圖像上應用複雜的圖像處理演算法會非常快 [27]。然後,利用這個低解析度輸入和輸出的對應關係,學習或擬合出一個 Bilateral Grid [26, 27]。最後,利用這個 Bilateral Grid,並結合原始的高解析度輸入圖像(作為 guidance),進行上採樣 (Upsampling) 操作 [3, 27]。這個上採樣過程應用的是 Bilateral Grid 中儲存的線性轉換,由於是簡單的線性運算,可以利用 GPU 大幅加速 [27]。這種方式可以在保持視覺效果接近高解析度直接處理的同時,顯著提升速度 [27]。
- 深度學習加速方法 (Learning for Real-time Image Processing - 2017 paper)
- 這是 K 介紹的 Google 2017 年發表在 SIGGRAPH 上的論文 [23-25]。這篇論文的核心思想與 2016 年的方法類似,但將其中一個關鍵步驟替換成了深度學習模型 [27]。
- 核心思想:不是像 2016 年那樣從低解析度輸入輸出的對應關係去「擬合」一個 Bilateral Grid,而是訓練一個神經網絡,讓它直接從低解析度的輸入圖像中學習並預測出 Bilateral Grid [6, 27]。
- 流程:
- 將高解析度輸入圖像降採樣到低解析度 (例如 256x256) [27].
- 將低解析度圖像輸入一個神經網絡 [6, 27]。
- 神經網絡的目標是預測 (predict) 出一個 Bilateral Grid [6, 27]。這個 Bilateral Grid 可以想像成一個三維的矩陣,其中每個網格點儲存了一個表示顏色轉換的色彩轉換矩陣 (Color Transform Matrix) [3, 26]。這些矩陣代表了局部的線性變換 [27, 28]。
- 網絡結構包含處理低層次特徵的卷積層,並分成局部特徵 (Local Feature) 和全局特徵 (Global Feature) 兩個分支 [6, 29]。
- 局部特徵分支:用於捕捉和處理圖像的局部細節,以便實現局部性的處理效果 [6, 29]。例如,只對圖像中的人臉區域進行提亮或美化,而其他區域不受影響 [29]。
- 全局特徵分支:用於捕捉圖像的整體上下文信息,確保處理後的圖像具有連續性和一致性 [6, 29]。例如,讓整片天空的顏色變化是平滑連續的,避免出現不自然的色塊或偽影 (artifact) [29]。
- 這兩個分支的結果會被融合 (fusion) 起來,生成最終的 Bilateral Grid [29].
- 最後,利用預測出的 Bilateral Grid 和原始高解析度輸入圖像(作為 guidance),進行上採樣 (Upsampling) 操作 [3, 27, 29]。這一步通過對 Bilateral Grid 進行切片 (Slicing) 和應用其中的轉換矩陣來實現 [3, 12]。這個過程可以利用 GPU 大幅加速,從而達到即時的處理速度 [12, 27]。
- 優勢:這種方法的巨大突破在於,它不需要實作原始的複雜圖像處理演算法本身 [12]。只要有目標演算法的輸入和輸出範例(用於訓練神經網絡),神經網絡就能學習如何產生對應的 Bilateral Grid [12]。這使得將複雜的圖像處理效果部署到運算能力有限的行動裝置上變得非常容易和快速 [12, 23]。模型一旦訓練好,就能在手機上實現每秒 40-50 幀的即時處理速度 [12]。
- 應用:這項技術可以應用於模擬各種複雜的圖像處理演算法,例如 HDR (High Dynamic Range) 效果、色彩風格轉換、局部調整等 [3, 12, 23]。Google 的 Photography 產品就應用了這項技術來實現自動修圖,提升圖像的亮度、對比度、色彩鮮豔度等 [12, 23, 24]。
- 實作細節:雖然論文提供了模型架構,但要在行動裝置上達到即時性能,最後的 Bilateral Grid 上採樣/切片步驟需要針對 GPU 進行底層程式碼實作 [12]。直接使用模型並不能達到最佳效能 [12]。在訓練時,需要準備大量的輸入/輸出圖像對作為數據集 [12]。