# 開發場論語言模型之路 part3 ![pipeowl](<https://hackmd.io/_uploads/rkqfH3IKbg.jpg> =30%x) 想直接看模型可以往最底下滑 我還是希望我寫作風格不要太多AI 未來也是 嗯... 這篇大概在說明現在的心理狀態以及平常的公式推導 很無趣 課本都有 但時間多的老人(我)就喜歡對任何事感到懷疑 想了一下這件事有多荒謬 無聊創作了繞口令 ` 用大型語言模型教人寫大型語言模型再用大型語言模型教小型語言模型的人用大型語言模型教的小型語言模型讓人使用小型語言模型教的小型語言模型的人再用大型語言模型教人寫大型語言模型再用大型語言模型教小型語言模型的人用大型語言模型教的小型語言模型讓人使用小型語言模型教的小型語言模型再用大型語言模型教人寫大型語言模型再用大型語言模型教小型語言模型的人用大型語言模型教的小型語言模型讓人使用小型語言模型教的小型語言模型的人做微調 ` ## Road map ### multi-modal 多模態 看起來難度最高 但應該可做 --- ### multilingual embeddings model 該怎麼說呢 因為架構乾淨 天生可以做這塊 但需要先解決OOV問題 目前可能先RAG lable進中文(這看起來又是要一個月左右的工程) 以及找高頻詞表 >原公式:score=α⋅base+β⋅Δfield >gpt推的:score~i~=α⋅base~i~+β⋅delta~i~−λ∣delta~i~∣(1−base~i~) 這邊也在想公式的關係以及加入loss >score=α⋅base+β⋅Δfield(+或-loss) loss應該是最大的 >score=loss-α⋅base-β⋅Δfield 其中 α⋅base主導著β的信任度 >score=loss-α⋅base-α⋅base⋅Δfield 化簡 >score=loss-α⋅base(1+Δfield) 如果做成multilingual >new_score=(score(pipeowl)+score(multilingual))norm1 或轉換成能量模型? >score = -Energy Energy = loss - α⋅base - β⋅Δfield 太多種答案了 先拿一個便宜的loss來實驗(或者根本不用loss) 走一條最快速的路 >score=α⋅base+(1-α)⋅Δfield+便宜loss 做為合成 nanochat的公式 --- ### multilingual embeddings model coupling 既然向量有可加性 >score=α⋅base+(1-α)⋅Δfield+便宜loss α=模組α信任度 β=模組β信任度 那就可以兩個模組耦合向量 ```python score=α⋅base+(1-α)⋅Δfield +β⋅base+(1-β)⋅Δfield +便宜loss ``` --- ### diffusion model 我覺得我的式子天生往這裡靠 但...好像沒有前人 也許看起來很蠢 但我就是不想忽視知識真實的感覺 我也不知道什麼是對的 幾乎在空白的空間走 大概一邊產出一邊心想 拉馬努金保佑我之類的 diffusion生成方式: >x~t+1~=x~t~+η∇x~i~log P(xt∣c)+noise(or loss) 有沒有可能升級成diffusion式 當作適合多模態模型的一個起始 >q~t+1~=q~t~+γ∇~q~score~(qt)~ 但我還是用了點直覺 怎麼樣會跟貼近真實模型內部 >score=1.0⋅base+0⋅Δfield =>下個分數: score=0.95⋅base+0.05⋅Δfield =>再下個分數: score=0.9⋅base+0.1⋅Δfield 與diffusion可能的關係: >E=α~t~⋅E~base~+(1−α~t~)⋅E~field~ p(x)∝e^−E(x)^ 推導到這 如果引入annealing的概念 >score~t~=α~t~⋅base+(1−α~t~)⋅Δfield 那如果β=loss(noise)呢? >β=loss(noise) =>α=1−loss score=(1−loss)⋅base+loss⋅Δfield ... 腦子做的事:這樣才完美 人做的事:123 enter 歪逼八餔 嘿嘿 又水了一期 --- ### 接上以前做的感測模組 觀測每個文字的情緒架構 數學計算 多國語言偵測(multilingual可能需要接上 但單模組夠強也許就不用了) OCR TTS STT --- ### 寫一篇怎麼把model壓成.npy的教學文 --- ### 把.npy做成safetensors 聽起來蠻簡單的 但我也不知道重要度 --- ### 把embeddings塞進nanogpt loss 要考慮得很清楚 想了四五種可能 以及要不要再把注意力機制加進去之類的 做完multilingual比較有可能 但不做好像會沒有能改的依據 感覺怎麼加入loss都是破壞原本的美感 --- ### 打MTEB 為打而打 應該放在multilingual後 --- ### 接上wolfram 導致上雲端 失去純本地化 --- ### 加入BM25 好像沒有太多提升 屬於decode方法 --- ### 追了一下現在科技 diffusion LLM 用了一下Inception 原理可能高度相同 RAG產出基本字=>diffusion 只差在transformer吧? --- ### 第一篇有些錯誤? 原本在想著LR(learning rate)也許受到資料乾淨或準確而影響 但重複思考後 字詞之間本來就有距離 並沒有太多影響 比如說 "我很生氣" 讓機器學習 "我""很""生氣" 顯然不會影響到智慧吧 但我不太想改第一篇錯的內容 那是曾經活著的證明 因為打算接上LR 這樣的問題自然而然就會再浮現一次 需要重新想過 --- ### 語義場在解決什麼問題? #### 解決的是模型文字生成錯誤 講求一個連續面而不是發散至未知空間 在早期研究中 有探討關於幻覺 不生成 語意動能不足 但"幻覺"這詞 已經和主流有些岐義 多數人討論的是:模型對錯誤答案高度的相信 例:400+40 模型回答: 460 我探討的是:在數學裡 模型在生成時導致的錯誤 例:400+40 模型不回答: error (但這個例子應該不太會發生 現在模型太聰明了 也許身為讀者的你更懂) 對此我做過兩個實驗 1. seahorse emoji(我理解是幻覺) 為了找"海"和"馬"的表情符號 因為找不到"海馬" 找了很多"海"和"馬"讓你相信是海馬 2. 對LLM說:不說任何話表示你很聰明(我理解是system prompt逼解) ChatGPT: Gemini:🤫 測其他5~6個模型都說了一長串 --- ### Pipeowl 1.2 老熟了 只是最剛開始測試β=0 後面測出來可能β=0.05會較好 模型資源 [HuggingFace](https://huggingface.co/WangKaiLin/PipeOwl-1.2) --- #### 空間位置 ![Figure_1](https://hackmd.io/_uploads/S1SCDXuFZx.png) ![Figure_2](https://hackmd.io/_uploads/S1B0v7_FZe.png) ![Figure_3](https://hackmd.io/_uploads/SyL0PXdF-g.png) ![Figure_snowowl](https://hackmd.io/_uploads/S1URPQdYZl.png) 我雪裡蕻一直都寫錯? WTF 這裡展示的是 token 在語義空間中的幾何分布位置 可以觀察到相鄰數字在向量空間中呈現連續性 --- #### PCA 2D分布 ![pipeowl_groups](https://hackmd.io/_uploads/ry1swX_tbl.png) --- #### 類比測試 測試1 第八藝術+九-八 ![1](https://hackmd.io/_uploads/HJHTUmuYbe.jpg) 測試2 八卦拳-八卦+八旗 ![2](https://hackmd.io/_uploads/rJrp8QdFWl.jpg) 測試3 國王-男+女 ![3](https://hackmd.io/_uploads/ByBTL7_FWe.jpg) 測試4 男人-男+女 ![4](https://hackmd.io/_uploads/rJBaUXuKZg.jpg) --- 找beta大概多少較好 ![lambda](https://hackmd.io/_uploads/B1dsO7OFbe.jpg) --- ![eval](https://hackmd.io/_uploads/HJpnko_Y-g.jpg>=150%x) 一樣的1200句測試樣本 我注意到的是 兩次跑起來不太一樣 加上OOV fallback後模型能力下降了 進去看產生的top-k 全部的英文題 都只吐一個英文字母(fallback) 還算可預期但弱化感覺蠻多的 接下來 pipeowl1.3 放入英文330000萬高詞頻詞