Update README.md
Browse files
README.md
CHANGED
@@ -119,3 +119,33 @@ base_model:
|
|
119 |
|
120 |
让模型在回答问题时不仅给出答案,还能展示推理过程,提高模型回答的可解释性和可靠性。
|
121 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
|
120 |
让模型在回答问题时不仅给出答案,还能展示推理过程,提高模型回答的可解释性和可靠性。
|
121 |
|
122 |
+
|
123 |
+
与不改变词表的本质区别在于:
|
124 |
+
|
125 |
+
1. 不改词表的方式:
|
126 |
+
- `<|reasoning|>` 会被拆分成普通token序列来处理
|
127 |
+
- 模型将其视为普通文本,类似于看到 "reasoning" 这个词
|
128 |
+
- 占用更多token位置(因为被拆分)
|
129 |
+
- 没有特殊的语义表示学习
|
130 |
+
|
131 |
+
2. 添加到词表的方式:
|
132 |
+
- `<|reasoning|>` 作为单个特殊token处理
|
133 |
+
- 模型可以学习到这个标记专门的语义表示
|
134 |
+
- 只占用一个token位置
|
135 |
+
- 能够建立独特的语义空间
|
136 |
+
|
137 |
+
具体影响:
|
138 |
+
```
|
139 |
+
# 假设tokenizer编码示例
|
140 |
+
# 不加入词表:
|
141 |
+
"<|reasoning|>" -> [1234, 5678, 9012] # 被拆分成多个基础token
|
142 |
+
|
143 |
+
# 加入词表:
|
144 |
+
"<|reasoning|>" -> [32000] # 单个特殊token
|
145 |
+
```
|
146 |
+
|
147 |
+
从训练效果看:
|
148 |
+
- 加入词表能让模型更好地识别和区分推理部分的边界
|
149 |
+
- 不加入词表依然可以起到标记作用,但模型需要从上下文学习这种模式
|
150 |
+
- 加入词表的方式通常效果更好,因为给了模型更明确的语义信号
|
151 |
+
|