Up 覚醒と睡眠の切り替え方法 作成: 2025-09-18
更新: 2025-09-18


    テクスト生成は,テクストへのトークン追加の繰り返し。
    そしてトークン追加は,つぎのアルゴリズムになっている:

    (1) つぎのアルゴリズムを1層として,これを多層に積む:

      [ x_1, ‥‥, x_m ] (トークンベクトル列)
        │
        │← 位置エンコーディングを加算
        │
        ├───────────┐
        │           ↓
        │         ( Self-Attention )
        │           z_i
        │           │← LayerNorm
        │← 加算 ──────┘
        │
        ├───────────┐
        │           ↓
        │          ( FFN )
        │           z'_i
        │           │← LayerNorm
        │← 加算 ──────┘
        ↓ 
      [ x’_1, ‥‥, x’_m ] (つぎの層の入力)

    (2) 第1層に入力したテクスト (トークンベクトル列)
       [ x_1, ‥‥, x_m ]
    に対し,上のループの最終出力が
       [ o_1, ‥‥, o_m ] 
    であるとき,
       logits_i = o_i W_O^T
       p_i = softmax( logits_i ) 

    (3) [ x_1, ‥‥, x_m ] に,p_m が指すトークンベクトル y を,追加する:
      [ x_1, ‥‥, x_m ] → [ x_1, ‥‥, x_m, y ]


    テクストの学習は,この<(1), (2), (3)>がつぎのように変わる:
     学習させるテクストを
       [ x_1, ‥‥, x_m, ‥‥, x_n ]
     とする。
     (3) は,
      (3') [ x_1, ‥‥, x_m ] に,x_(m+1) を追加する
     になる。
     そして,「逆伝播」プロセスとして,つぎのことをする:
      (4) y が x_(m+1) になるように,パラメータを調節する


    したがって,つぎのルーチンの切り替えが,「覚醒と睡眠の切り替え」になる:
        <(1), (2), (3)> ←→ <(1), (2), (3'), (4)>

    この切替は,既存のルーチンの切り替えであるから,複雑なプログラムにはならない。
    制御レイヤーの機能に加えることができる。