---
# System prepended metadata

title: '[2025李宏毅ML] 第3講：AI 的腦科學-語言模型內部運作機制剖析 (解析單一神經元到整群神經元的運作機制、如何讓語言模型說出自己的內心世界)'
tags: [2025ML]

---

# [2025李宏毅ML] 第3講：AI 的腦科學-語言模型內部運作機制剖析 (解析單一神經元到整群神經元的運作機制、如何讓語言模型說出自己的內心世界)
:::success
:+1: 筆記全集Book 請至: https://hackmd.io/@4j/r1U_UJ_pye/
:::

:::info
2025生成式AI時代下的機器學習_李宏毅
課程網站 https://speech.ee.ntu.edu.tw/~hylee/ml/2025-spring.php

video: https://www.youtube.com/watch?v=Xnil63UDW2o
[[ppt]](https://docs.google.com/presentation/d/1dmR4HtycPwofpOEgmdjqMdlTsTtfYcFR/edit#slide=id.p1)
(20250317)
:::

:::spoiler 目錄
[TOC]
:::


▪ **相關複習**
Transformer
[[self-attention 上]](https://youtu.be/hYdO9CscNes?si=Ke55_ABHZqtp_Aib) [[self-attention 下]](https://youtu.be/gmsMY5kc-zw?si=-3_1WABbennG1QqW)
[[Transformer 上]](https://youtu.be/n9TlOhRjYoc?si=brnV18A1d8T-QxfF) [[Transformer 下]](https://youtu.be/N6aRv06iv2g?si=lLr3V2--QyfTuRM2)
[[Transformer 簡介]](
https://youtu.be/uhNsUCb2fJI?si=5jeDnNlcEGv2UPIN)
可解釋的機器學習
https://youtu.be/WQY85vaQfTI?si=QP9mlhZoD4Hy-xF-
https://youtu.be/0ayIPqbdHYQ?si=WtdggsDHBMMXMiIB
語言模型在「想」什麼？
https://youtu.be/rZzfqkfZhY8?si=SghPRZbFJLrKQk7L

![image](https://hackmd.io/_uploads/BJg-c_lNhkl.png =500x)

## 一「個」神經元在做什麼
![image](https://hackmd.io/_uploads/BkFapgN21l.png =500x)
生成式AI: 給定seq z1~zt-1, 預測下一個token zt
輸出下一個token zt 是任一個token的機率有多大, 是個 "機率分布"

![image](https://hackmd.io/_uploads/rky10x431l.png =500x)
**embedding**:每個 token 對應到一個向量
**unembedding**: 把最後一層的向量 seqence 的最後一個向量拿出來，轉成distribution
(把向量轉回token的過程)
![image](https://hackmd.io/_uploads/BkvMRgV3yg.png =500x)
一個layer裡有多種layer

一個 **神經元(neuron)** 的輸出 = weighted sum + activation function(RELU)
這個紅到藍的轉換過程就是 **神經元** 的作用

![image](https://hackmd.io/_uploads/rk_k4WNnye.png =500x)
▪ 怎麼知道一個神經元在做什麼？
"移除"的方式, ex:把輸出設成0或平均值

![image](https://hackmd.io/_uploads/rJdau-E3ke.png =500x)
一件事情可能很多神經元共同管理

![image](https://hackmd.io/_uploads/S1ruc-V2yg.png =500x)
一組神經元來管一個任務

## 一「層」神經元在做什麼
![image](https://hackmd.io/_uploads/rkjF5-V3Jg.png =500x)
Representation：某層神經元的輸出
![image](https://hackmd.io/_uploads/rkBqc-Nh1x.png =500x)
想單獨取出"控制拒絕"的部分
![image](https://hackmd.io/_uploads/B1LscbV3Jl.png =500x)

![image](https://hackmd.io/_uploads/HymZTZVnkg.png =300x) ![image](https://hackmd.io/_uploads/Hyp-pZN3yg.png =300x)
利用拒絕的 減去 沒拒絕的
得到純拒絕向量
![image](https://hackmd.io/_uploads/B1aM0WV2Jx.png =500x)
減去向量, ex: 用 相減 或 投影距離的

這種 **修改Representation來改變語言行為的事情** ,稱為： Representation Engineering, Activation Engineering, Activation Steering …
[[ref]機器學習2021](https://youtu.be/ExXA05i8DEQ?si=1Q3LbmyW5m_rZHXr)

範例論文：In-Context Vector
![image](https://hackmd.io/_uploads/SyWBQfE3kx.png =300x) ![image](https://hackmd.io/_uploads/HJOSXfV3Je.png =300x)

![image](https://hackmd.io/_uploads/H1awW7Vnyl.png =300x) ![image](https://hackmd.io/_uploads/ryNYbQNnye.png =300x)
![image](https://hackmd.io/_uploads/HJLYMXVhyx.png =500x)
每個 representation 都是功能向量的線性組合(weighted sum)
e 是非功能向量的部分 --> **希望 e 越小越好**
![image](https://hackmd.io/_uploads/H1rcM7VhJg.png =500x)
每次選擇的功能向量越少越好 --> **希望 α 越小越好**
![image](https://hackmd.io/_uploads/S1MgmQV3Je.png =250x)
Loss function 如上!
可用 Sparse Auto-Encoder (SAE) 來解

## 一「群」神經元在做什麼
![image](https://hackmd.io/_uploads/rJNzzPNhye.png =400x) ![image](https://hackmd.io/_uploads/rJad7PNhJe.png =180x)
需要一個語言模型的模型來幫忙解析語言模型
faithfulness：保有原來實物的特徵

▪ **舉例 一個早期的研究**
![image](https://hackmd.io/_uploads/rkjOzPN3ye.png =400x) ![image](https://hackmd.io/_uploads/ByK5zDVhyl.png =180x)
前面幾層先對主詞做理解
主詞跟受詞的"關聯性" 會產生個 linear function

![image](https://hackmd.io/_uploads/BJ6-LvVhye.png =500x)
用幾筆(x,y)回推找出 W,b
再去對答案 來達到用簡單的模型比擬語言模型的行為
![image](https://hackmd.io/_uploads/rJMQUDN2Je.png =500x)
結果還可以 有的高 有的低

▪ **根據模型上得到的預測來改變實體**
![image](https://hackmd.io/_uploads/ryDpwvV3yg.png =500x)
![image](https://hackmd.io/_uploads/SkigOP42yg.png =500x)
也有試驗用這種方式去修改語言模型
(用模型的模型得到的結論 直接用在語言模型上)
結果有蠻多情況是可以成功的
ex: 硬要他回答錯成高雄

▪ **系統化的語言模型「模型」建構方法**
![image](https://hackmd.io/_uploads/rJDYOPE2yg.png =500x)
pruning: 刪減一些模型的 component
circuit: 語言模型的模型
![image](https://hackmd.io/_uploads/HJqhYPV21x.png =500x)

## 讓語言模型直接說出它的想法

![image](https://hackmd.io/_uploads/B1VLaP42yx.png =500x)
之前簡化的講法忽略了 residual connection
**residual connection**：layer的輸出 其實還會再加上輸入，才會得到最終的輸出
這個設計使很深的網路更好訓練

![image](https://hackmd.io/_uploads/HJRL6vE2yx.png =500x)
所以 transformer 的 layer 間是需要加上 residual connection 的, 通過一個 layer 產生輸出後 會把原來的輸入再加起來

==!!!右邊換一種畫法!!!== :tada: 
▪ **residual stream**: 像是高速公路, 直接把輸入往前送送送到輸出
▪ 在中間過程每個 layer 都會加一點東西進去
才會才會得到最終的 distribution

▪ 想：中間幾層的輸入是否相同可像最後層一樣, 加過 unembedding layer 來得到 token 的機率分布 
--> **logit lens**
由對應的文字反推看語言模型的 representation 可能代表的意思

▪ **logit lens**：檢查每一層的 logic 看看 transformer 是怎麼思考的
(logic: 過 softmax 前叫 logic)

論文範例
![image](https://hackmd.io/_uploads/BkJL-u43yx.png =500x)
到後面發現他把 it 推理成 album
![image](https://hackmd.io/_uploads/rkUpWuE21g.png =500x)
用 logit lens 發現他會把法文先翻成英文再翻成中文, 代表這個模型是用英文在思考的

▪ **每一層就是加點什麼進去 Residual Stream**
![image](https://hackmd.io/_uploads/S1gjU_V2kg.png =500x)
加了什麼呢？

- 綠色：原輸入
- 橘色：先前說一個神經元是把前一層的結果 做weighted sum <--> 前一層的某神經元乘上 weight 後傳入下一層不同的 神經元

**"Transformer Feed-Forward Layers Are Key-Value Memories"** 提出這種另一面的解釋概念！
把前一層(橘色)看成 attention 的 weight --> k
中間線段 weight --> value v

![image](https://hackmd.io/_uploads/S1Rn8dEhkl.png =500x)
若想把金城武換成李宏毅
就可去找出是哪個v在影響的, 把金換成李
這篇論文發現此做法有48%會改變輸出, 34%會成功換掉


▪ **Patchscopes**
![image](https://hackmd.io/_uploads/By_yDu42yx.png =500x)
![image](https://hackmd.io/_uploads/Hkr6iOV2yx.png =500x)
利用不同角度解析 representation (非一個token,可能是一句話)
但這會受到你舉的例子的影響
![image](https://hackmd.io/_uploads/Hytw2_4hyg.png =500x)
ex: 解析每一層最後一個字對這個模型的意義
威爾斯王子

![image](https://hackmd.io/_uploads/rJgcCuNhyl.png =500x)
![image](https://hackmd.io/_uploads/SkfnAONn1x.png =500x)
![image](https://hackmd.io/_uploads/ryIektV3Jx.png =500x)

-另一個範例論文 利用分析每層的輸出 發現有時要到很後面層才會被解析出關鍵事(太晚)
-所以他試著把後層再傳遞到最前面重跑一次
發現對原本答錯的題目 有40~60%變成答對！

-- END --