# 開發場論語言模型之路
來都來了
也許這些事能產生一點啟發
我認為這些東西好像都很適合當論文
也沒有人寫
而我年紀也不再需要這些主題敘事了
留給想用的人去創作
---
## 1. 當初想開始做AI輸入法的想法
最一開始覺得
可以加一點現在ai功能就很好了
到後來變成
在本地化執行 可以不透過雲端
達成更多字的解讀 安全 私密
又後來變成 自己開始寫語言模型
(沒到完全自己寫 只是嘗試去改進算法)
後來我才發現 我不是想做更聰明的系統
我只是想讓語言不要被拿走
想在基礎設施上 加上一點歡樂
那就太好了
---
## 2. 隨機鸚鵡論讓我開始充滿好奇
### *“你是隻隨機鸚鵡 而我也是”*
在早期想著改進embedding model時
在思考著 為何隨機鸚鵡能提升效能?
我做了個假設 他可能是語言模型的正架構
但他在哪?(後面內容有工程實作的答案
但我不確定是否是真的
以下是我的推論鏈:
>隨機鸚鵡 : 大量的發散 卻在某個地方得到穩定的結果 >
那有著發散文字自然就有收斂文字 >
也許是 dump(vec*0.97~1.03) 但加入噪音太奇怪 >
對(非智慧)聊天文字進行偏向
走到這裡 我認為這件事是我的答案
但從工程上來看 他像bias又不是傳統bias 怎麼用? 有什麼用?
這個工程上的實作
我認為比RLHF好一點
原因是 你覺得的好
是智慧上的好 還是你聽起來舒服的好
如果是後者 那你模型就會被偏好帶歪
我用大量我們說話的習慣文檔去洗成.npy
讓模型說話像我們
#### *「如果它只是鸚鵡 那我們是什麼?」*
---
## 3. 語意場理論的開始

### 工程中的結構歸納(形上學)
我們向量層往上之後 要補足甚麼東西能夠到達無語言層
這邊回來幹一下古
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)