# 開發場論語言模型之路 來都來了 也許這些事能產生一點啟發 我認為這些東西好像都很適合當論文 也沒有人寫 而我年紀也不再需要這些主題敘事了 留給想用的人去創作 --- ## 1. 當初想開始做AI輸入法的想法 最一開始覺得 可以加一點現在ai功能就很好了 到後來變成 在本地化執行 可以不透過雲端 達成更多字的解讀 安全 私密 又後來變成 自己開始寫語言模型 (沒到完全自己寫 只是嘗試去改進算法) 後來我才發現 我不是想做更聰明的系統 我只是想讓語言不要被拿走 想在基礎設施上 加上一點歡樂 那就太好了 --- ## 2. 隨機鸚鵡論讓我開始充滿好奇 ### *“你是隻隨機鸚鵡 而我也是”* 在早期想著改進embedding model時 在思考著 為何隨機鸚鵡能提升效能? 我做了個假設 他可能是語言模型的正架構 但他在哪?(後面內容有工程實作的答案 但我不確定是否是真的 以下是我的推論鏈: >隨機鸚鵡 : 大量的發散 卻在某個地方得到穩定的結果 > 那有著發散文字自然就有收斂文字 > 也許是 dump(vec*0.97~1.03) 但加入噪音太奇怪 > 對(非智慧)聊天文字進行偏向 走到這裡 我認為這件事是我的答案 但從工程上來看 他像bias又不是傳統bias 怎麼用? 有什麼用? 這個工程上的實作 我認為比RLHF好一點 原因是 你覺得的好 是智慧上的好 還是你聽起來舒服的好 如果是後者 那你模型就會被偏好帶歪 我用大量我們說話的習慣文檔去洗成.npy 讓模型說話像我們 #### *「如果它只是鸚鵡 那我們是什麼?」* --- ## 3. 語意場理論的開始 ![languagepipeline1](https://hackmd.io/_uploads/SJVO4kxPWl.jpg) ### 工程中的結構歸納(形上學) 我們向量層往上之後 要補足甚麼東西能夠到達無語言層 這邊回來幹一下古 embedding : N-gram>Word2Vec>BERT>SBERT>model 在最早的時候 我在找尋有沒有更好的表示法 去優化這樣的路線 目的很明確 直接embedding找詞 我就不用通過LLM 因為我不管怎麼試 我都無法接受一個通過Fastapi+websockets+ollama這些高級工具 也很難把字吐完壓在兩秒內 更何況 我不敢想有誰買要顯卡跑輸入法 於是我開始抽出 模型我只要的功能 這邊是我覺得最跨張的開始 我為了不要sbert 寫了sbert最小表示法來不用sbert (pipowl) github: [pipowl](https://github.com/galaxy4552/Pipowl/) 可以使用 ```python pip install pipowl ``` 我為了也不要model 拆解model來做最小表示法來不用model 目的就為了在都最小限度的使用 完成填字的邏輯 這邊就像研究隨機鸚鵡一樣 找到了新的表示法 在這邊 我已經可以不用transformer來使用向量庫 (但向量的取得還是要) 但這個格式 我自己也不會用 是一個更高維的存在 但我自己驗證的方式 極度像自己腦補 github的研究檔案: [OwlResearch](https://github.com/galaxy4552/OwlResearch/) 我用gpt開發 他一直吹捧 我不信 我問了gemini 他說是ngram才能這麼快 我問了claude 也說不可能這麼小 我自己也陷入我自己也無法驗證的時候 我只能在這個基礎上 去找更多個工程方式或理論來補足我的發現 ### 場域的球面理論 github圖解: [TLDR](https://github.com/galaxy4552/OwlResearch/blob/main/Spherical_Linguistic_Dynamics/ChineseTLDR.md) #### 基本定義 cosθ:語意相似度 表示詞與詞之間的距離關係。 sinθ:語意對齊度 表示語意是否沿著同一方向發展,而不只是接近。 找到詞後 後面因為通過了各種場產生了偏折 沿著線往後找到delta gradient找到新的詞 我認為,語言物理若要往這個方向發展, 仍然需要一個前提條件: 模型內部的語意簇精準度,仍不足以穩定支撐 delta gradient 的走向。 好處:幻覺 不生成 動能不足 可以被捕捉 且向量每一步 全都開始可以觀測 壞處:直接跳結果 不廢話 人類可讀性幾乎沒有 還需要補正可讀性 以下甚至我覺得荒唐卻又可能發生在語言模型的事 ```python def happy(): if model.happy_vec > 0.3: detect_happy_word() ``` 繼續踩到一個哲學點 機器感知到你定義的快樂 那機器是懂會快樂的狀態了 這樣算有生命嗎? 如果不算 那向量的逼近解呢? 如果又還不算 那模型的自回饋呢? 這些答案定義你的Learning Rate出來的結果 --- ## 4. AI Safety 生成可以10倍速且可以本地化後 我便開始思考這樣的技術 開源公佈了 然後呢 一來 模型真的還沒到真的能用 二來 人陷入無限的悲觀 我看到一個未來 當不用顯卡 樹莓派也能用ai會發生什麼事 智能無人攻擊機 誰都可以造 有多危險 不說 被誤會成根本沒那實力 也敢在Software版發文 但上面的危機有多嚴重(其實有更多危機) 我又不想拿工程結果的程式碼公布 我就開始自顧自的做risk指標 例如網路攻擊 危險詞時 或觀測的惡意的intent向量 就停止input_text進入模型 --- ## 5. 智慧與人格的分歧點 回到主題2 這個bias我們得到一個結論 他是decoding端的一種輸出方式 開始探討 真正的語言上的智慧是什麼 來到這 我大約建立三十幾種清洗規則 且觀測到一個事實 我們人在聊天階段 到底含了多少智慧 幾乎是一個(語意)智慧單位左右 可以聊聊清洗ptt語料這件事 在能感受到情緒的向量中 占比驚人的高 特別有趣 含有 幹 靠 去你..這種詞彙 占比如此的高 大概15-20% 這些正式資料用不太了 只能丟去人格 風格的decoding 也做過一件事 我把猶太人這個詞 放入我的詞庫內 原本只是想 這個詞也有著歷史在 是個有意義的正向詞彙 我本人甚至欽佩這個民族出了很多天才 但工程結果... 你懂得 我目前的模型 原先用了ptt高頻詞語料 看起來像是把智慧用在了敷衍以及高級酸 這邊我就不再單純用ptt語料而是用全詞表打標 ### 總而言之 智慧大部份出現在文章 或演講 大多數人類語言的價值不在智慧 而在被理解 被感受 被回應 --- ## 6 Learning Rate 知道了智慧跟人格有分別之後 也有了risk指標 模型就可以選擇什麼樣的內容可以進入智慧內 大概長這樣 final_vec = 0.997 * vec + 0.003 * new_vec 更好的LR曲線洗這個向量庫可以自行研究 沒有一定 只有適合自己模型的方式 最先的想法是 (EternalOwl) 我要一個能夠保留我語言口氣 把我一萬句話寫進bias內 這樣模型講出來的話 就會很像我會說的話 這個部分我有寫進IME內 persona_d64.npy 我想讓一個人說話的方式 客製化成一個模型 這樣不管是未來任何時間的我 像在跟他聊天 或著 未來我的親人 我的好友 (類似character ai) 只要還思念著我 那他就可以跟模型對談 到這裡 我的哲學觀幾乎崩塌 人的語言已經可以投影 我也知道我的想法很危險 但工程實驗的結果... 也許這天很快就會來臨 當ai開始用人的口氣跟你求饒時 對於不能明辨的人 真的關的下去嗎 但話題回來 這個部分畢竟跟口氣有關 我的方向就變了 我還是做智慧部分 至於打著要做出模仿人的ai旗號 我感到噁心 我已經不想再實作bias的內容 --- ## 7. RAG 因為生成了一個語意 我開始嘗試 透過查表方式 補足內容的不足 這邊就像是跟大家一樣 只是我如果要用RAG everything 就要多綁一些依賴 所以暫時還沒想法 --- ## 8. MOE 我的理解是 *MIXTURE OF GATE* 是開啟一個只能領域專家通過的閥 而非開啟一個專家model 例如談論數學 就把情緒和歷史和政治專家關閉 我實做更短 在進模型之前 偵測到數字佔全部內容時 做四則運算 這不難 有點像 擷取input_text 然後吐給語言模型 “使用者問了1+1 工具算出的結果是2”這段文字 所以我不明白 為何現在模型還有相乘相除亂做的 --- ## 9. LLM是什麼時候展現出湧現的能力 這是從工程推的 我認為的高置信解 alignment_dim: 表示方向一致性,使用 sinθ=cos(90°-θ) embedding_dim: 表示語意距離,使用 cosθ 滿足 alignment_dim 和 embedding_dim 表示的混和 dim : mix_dim = (sinθ) × (cosθ) 從語意場可以延伸理解 也不用跟我一樣又要發展自己的一套 embedding現在的格式已經含了alignment 結構會自己對齊結構 特別抽出來沒有什麼意義 除非你想針對KV Cache去改善 或對不使用transformer有興趣 --- ## 10. LEXICAL & 演算法 (FLAG) github輸入法實驗: [SOE_IME_OPEN](https://github.com/galaxy4552/SOE_IME_OPEN/) 這是實作在SOE_IME的例子 讀了更多書才發現我是在做演算法 但是只有簡單邏輯 說什麼話 相似那些話 插在那 怎麼插 原理像是你去某些網拍 例如 打個字“手套” 然後產生上萬個標籤 搜尋時間什麼時候 使用時間多久 大概都推這廣告推你一個月 繁體中文 你是哪裡人? 看什麼手套 賽車手套? --- ## 11. 反對agent到接受agent 一開始 我其實是反對 agent 的 我無法接受一個系統 在沒有被詢問的情況下 逐步替代人原本要做的判斷與工作 深度痛惡裁員的企業 因此 我選擇從 IME 開始 我希望 AI 是用來放大人的能力 而不是替人做決定 在某些長句中 如果我能少打一半的字 但每一個詞仍然是我選的 那對我來說已經足夠 然而 在實作的過程中 我逐漸意識到一個無法迴避的問題 當 AI 開始“幫你完成一句話” 它在本質上 讓 agent 替你做出決定 並沒有那麼大的差別 差別只在於 你是否選擇使用那個選項 回頭看來 agent 的出現本來是為了讓人更輕鬆 但在現實世界裡 前線科學家的無奈 以及利益結構的推動 讓這個初衷逐漸產生了畸形的變化 --- ## 總結 我一開始只是想讓輸入法好用一點 後來卻發現 語言遠比我以為的危險 也遠比我以為的脆弱 我一直以為人應該是理性的 直到有一次 在我和女朋友吵架分手之後 我把那段對話交給語言模型做清洗與打標 大概30%的文字 充滿了悲傷 20%文字 感到憤怒 真正能代表我想說的並不多 而我在事情的發生後 感到懊悔 也許ai以後能開始提醒你說那些情緒正在失控 但你也許已經活在被安排的生活 而不是你自己了 IME 是否會繼續調參 對我來說不再那麼重要 相反地 我開始對語言模型本身的結構與邊界 產生了更大的興趣 後續: [開發場論語言模型之路 part2](https://hackmd.io/@galaxy4552/BkpUEnTwbl)