# 開發場論語言模型之路 part2
接下來會比較偏研究日記型式 而不是第一篇的結論
## 資料的整理
因為我想看到資料正常的輸出
前面為了IME極致的追求速度
把資料過度的壓壞
只剩下bias是我認可的檔案大小
且效果不錯
我開始做資料的整理歸納
網路上的資料蠻多的
但真正能丟給機器還需要分類
這樣在呼出某些方面的內容
能有個依據
不會忘記這資料源原本要做什麼
所以挖了中文圖書分類法
github: [ChineseBookClassificationSystem](https://github.com/galaxy4552/ChineseBookClassificationSystem/)
原則上我做的東西還是避免造一樣的輪子
github沒有
就照維基做了個資料分類
## microgpt的出現
原本寫的引擎
隨著專案不斷變大
內容越來越多
但因為30+的模組
已經把語意熵拉到幾乎動不了
engine的重構非常多次
每次都是100~200行的換
只專心在自己會不會Enshittification
microgpt給了我很多啟發 以下是跑result的結果:
```python
--- inference (new, hallucinated names) ---
sample 1: kamon
sample 2: ann
sample 3: karai
sample 4: jaire
sample 5: vialan
sample 6: karia
sample 7: yeran
sample 8: anna
sample 9: areli
sample 10: kaina
sample 11: konna
sample 12: keylen
sample 13: liole
sample 14: alerin
sample 15: earan
sample 16: lenne
sample 17: kana
sample 18: lara
sample 19: alela
sample 20: anton
```
我認為很適合做為研究引擎
之後會結合pipowl(minimal-sbert結構)
## 訓練模型的一些細節
### contrastive-axis-projection
github: [contrastive-axis-projection](https://github.com/galaxy4552/contrastive-axis-projection)
### 我認為訓模型有3個階段
#### 最低階:1維npy
只知道怎麼說話哲學 沒有任何腦 (類bias格式)
#### 中階:多維npy
就是目前我打算做的哲學model 是個知道很多哲學意義跟甚麼最靠近
#### 最高階:把script寫進多維npy
讓多維語意空間能承載可執行的轉移模板
要做往上抽象的事
還需要在工程面想得更清楚 以及通用
而非隨著幻覺作夢
這是中階工程 在input_text階段就可以管控哲學面語意靠近的定義
## 語意幾何學語言模型
pipeowl 是從 pipowl(minimal SBERT)延伸出來的幾何式語言模型:
它不以「生成長句」為主要目標
而是以 可觀測的語意定位、可控的選詞 作為核心
```python
pipeowl/
│
├─ README.md
├─ LICENSE
│
├─ engine.py
├─ quickstart.py
│
└─ data/
├─ L1_base_embeddings.npy
├─ delta_base_scalar.npy
└─ L1_base_vocab.json
```
- 非生成式(或弱生成式):優先透過查表、語意幾何與梯度偏移來選詞
- 可觀測:每一步的向量與分數都可以被檢查、攔截、調參
- 可拆解:base(語意地形)與 gradient(偏折/重力井)分開存放與部署
目前我對成果還不算有信心 但還是照實放出來
結果好就當作另一條路線
不好也希望能提供一個可參考的 baseline
讓其他人少走一些彎路
---
### 模型資源
HuggingFace: [Pipeowl](https://huggingface.co/WangKaiLin/PipeOwl)
---
### Scoring(核心)
系統最終以 base 與梯度訊號的線性組合決定候選詞排序:
核心公式:
**score=α⋅base+β⋅Δfield**
---
### 空間位置
「八」的空間位置

「八」與「九」的空間位置

這裡展示的是 token 在語義空間中的幾何分布位置
可以觀察到相鄰數字在向量空間中呈現連續性
---
PCA 2D分布

---
### 類比測試
測試1 第八藝術+九-八

測試2 八卦拳-八卦+八旗

測試3 男人-男+女

測試4 國王-男+女

上述測試展示向量空間中的線性可加性與語義轉換能力
---
### Benchmark
此處比較的是推論速度與載入時間,不包含模型訓練成本。
---
*pipeowl*(不使用sentence-transformers)
載入時間約<1秒
運算時間約0.03秒

不需要GPU
---
一般embedding模型(使用sentence-transformers)
載入約10秒
運算時間約0.1秒

幾乎必須GPU
---
eval測試1
corpus size=15
eval size=12

eval測試2
corpus size = 1200
eval size = 200
ood ratio = 0.28

本測試為小規模語料驗證,主要展示幾何語義結構與運算效率特性,尚未進行大規模 benchmark 對標。
---
### 是否再壓縮成512dim
做overlap 順便測β
文章: [負空間的由來](https://www.ptt.cc/bbs/AI_Art/M.1771662379.A.B19.html)
損失過多不再壓縮