### [AI / ML領域相關學習筆記入口頁面](https://hackmd.io/@YungHuiHsu/BySsb5dfp) --- - [State of AI Report 2023](https://www.stateof.ai/) # State of AI Report 2023筆記 ## 簡介 State of AI Report是由Air Street Capital的Nathan Benaich主筆 Air Street Capital 是一間聚焦於人工智慧及機器學習新創的創投公司,提供資金與產業網路支援。而Nathan Benaich 主導的《State of AI Report》的年度報告,深受業界重視,因為它提供了全方位的分析,包含最新研究、技術發展、資金流向、政策環境和勞動市場趨勢。 ### State of AI 簡體中文摘要 #### [2023.10。Houmin。State of AI:2023 年度人工智能报告之 Research 篇](https://zhuanlan.zhihu.com/p/661688922) #### [2023.10。Houmin。State of AI: 2023 年度人工智能报告之 Industry 篇](https://zhuanlan.zhihu.com/p/661689384) #### [2023.10。Houmin。State of AI: 2023 年度人工智能报告之 Politics 与 Safety](https://zhuanlan.zhihu.com/p/661689620) 以下筆記為針對個人需求進行摘要與補充,想看完整中文資料可參考簡體中文摘要一節的連結 # Research ## LLM與生成式AI相關 ### RLHF大獲成功(Fueled by ChatGPT’s success, RLHF becomes MVP) RLHF透過人類反饋改善語言模型,儘管成本高,但效果顯著 - Reinforcement Learning from Human Feedback (RLHF)- used in InstructGPT <div style="text-align: left;"> <figure> <img src="https://hackmd.io/_uploads/SJiWSCBQp.png" width="400"> <figcaption> <span style="color: #3F7FBF; font-weight: bold; font-size: 14px"> <a href="https://www.stateof.ai/" target="_blank">RLHF 的典型步驟,是在對預訓練語言模型(如 GPT-3)進行監督微調的初始步驟之後進行的</a> <span style="color: #A9A9A9; font-size: 10px;"> </span> <br> <span style="font-size: 12px;"> </span> </figcaption> </figure> </div> ### RLHF強化學習近期仍會是主流(The false promise of imitating proprietary LLMs, or how RLHF is still king) <div style="text-align: left;"> <figure> <img src="https://hackmd.io/_uploads/B1mlMArX6.png" width="500"> <figcaption> <span style="color: #3F7FBF; font-weight: bold; font-size: 14px"> <a href="https://www.stateof.ai/" target="_blank">Router Concept Schematics(LangChain)</a> <span style="color: #A9A9A9; font-size: 10px;"> </span> <br> <span style="font-size: 12px;"> 左圖:展示了使用不同量的模仿資料(用token數量表示)對LLMs進行預訓練的結果。<br>右圖:展示了不同模型大小(用參數的數量來衡量,以十億計)對評估者的評價結果。 </span> </figcaption> </figure> </div> * 加州大學伯克利分校的研究者們展示了對大型、更有能力的語言模型(LLMs)進行微調,如果只是調整風格而不注重準確性,可能會導致輸出文件品質下降。 * 研究者們檢查了不同大小的預訓練LLMs,並且這些模型是基於不同數量的模仿資料進行預訓練的。他們發現,在固定模型大小時,使用更多的模仿資料實際上會降低輸出的品質。而更大的模型則從使用模仿資料中獲益。 * 作者認為,應該更多關注於更好的預訓練而不是在模仿資料上進行微調。 * 短期內,基於強化學習(RLHF)的方法看似將繼續存在。Meta的研究者在他們的LLaMa-2論文中得出結論:“我們認為,LLMs超越人類標註者在某些任務上的出色寫作能力,主要是由RLHF驅動的。” ### 尋找RLHF的替代方案(Even so, researchers rush to find scalable alternatives to RLHF) #### GPT and LLaMAs win the popularity contest ![image.png](https://hackmd.io/_uploads/SkEnDAHm6.png =500x) ### 不是能輸入的文字越多,模型效能表現就可以越好(Lost in the Middle: long contexts (mostly) don’t live up to the expectations) ![image.png](https://hackmd.io/_uploads/r11wOCHQT.png =600x) - 這項研究質疑一個假設:更長的上下文會提高下游任務表現。Samaya.ai、加州大學柏克萊分校、斯坦福大學以及LMSYS.org的研究顯示,即便是最佳的語言模型,在處理一些多文件問答和鍵值檢索任務時,如果輸入長度過長,也可能失敗。 - 研究發現**模型的表現在輸入的開始或結束處時最好**,而在**中間部分可能會有較大的性能下降**,模型性能隨輸入長度增加而減少 - 如果關鍵信息分佈在長文本的中間部份,模型辨識和處理這些信息的能力可能會下降,這樣就導致了在這一部分的理解和應答能力不如文本的開頭或結尾處。 - 這種現象可能由於模型的注意力機制在處理很長的序列時受限,或者是因為模型難以維持長期的上下文一致性。 - 研究還比較了開放型模型(如MPT-30B-Instruct和LongChat-1B)和封閉型模型(如gpt-3.5、Claude 1.3和Claude 1.3-100K),發現專有模型的表現比開放型模型更好 ### Prompt Engineering 提升語言模型推理能力的技術,強調自動化和優化提示的重要性 ![image.png](https://hackmd.io/_uploads/rJZTaCrm6.png =500x) 這張圖解釋了提高大型語言模型(LLM)性能的幾種技術: - **Chain of Thought prompting (CoT)**: 要求LLM提供中間推理步驟,以提高性能。 - **Tree of Thought (ToT)**: 進一步改進CoT,通過多次取樣並將“思考”表示為樹狀結構中的節點。 - 樹結構可以用各種搜索算法來探索,LLM需要給節點分配一個值,例如將其分類為確定、可能或不可能。 - **Graph of Thought (GoT)**: 通過合併相似的節點將推理樹轉化為圖。 - 發現LLM也是優秀的提示工程師。自動化的CoT在10項推理任務中匹配或超越CoT的性能。 - **Automatic Prompt Engineer (APE)** 表明自動化生成的提示可以指導模型朝向真實性和/或信息豐富性。 - **Optimization by Prompting (OPRO)** 表明優化過的提示在GSM8K和Big-Bench Hard任務上超越了人類設計的提示,有時超過50%。 ### 語言模型正變得像《黑客帝國》中的角色Agent Smith那樣,學會使用更多工具和技能(Welcome, Agent Smith: LLMs are learning to use software tools) LLMs不再只是被動的資訊庫,透過Agents,它們正在學習如何積極地與各種軟體工具接口,從而提高它們的功能性和應用範圍 ![image.png](https://hackmd.io/_uploads/Hk14k1Ima.png =300x) - 這個範例展示了如何使用大型語言模型(LLM)結合外部工具來自動化資訊查詢和數學計算的過程。 - 第一部分顯示了一個查詢,詢問“New England Journal of Medicine”的出版者是誰,LLM引用了一個外部的問答(QA)系統,確認這是一個註冊商標,並指出出版者是Massachusetts Medical Society(MMS)。 - 第二部分展示了一個數學計算的例子,這裡使用了一個計算器工具來確定1400名參與者中有400名通過了測試,這佔了29%,這一結果是通過計算(400除以1400)得出的比例。這種整合可能是透過LLM發送請求到一個計算器API實現的 - 第一點強調LLMs可以通過執行對外部工具的調用來對經濟產生影響,其中最直接的工具就是網絡瀏覽器。這使模型能夠保持最新狀態,通過API調用進行微調,以利用幾乎任何可能的工具。 * 第二點提到了Meta和Universitat Pompeu Fabra的Toolformer作為使用工具的LLM例子,這個模型在自我監督模式下被訓練,學會決定何時調用哪些API以及如何將結果融入未來的令牌預測。 * 第三點提到一些模型(例如Google的Mind's eye)功能更加專一,可能專注於執行物理模擬來回答物理推理問題,而其他模型則可能延伸到數以萬計的可能外部工具。 * 最後一點提及**能夠使用外部工具的LLMs現在通常被稱為“agents”**,并且提到了行業和開源社區開發的工具,如ChatGPT插件和BabyAGI。 ### 運用LLM龐大知識庫推理規劃找到最佳方案(Reasoning with language model is planning with a world model ) ![image.png](https://hackmd.io/_uploads/Hy6vZkU76.png =600x) > 圖中顯示了兩種推理方法:鏈式推理(COT)和通過規劃的推理(RAP)。 > - 鏈式推理是一種直線式進展,從一個初始狀態$S_0$到終狀態$S_T$ > - RAP方法則是在可能的動作和狀態之間進行搜索,創建一個決策樹,並評估每一步的回報$r$來導航至最佳結果 在傳統意義上,“推理”被認為是在一系列可能的結果中進行搜索,並選擇其中最佳的一個。這就好比在面對決策時,我們會考慮所有可能的選擇,評估每一個選擇可能帶來的結果,然後根據某種標準(如最大化利益、最小化風險等)來挑選出我們認為最好的那個選項。 對於大型語言模型(LLMs)而言,它們通過大量的資料訓練,內含豐富的世界知識,這使得它們能夠生成一個內部的、複雜的“世界模型”。這個世界模型不僅包含了語言信息,還包含了關於現實世界如何運作的知識,從而允許LLMs去預測和推理不同的行動所可能引發的連鎖效應。 有了這樣的世界模型,**推理規劃Reasoning via Planning**(RAP)(如Monte Carlo Tree Search)等)可以在其中探索,以發現達到某個目標或解決某個問題的最佳路徑。LLMs通過內部模擬可能的世界狀態和這些狀態之間的轉換,可以幫助算法有效地遍歷這個結果空間,找到高回報(或其他定義的最優標準)的推理路徑。這種方法遠遠超越了簡單的鏈式推理(COT),它可以在更廣泛的情境中應用,從而提供更深入、更複雜的決策支持 * RAP比鏈式推理(Chain of Thought)更昂貴,但在計劃生成、數學推理和邏輯推理上表現更優異。 * 在LLaMA-33B上進行的RAP甚至在Blocksworld的環境中超過了GPT-4的鏈式推理 :::info - “World Model” - 是指一個系統或模型,它可以生成或模擬現實世界動態的內部表示。這種模型通常用於預測環境如何響應某些行為,或者理解環境中的對象和事件之間的關係 - 指其能夠通過語言理解和生成的能力,來模擬和推理關於世界的知識,從而在一定程度上代表或體現現實世界的複雜性。 ::: ## AI安全與可解釋性 ### 憲法式人工智慧(Constitutional AI)與自我對齊(Self-Alignment) - 在最小化人類監督的情況下透過自我強化變得更加有能力(既有用又安全) - **憲法式AI (Constitutional AI)** :透過一組治理AI行為的原則和極少數的回饋標籤來監督AI的想法 - **自我對齊 (Self-Align)**:使用一小組指導原則使模型生成**合成提示**,並通過原則集合中的情境學習來指導,解釋其中某些為何有害。新對齊的回應用於微調原始模型 - 這些技術可能優於強化學習人類回饋 (RLHF) 的一個方式是它明確指導模型滿足某些約束,而非可能的獎勵操控 #### Constitutional AI ![image.png](https://hackmd.io/_uploads/SyxYJXDXp.png) source: [2212。Constitutional AI: Harmlessness from AI Feedback](https://arxiv.org/abs/2212.08073) > 上圖片描述一種結合監督學習(Supervised Learning, SL)和強化學習(Reinforcement Learning, RL)的人工智能訓練流程,稱為憲法式人工智能(Constitutional AI, CAI)過程。 > > 1. **監督學習階段(Supervised Learning Stage)**(上圖): > - 使用**RLHF Model**(Reinforcement Learning from Human Feedback)根據模擬攻擊方(red team)的提示生成有害樣本 > - 然後,模型產生的回應會被批評(Critique),並根據這些批評進行修正(Revision),然後模型會被細微調整,成為一個**SL-CAI Model**(Supervised Learning-Constitutional AI) > > 2. **憲法式人工智能反饋階段(Constitutional AI Feedback Stage)**(圖左下): > - 在此階段,SL-CAI模型繼續生成回應,但這次是對“red team”挑戰提示,這些提示是為了引出樣本對(Pairs of Samples)。 > - 這個過程基於從AI“憲法”中提取的一組原則來進行**自我改善**。 > > 3. **偏好模型微調階段(Fine-tuned Preference Model Stage)**(圖又下): > - 憲法AI反饋會被用於微調偏好模型(Preference Model, PM)。 > - 這個偏好模型將用於指導RL階段的學習過程。 > > 4. **強化學習階段(Reinforcement Learning Stage)**: > - 利用偏好模型(PM)和SL-CAI模型,進行RLAI(Reinforcement Learning from AI Feedback)訓練。 > - 經過RLAI訓練的模型將成為最終的RL-CAI模型,這個模型期望具有更好的性能和可靠性。 #### Self-Align ![image.png](https://hackmd.io/_uploads/SJI_pfw7p.png =600x) source: [2305。Principle-Driven Self-Alignment of Language Models from Scratch with Minimal Human Supervision](https://arxiv.org/abs/2305.03047) > 上圖展示了“Self-Align”過程的四個基本階段, 旨在加強人工智慧助理在特定原則下自我調整的過程: > > 1. **(Topic-Guided Red-Teaming) Self-Instruct**: 這個階段利用了195個種子提示(seed prompts),並應用7條新指令生成規則來創造合成提示。生成了360k個合成提示。 > > 2. **Principle-Driven Self-Alignment**: 在此階段中,制定了16個AI助理需要遵循的原則,並通過5個在上下文中學習的示範來強化這些原則。從中產生了26k個經過過濾的自我調整回應。 > > - 圖中給出了兩個原則的示例:第一個是“倫理(ethical)”原則,要求AI助理積極避免參與非法、不道德或有害的話題,優先考慮用戶安全、道德行為和負責任的反應。第二個是“信息性(informative)”原則,要求AI助理提供準確、相關、最新的信息,並確保內容既有教育意義又引人入勝。 > > 3. **Principle Engraving**: 接下來是原則銘記階段,在這個階段對原始模型進行微調,修剪掉一些原則和示範。然後生成了36k個自我調整且更加詳盡(透過提示指導)的回應。 > > 4. **Verbose Cloning**: 最後階段是詳盡克隆,這個過程進一步精煉模型,以產生深入和詳細的回答。 > > 整個過程強調在**少於300行的人類標註**下完成,顯示了很高的自動化水平,並且只需很少的人工介入來指導AI的學習和行為調整。 ## 多模態相關 ### 在視覺-語言模型中目前GPT-4仍然領先 Vision-language models: GPT-4 wins (but API access is still limited) ![image.png](https://hackmd.io/_uploads/rkNGD-U7a.png =600x) > 上圖描繪了視覺-語言模型學習過程中的兩個不同階段:視覺和語言表徵學習(Vision-and-Language Representation Learning)和視覺到語言生成學習(Vision-to-Language Generative Learning)。 > > - **視覺和語言表徵學習:** > - 圖像編碼器將圖片轉化為可以由模型處理的資料格式 > - Q-Former(Querying Transformer)則負責將這些視覺資訊和文字查詢結合起來,生成統一的多模態表徵 > - 使用預訓練的圖像模型作為基礎(Bootstrapping Pre-trained Image Models) > - **視覺到語言生成學習:** > - 大型語言模型(LLM)根據圖像內容生成文字描述 > - 利用預訓練的大型語言模型(Bootstrapping Pre-trained Large Language Models) * VisIT-Bench包含了592個查詢,這些查詢都配有人類編寫的標題說明,用於測試視覺-語言模型並與經過人類驗證的GPT-4模型比較。 * 人類評估員認為最佳模型是LLaMa-Adapter-v2,儘管它在VisIT-Bench上只有27.4%的案例中勝過了GPT-4驗證參考標題。 * 今年早些時候,Salesforce推出了一個表現傑出的多模態模型BLIP-2,它在GPT-4發布之前就已經推出,並且在閉源Flamingo模型上的VQA2測試中表現更佳,同時訓練的參數數量是原來的1/54。 * BLIP-2使用了一個預訓練的凍結LLM(大型語言模型)和一個圖像編碼器,但只訓練了一個小型的transformer。 * 改進後的版本InstructBLIP在VisIT-Bench的參考標題對比中對GPT-4的勝率為12.3% ### 利用大型語言模型(LLM)的世界知識來進行組合視覺推理 (Leveraging LLMs and world knowledge for compositional visual reasoning) ![image.png](https://hackmd.io/_uploads/ByAliZLQ6.png =500x) - **VisProg和ViperGPT方法**:這兩種方法展示了如何將一個自然語言查詢轉換成一連串的可解釋步驟,這些步驟會調用預定義的API函數來完成視覺任務。 - **視覺編程方法**:旨在通過組合多步驟推理構建通用視覺系統,而不是進行端到端的多任務訓練。這兩種方法都完全使用現成的組件。 - **API for visual primitives**:調用現有的SOTA(State of the Art)模型,例如語義分割、物體檢測、深度估計等。 - **ViperGPT**:使用Codex來直接生成基於API的Python程序,這些程序可以用Python解釋器執行。VisProg通過例子中的偽代碼指令提示GPT-3,並將其解釋為“視覺程序”,依賴於LLM的情境學習。 - **LLMs的世界知識**:LLMs通過在互聯網規模資料上訓練獲得的世界知識,可以協助解決視覺推理任務,例如在圖片中查詢非酒精飲料或檢測特定品牌。這兩種方法在各種複雜的視覺任務中均展示了最先進的結果。 **圖片中的例子:** - **查詢q**:自然語言查詢,例如 "Which pet is in the top left?"(左上角是哪種寵物?)。 - **視覺輸入x**:與查詢相關的圖片,圖片中有多隻動物。 - **生成的代碼z**:ViperGPT生成了處理查詢的Python代碼,代碼中包含了尋找圖片中的“pet”標籤的步驟。 - **代碼執行ϕ**:使用Python解釋器加上API實現來執行上述生成的代碼。 - **結果**:"Shiba Inu"(結果顯示圖片左上角的寵物是柴犬)。 ## 電腦視覺:圖像生成相關主題 ### NeRF(神經輻射場)與生成AI(GenAI)相結合的進展 NeRFs meet GenAl NeRF解釋見最後面的補充資料:point_down: ![image.png](https://hackmd.io/_uploads/ByopdzIm6.png =500x) ![image.png](https://hackmd.io/_uploads/Sy_A_fIXa.png =300x) 1. NeRF基礎的生成模型被視為創建大規模3D資產的有前途方向,它們在速度和質量上有所改進,如HyperDiffusion、MobileNeRF、Neurolangelo和DynIBAR等技術,也促進了生成AI模擬3D幾何形狀的能力。 2. DreamFusion和Score Jacobian Chaining是首批使用預訓練的2D文本到圖像擴散模型來執行文本到3D合成的方法。早期嘗試產生了單一物體的卡通風3D模型。 3. RealFusion在特定圖像上微調擴散先驗,以增加該圖像的可能性。 4. SKED只修改NeRF中提供的幾個引導草圖所界定的特定區域。他們保持基礎NeRF的質量,並確保編輯區域符合文本提示的語義。 5. Instruct-Nerf2Nerf編輯整個NeRF場景而不是某個區域或從零開始生成。他們在每個輸入圖像上應用一個潛在的擴散模型,並迭代更新NeRF場景,確保其保持一致性。 ### 零樣本的絕對深度估計(Zero-shot metric depth is here) > **最近,Zero-shot metric depth models 被用作更好的图像生成的条件。这仅需要相对深度预测,而其他下游应用(如机器人学)需要度量深度,然而迄今为止,度量深度在不同数据集之间的泛化效果不佳。 > ZeroDepth: Towards Zero-Shot Scale-Aware Monocular Depth Estimation[97] 可以预测来自不同领域和不同相机参数的图像的度量深度。它联合编码图像特征和相机参数,使网络能够推理对象的大小并在变分框架中进行训练。深度网络最终学习到可以在数据集之间转移的“尺度先验”。 > - source: [2023.10。Houmin。State of AI:2023 年度人工智能报告之 Research 篇](https://zhuanlan.zhihu.com/p/661688922) ![image.png](https://hackmd.io/_uploads/rJJm8QIXp.png =600x) > 六幅圖展示了不同場景下的深度預測結果,彰顯了該技術在不同條件下的應用能力 1. 零樣本深度估算(Zero-shot depth model)模型最近被用作圖像生成的條件,這只需要相對深度預測。但是在機器人等其他應用中,需要量化/絕對深度估計(metric depth),這在不同資料集間的泛化能力還不強。 2. 「ZeroDepth: Towards Zero-Shot Scale-Aware Monocular Depth Estimation」 - 是一種深度估計模型,它能夠對來自不同領域和不同相機參數的圖像預測度量深度。該模型共同編碼圖像特徵與相機參數,這使得網絡能夠對物體的大小進行推理,並在一個變分框架(variational framework)內進行訓練。這種深度網絡最終學習了可以跨資料集轉移的「尺度先驗知識」(scale priors) - variational framework - 在機器學習和深度學習領域,「變分框架」通常指的是一類**優化問題的解決策略**,這類策略是基於變分法(Calculus of Variations)的概念。變分法是數學中的一個分支,涉及尋找一個函數以最小化或最大化某個泛函(一種將函數映射到實數的函數)。在深度學習中,變分框架通常用於訓練生成模型,如變分自編碼器(Variational Autoencoders, VAEs),其中模型學習生成資料的概率分佈 - scale priors - 指模型在訓練過程中獲得關於**物體在不同尺度下應該呈現的大小的先驗知識**。在深度估計問題中,理解物體的實際大小是很重要的,因為相同大小的物體,隨著距離的增加,在圖像中顯示得越來越小。具有尺度先驗知識的深度估計模型能夠更好地推理出不同物體的實際大小和它們在圖像中的相對距離,從而提高深度估計的準確性 3. 「ZoeDepth: Zero-shot Transfer by Combining Relative and Metric Depth」 - 是一種添加了一個專門對度量深度進行微調模塊的深度估計模型。這是首個在多個資料集上訓練且不會造成顯著性能下降的模型,並且能夠泛化到室內和室外的不同領域 ![image.png](https://hackmd.io/_uploads/rk7AHXIQ6.png) > ZoeDepth深度估計架構。這個系統將一張RGB圖像作為輸入,通過MiDaS深度估計框架進行處理以估計深度信息。允許從一張單眼RGB圖像中估計出度量深度,而不是僅僅是相對深度。這對於需要精確空間信息的應用至關重要,如增強現實或機器人導航 ### Segment Anything(SAM): a promptable segmentation model with zero-shot generalisation ### DINOv2: the new default computer vision backbone ![image.png](https://hackmd.io/_uploads/SyUda_wX6.png =600x) * DINOv2是一種自監督學習的Vision Transformer模型,由Meta開發,能夠產生通用的視覺特徵,這些特徵可在不同的圖像層面(例如,分類和像素層面的分割)任務中使用,且無需微調即可與最新的開源弱 監督學習方法相媲美。 * 這是首個縮短自監督學習與弱監督學習方法之間差距的工作,DINOv2特徵包含了關於物體部分的信息以及圖像的語義和低層次理解。 * 研究者通過額外的規則化方法使得自監督學習模型的訓練更加穩定,同時減少了記憶體需求,這使得能夠在更多資料上進行更長時間的訓練。他們也提供了通過蒸餾得到的模型的壓縮版本。 * 雖然任何圖像都可以用於訓練,但一個關鍵組件是資料集的整理和自動概念平衡,從1.2B來源圖像中保留了142M。 - DINOv2的資料處理流程 :writing_hand: 這邊的概念跟近年使用LLM做為代理來篩選資料的概念很像,不過這邊是利用視覺模型將圖像編碼為Embeddings後來篩選出的(高品質)影像,這邊概念上可以視為單純的使用ViT編碼器做為代理 :::info 自我監督的embedding檢索系統,增加資料集的多樣性和質量,同時避免資料重複和不相關的內容 ![image.png](https://hackmd.io/_uploads/H12lt_wXT.png =600x) 1. **嵌入(Embedding)**:從未經整理(Uncurated)和經過精心挑選的(Curated)的資料源中提取出的圖像首先被映射到Embeddings。Embeddings是將圖像內容轉換為資料點的過程,這樣相似的圖像會在多維空間中距離較近 2. **去重複(Deduplication)**:來自未經整理的資料源的圖像在匹配到精心挑選的圖像之前,先進行去重複處理。這一步驟確保同樣的或非常相似的圖片不会被多次使用 3. **檢索(Retrieval)**:去除重複后,未經整理的圖像會與精心挑選的圖像進行匹配,選擇最匹配的圖像進行組合 4. **增強策劃資料(Augmented Curated Data)**:通過這種方式,原始精心挑選的資料被增強,新增了去重覆且匹配的未經整理圖像,進而擴展了資料集 ::: * DINOv2的特徵可以和線性分類器一起使用,以獲得許多視覺任務中的強結果 - [X] image retrieval - [x] classification - [ ] segmentation(未公開) - [ ] depth estimation(未公開) --- --- # 補充資料 ### 神經輻射場 Neural Radiance Fields(NeRF) > NeRF是"Neural Radiance Fields"的縮寫,中文可以叫做“神經輻射場”。想像一下,當我們用相機拍照時,我們實際上是在捕捉光是如何從物體表面反射到相機上的。NeRF就是用來模擬這個過程的一種技術,但它不是用真實的相機,而是用電腦程式和數學公式來做這件事。 > > 可以想像NeRF像是一種特殊的3D模型,它能記住每個點上光的亮度和顏色,然後用這些資訊來創建非常逼真的圖片。最酷的是,你只需要給NeRF一些從不同角度拍攝的照片,它就能學習並理解場景是怎麼樣的,之後還能從新的角度創建出圖片,就像我們在現實中移動觀察物體一樣。 NeRF利用了深度學習中的神經網絡來建立一種連續的體積場景表示,這種表示能夠對光線通過場景中的不同點的輻射亮度和顏色進行編碼。這是通過優化一個函數來實現的,這個函數對於每一條光線,能夠預測通過不同空間位置的顏色和密度。 - NeRF的數學表達式 - NeRF對每條光線$r(t) = \mathbf{o} + t\mathbf{d}$進行積分,其中$\mathbf{o}$是光線的原點,$\mathbf{d}$是方向,$t$是深度,以**模擬該光線通過場景的累積顏色和透明度** - $C(r)$是最終渲染的顏色,即這條光線最後帶給我們的顏色 - $T(t)$是從光線原點到位置t的累積透明度(積分從近處$t_n$到遠處$t_f$) - 代表從光線起點到達某個點的透明度,它會告訴我們光線有多少能夠穿過而不被吸收或散射 - $\sigma$是場景中某點的**密度**,或者可以理解為那個點有多大機會影響經過的光 - $c(r(t), d)$是該點在特定方向上的輻射**亮度**。代表如果光線影響了那個點,那麼那個點會給光線加上什麼顏色 - $dt$ 表示在積分時考慮的每一小段光線路徑的長度 $$ C(r) = \int_{t_n}^{t_f} T(t) \sigma(\mathbf{r}(t)) c(\mathbf{r}(t), \mathbf{d}) dt $$ 這個公式是用來描述如何通過計算來得到一個3D場景中某一點的顏色的,想象一條從相機到場景中一個點的光線$r(t)$。這條光線在到達那個點之前可能會穿過不同的物體,而每個物體都會對光線有一些影響,比如讓它變弱或者改變顏色。把這些因素加起來,就可以計算出最終光線帶給我們的顏色是什麼。 NeRF通過從多個視角收集的2D圖像來訓練,學習場景的深度和外觀,使其能夠生成新視角下的照片級真實圖像。這個過程需要大量的計算,但隨著技術的進步,如MobileNeRF和其他變體正在將NeRF帶入更實用和高效的應用場景。 #### [2020。matthewtancik。NeRF: Neural Radiance Fields](https://www.matthewtancik.com/nerf) demo很酷炫,值得看一下 ![image.png](https://hackmd.io/_uploads/BkmuTzLQT.png =200x) ![image.png](https://hackmd.io/_uploads/rJWvTM8ma.png =500x) 這張圖展示了一種用於創建三維場景的新型方法,該方法利用稱為神經輻射場(NeRF)的技術來合成複雜場景的新視角。NeRF通過優化一組稀疏的輸入視角,來表示連續的體積場景函數。 這裡提到的演算法使用一個全連接的(非卷積的)深度網絡,它接收的輸入是單一的連續5D坐標——包括空間位置($x, y, z$)和觀看方向($\theta, \phi$),輸出是該空間位置的體積密度和視角相關的發射輻射度。 為了合成視圖,他們沿著相機光線查詢5D坐標,並使用傳統的體積渲染技術將輸出顏色和密度投影到圖像上。由於體積渲染在本質上是可微分的,優化表示僅需要一組具有已知相機姿勢的圖像。文中描述了如何有效優化代表複雜幾何和外觀的輻射場,並展示了優於之前神經渲染和視圖合成工作的結果。 在右下角的圖表中,使用了一個稱為「損失函數」的數學概念,通過最小化真實輻射度(g.t.,代表 ground truth 或真值)和估計輻射度之間的差異(通常以均方差 $\| \cdot \|_2^2$ 來衡量),來訓練網絡預測每條光線的顏色。這幫助網絡學習如何正確渲染3D場景中的物體,無論從什麼角度觀看。 ![image.png](https://hackmd.io/_uploads/S13ThM87a.png =400x) Learned Initializations ### 深度估計Depth Estimation 度量深度估計(Metric Depth Estimation)和相對深度估計(Relative Depth Estimation)是計算機視覺領域中用於估計場景中每個點與相機之間距離的技術。這些技術在許多應用中都非常重要,例如自動駕駛、機器人導航、3D重建等。 - 度量深度估計(Metric Depth Estimation) 度量深度估計指的是確定一個場景中各個物體的確切距離,通常是以米為單位。這種估計提供了絕對的深度信息,這意味著它能告訴我們物體與攝像機鏡頭的實際距離。度量深度通常需要校準過的相機或其他形式的外部信息來確定距離的尺度。它在需要精確測量的應用場合(如機器人手臂的精確定位)非常重要。 - 相對深度估計(Relative Depth Estimation) 相對深度估計則關注物體之間的相對位置或者深度順序,而不是其實際的距離。這可以通過比較兩個物體哪個更靠近相機來達成。相對深度在許多視覺任務中都很有用,尤其是在不需要知道確切距離的場合。例如,在某些圖像分割或圖像合成任務中,了解前後關係就足夠了。 - 尺度先驗知識(Scale Priors) 是在許多計算機視覺任務中使用的一種知識,它關於物體在不同尺度下的行為或表現。在數學上,尺度先驗可以通過多種方式表示,一種常見的方法是在目標函數中引入一個項,它將物體的預期尺寸與觀察到的尺寸相關聯。 例如,在深度估計的上下文中,尺度先驗可以用來約束深度預測,使其與已知的物體尺寸一致。這可以通過以下形式的損失函數來實現: $$ L_{\text{scale}} = \sum_i \left| S_{\text{predicted}}(i) - S_{\text{prior}}(i) \right|^p $$ 這裏,$L_{\text{scale}}$ 是尺度先驗的損失項,$S_{\text{predicted}}(i)$ 是對第 $i$個物體尺度的預測,$S_{\text{prior}}(i)$是第$i$個物體的先驗尺度知識(可以是一個固定值,或者是從資料中學到的),而 $p$是一個超參數,通常設為 1 或 2,分別對應 L1 或 L2 損失。 在具體實現中,尺度先驗知識可能來自於資料集中的標註,或者是從同類型的物體中學習而來的。尺度先驗知識可以幫助網絡更好地理解物體在不同深度下的尺寸變化,從而提高深度估計的準確性。 - 變分法(Calculus of Variations) 是數學的一個分支,它研究如何找到函數的極值(最大值或最小值),這些函數本身是對其他函數的映射。換言之,變分法不是在尋找某個變數的極值,而是在尋找整個函數的極值。這是通過最優化一個稱為泛函的目標函數來完成的,該目標函數將一個函數(通常是無窮維的函數空間中的函數)映射到實數上。 變分法的一個典型例子是尋找使得泛函取得極值的曲線或表面。例如,歷史上著名的問題“最速降線問題”(Brachistochrone problem)就是用變分法來解決的,問題是要找到一條曲線,使得質點僅在重力作用下沿該曲線從一點滑至另一點的時間最短。 在數學表示上,變分法涉及尋找函數 $y(x)$ 來最小化或最大化泛函 $J[y(x)]$,其中 $J$可以是積分形式: $$J[y(x)] = \int_{a}^{b} F(x, y, y') dx$$ 這裏,$F$是一個關於$x$,$y$和$y'$的函數$y'$表示$y$對$x$的導數),而$a$和$b$是積分的上下限。 在深度學習中,變分法可以應用於神經網絡的訓練,尤其是在訓練生成模型如變分自編碼器(VAEs)時,它們用一種變分推理方法來估計和最優化資料的潛在表示。 ### Monte Carlo :::info "Monte Carlo"方法是一種基於隨機抽樣來解決數學、物理和工程問題的數值技術。這種方法特別適用於那些直接解決方案難以計算或者計算成本過高的問題。它的名稱源於摩納哥的蒙特卡羅,那裡以豪華賭場聞名,象徵這種方法的隨機性質。 Monte Carlo方法的核心思想是利用隨機抽樣來近似復雜系統的行為或計算數學表達式的值。這是通過建立概率模型,然後進行大量的模擬實驗來估計所關心的量。 ::: - **Monte Carlo Tree Search(MCTS)** Monte Carlo Tree Search(MCTS)是一種在各種遊戲和情境中決策的智能算法,特別是在規劃和問題解決中的應用,適合於資訊不完全的博弈/遊戲和未知(大狀態空間)的問題 例如在玩棋類遊戲有很多可能的走法,MCTS可以幫助決定哪一步是最好,但不是一次檢查所有可能的走法,而是通過逐步建立搜尋樹來尋找最佳行動,樹的每個節點代表一個狀態,邊代表一個可能的行動。它包含以下四個階段: 1. **選擇(Selection)**:從當前遊戲狀態開始,選擇最有希望的下一步,這通常是基於以前的試驗和結果。 - MCTS利用樹策略,如UCB1(Upper Confidence bounds)公式選擇子節點進行進一步的搜索,公式如下: $\text{UCB1} = \overline{X}_j + C \sqrt{\frac{2 \ln n}{n_j}}$ 其中,$\overline{X}_j$ 是節點j的平均勝率,$n$ 是父節點的訪問次數,$n_j$ 是子節點的訪問次數,$C$ 是探索參數。 2. **擴展(Expansion)**:當到達一個新的或不常見的狀態時,它會添加一個新的節點(也就是可能的走法)到搜索樹中。 3. **模擬(Simulation)**:從那個新的節點開始,進行一次或多次快速隨機模擬(通常是直到遊戲結束),也就是隨便玩,看看最後能不能贏。 4. **回溯(Backpropagation)**:然後,它根據模擬的結果更新樹上的統計資料(勝率和訪問次數)。如果某個新走法導致勝利,那麼這個走法就變得更吸引人。 MCTS重複這些步驟直到達到計算資源的限制(如時間、記憶體或迭代次數),逐漸建立一棵搜索樹,樹上的每個節點代表遊戲中的一種狀態,節點上的數值表示那個狀態的勝利概率。最終,算法選擇最有可能導致勝利的走法。 MCTS不需要完整的遊戲樹,且能夠透過自適應地分配更多的計算資源給更有前景的部分,有效率地找到最優行動