色々やってみて思っていること 2025年度

 某室アドカレ1日目.

 

 ショートエッセイ.探索という言葉を最近,友達と話していたのでそのことについて書きます.

 

 自分はこれまで,そこそこ色んなことに挑戦してみたと思っている.ハッカソン・アイデアソン・データソンも含めて,インターンやアルバイト,コミュニティ運営,合宿運営,エトセトラ.分野も割と様々で,そもそもが高校までが文系で,大学から理系学部に入ったので大きな挑戦があった(と思っている).

 

 まず,大前提なのが,人生においてあまりにも多くのことに手を出すべきではない,ということだ.もう少し正確に言えば,独立性が高い異なるものに多く手を出すべきない,ということだ.ただ,この独立性の評価は難しく,例えば文章執筆・読解やプレゼンテーション、セルフ・チームマネジメントの経験は多くのプロジェクトに共通する基本的な技能となるだろう.しかし,同時に複数の分野・種別を越境することによってのみ身に着くものでもないため,必要条件に留まるだろう.単純には一つの研究分野を研究していく中でも十分に上記のスキルを獲得できる.そのため,ここでは独立性を同じ技能・方法論で解けるかどうか,みたいに考えてもらうと良いと思う.

 

 多くのものに手を出している(かつ失敗していない)人のことをジェネラリストと呼ぼう.逆に,きちんと分野・種別を絞っている人のことをスペシャリストと呼ぼう.

 

 その上で,私は多くのことに手を出してみてよかった点があると感じているし,その良さを享受してもらいたいと考えている人たちもいる.端的に言えば,相性が良い人たちがいる.ここでは4点挙げてみる.

 

1.探索に目的語があること.好奇心だけで動いている人は一見,優秀に見えるかもしれないが,長期的には散乱としてしまう.何かに触れること自体が目的になると,経験は増えても,判断基準が育たない.探索の目的語は「自分が何をしたいか」でも「どんな人間になりたいか」でもよいが,より重要なのは,「何を確かめたいのか」という問いの形をしていることだと思う.たとえば「自分は研究が向いているのか」「プロダクトはどこまで作れるのか」「チームで動くとき自分はどの役割が最大効率なのか」みたいな問いがあると,挑戦は単なる寄り道ではなく,意思決定のための観測量を増やすことに繋がる.

2.区切りをつけられること.途中で物事を止めるにはサンクコストが生じ,離脱を抑制する.だけど,そこできちんと止めて,別の物事に移ったり,あるいは集中したりすることができること.物事を探索するのは.撤退するのは負けではなく,探索の定義そのものである.

3.異なるものを綜合し,抽象化できること.多くの物事は表面上,異なる姿をしているが,その物事が背景に持つ構造性やその上で行われる操作,また実行の際の手順などを抽象化して汎用的な知見や技能に還元することができると,越境する価値が高まるだろう.

4.それが許される環境にいること.例えばいまの自分は学生だが,修士や博士と違ってまだ明確な研究テーマを持っていなくてもよい(あったほうがよいのはそれはそう).また,就活生と違って(それを本来はしないといけないが先伸ばしているので),正確な自己分析を持ち合わせていなくてもよい.

 

 私は探索的な人生はかなり良いものだと思っていて,割とふらふらしている.もちろん自分の精神的特性(e.g. ADHD)みたいなところから来ることもあるだろうが,私はこのような生き方のほうがよいとは思っている.と同時に,スペシャリストの人たちを尊敬しているし,自分はいつかどこかでそうならないといけないのかもしれない,という気持ちがある.個人的にはジェネラリストとスペシャリストの対立はフェーズの違いからくるものだと思っている.

 

 ただ,ここで一つだけ強調しておきたいのは,「探索」は逃避と紙一重だということだ.探索は,最初から分かっている勝ち筋をなぞるより,気持ちが楽であることがある.新しいことに手を出すとき,人は「まだ評価されない状態」を選べるからだ.だからこそ,探索には締切がいる.期間でもいいし,成果物でもいいし,あるいは「これが言えるようになったら撤退」という基準でもいい.探索を美化するためではなく,探索を探索として成立させるために,区切りが必要になる.

 

 探索は散乱するのではなく,地図を描くことだ.地図を描く人が必ずしもそこに家を建てるわけではないが,家を建てる人は地図を必要とする.たぶん自分は,まだ地図の線を増やしている段階にいる.そしていつか,線が十分に重なって「ここだけは深掘るべきだ」と思える場所が現れるだろう.


 P.S.1.

 やってよかったランキングを小さくつけておく.
 1.恋愛.好きな人と時間を過ごすこと.
 2.転学/転校.学校を変えたこと.大きな環境の変化を起こしたこと.
 3.研究(学会発表). 初めて厳密な論理展開を要したこと.総合格闘技
 4.ビジネスピッチ.別の意味での総合格闘技
 5.ハッカソン.いろんなアイディアを知れた.
 6.数学の勉強.抽象化の方法を学んだ.構造と操作はここから来てます.

 直感だけで選んでいるので,並列可能ではないとは思うけど…….

 P.S.2.
 時間がなかったので散文になってしまったので加筆修正すると思います.
 論点メモに近いですが,(1) 生成AI自体において多くの知識を持つことが相対的に価値が低減していること,(2) あまりにも世界が加速的すぎるのでヤバイということあたりは載せてもいいかもしれない.(3) あとこういうイベントあるよ~みたいな話も書いてもいいかもしれない.

自己注意機構はローパスフィルタである.

メモ書き程度の考察.全く別のことを考えていた際に下の考察を思いついたが,[Wang+ ICLR 2022]を見つけてしまったので供養を込めて投稿する.

 

自己注意機構は本質的にローパスフィルタである.この事実を2通りの数式で眺める.

(1) 確率行列としての固有値構造 [Wang+ ICLR 2022]

(2) 熱核近似によるラプラシアン拡散


なお,先に論文紹介.

[Wang+ ICLR 2022] Theorem 1

openreview.net

[Choi+ NeurIPS 2024]
深層での過平滑化(oversmoothing)現象を指摘している.

openreview.net

 

[Wang+ ICLR 2022]の結果を引用する.

 A=\text{softmax}(P),\ P\in \mathbb{R}^{n\times n}

ここで、確率行列であることから,ペロン=フロベニウスの定理より,最大固有値1の直流モードが存在し,

 \lim_{t \to \infty} \frac{\| \text{HC}(A^t z)\|}{\| \text{DC}(A^t z) \|}=0

が成り立つことを示した.

ここで,離散フーリエ変換 F

 \hat{z}=Fz,\ DC(z)=(F^{-1}e_1)\hat{z}_1,\ HC(z)=z-DC(z).

DCは直流成分,HCは高周波成分を表す.

 

ここで別の見方を示す.

ある層での入力系列を行列 X\in \mathbb{R}^{n\times d} とし,重み行列でクエリ・キー・バリューを作ると,

 Q=XW_Q,\ K=XW_K,\ V=XW_V

であり,自己注意の出力 Y\in \mathbb{R}^{n\times d}はsoftmax関数を用いて

 Y=\text{softmax} \left( \frac{QK^\top}{\sqrt{d}} \right)V 

と書ける.ここで,簡略のために

 A=\text{softmax} \left(\frac{QK^\top}{\sqrt{d}}\right)

と置く.

 

トークン間のグラム行列を,グラフの隣接行列ように捉え,

 S=\frac{QK^\top}{\sqrt{d}}

とする.ここで, \tilde{S}=\frac{1}{2}(S+S^{\top})のように対称化して,対称行列として扱うことにする.そして,その行列指数関数を取り,固有分解しよう.行列指数関数の性質から次のように書ける.

 \exp(\tilde{S})=U \exp(\Lambda) U^\top

注意, \exp(\Lambda)=\text{diag} (e^{\lambda_1}, e^{\lambda_2},\cdots, e^{\lambda_n}) である.

 

ここで非正規化ラプラシアンをとる.当然,正規化してもよい.

 L=D-\tilde{S},\ D_{ii}=\sum_j (\tilde{S})_ij

すると,

 \exp(-\tau L)=U\exp(-\tau \Lambda)U^\top

となる.高周波成分(大きな \lambda_i)は e^{-\tau \lambda_i}は急激に小さくなり,高周波成分は抑制される.

注意機構では距離が大きいところほど減衰させたい.熱核による近似として,行ごとの正規化を忘れずに

 A \approx \text{diag}(\exp(-\tau L) \mathbf{1})^{-1} \exp(-\tau L)

とすれば,高周波ほど小さくなるので結果的に低周波のみを残すローパスフィルタとして振舞う.

 

もう少し直感的な理解を考える.この行列指数関数をテイラー展開して1次近似すると,

 \exp(-\tau L)= I-\tau L+O(\tau^2)\approx I-\tau L

であり,この層の出力は

 Y=AV \approx (I-\tau L)V

となり,入力をそのまま通す項と,少しだけ隣接トークンと混ぜ合わせる項の足し合わせとして解釈できる.

 

実際のブロック単位では,もとの行列をそのまま足し合わせる残差接続が入る.

 \text{LN}(X+Y)=\text{LN}(X+AV) \approx \text{LN}(X+(I-\tau L )XW_V)

である.ここで層正規化などを無視して,伝達関数だけを見れば,

 (I+I-\tau L)W_V=(2I-\tau L)W_V

とみることができるので,バイパス+ローパスとみることができる.

 

残差接続と層正規化を,さらに陽なオイラー離散化と見做して,第 l 層を連続時間 tに対応付けると

 \frac{\partial X(t)}{\partial t}=-\tau L(t)X(t)W_V+O(h^2)

という時間依存な係数が付いた拡散方程式を得ることができる.ただし,層幅 hであり, h\to 0で厳密にPDEとして解釈できる.これもいろいろ考えられそう.

Intrinsic Dimension Estimation for Robust Detection of AI-Generated Textsを読んで

# 論文情報
 出典:

```

@inproceedings{NEURIPS2023_7baa48bc,
 author = {Tulchinskii, Eduard and Kuznetsov, Kristian and Kushnareva, Laida and Cherniavskii, Daniil and Nikolenko, Sergey and Burnaev, Evgeny and Barannikov, Serguei and Piontkovskaya, Irina},
 booktitle = {Advances in Neural Information Processing Systems},
 editor = {A. Oh and T. Naumann and A. Globerson and K. Saenko and M. Hardt and S. Levine},
 pages = {39257--39276},
 publisher = {Curran Associates, Inc.},
 title = {Intrinsic Dimension Estimation for Robust Detection of AI-Generated Texts},
 url = {https://proceedings.neurips.cc/paper_files/paper/2023/file/7baa48bc166aa2013d78cbdc15010530-Paper-Conference.pdf},
 volume = {36},
 year = {2023}
}
```
リンク:https://neurips.cc/virtual/2023/poster/72624

一言説明

テキスト埋め込み空間における内在次元(Intrinsic Dimension)の概念を用いることで,人間が生成したテキストとAIが生成したテキストを効果的に識別する新たな手法を提案する.

先行研究との違いは?

問題は何か.

  • 近年,大規模言語モデル(LLM)が非常に人間らしいテキストを生成するようになり,AIと人間の書いた文章の区別が難しい.社会的・倫理的な懸念がある.

なぜ,その問題が興味深く,かつ重要なのか.

  • AI生成テキストが誤情報や不正利用を防ぐ既存手法は,特定のモデルやドメインに依存的.
  • 広範囲に普遍的な手法があれば,どの分野でも嬉しい.

なぜその問題が難しい?
    -   \log(w) や,局所的な特徴(e.g. 用語や表現)に依存すると,パラフレーズや置き換えなどの敵対的攻撃に対して脆弱的.
    - テキストそのものの表面的な統計や文体の特徴だけでは,根本的な特徴を捉えづらく,明確な識別が難しい(らしい……?)

なぜ今まで解決されてこなかったのか.
    - 既存の手法は,特定のモデル,ドメインに依存的なので,モデルが昨今増えすぎてて,汎用性やロバスト性が失われる傾向にある.
    - watermarkingのようなアプローチは,統計的な偏りを意図的に注入できるが,敵対的攻撃に脆弱.
    - 提案手法は,埋め込み空間の幾何学構造に注目している.

 

 

提案手法のキモは?

重要な要素

  • テキストサンプル(200-300トークン)をTransformer系のエンコーダによる埋め込み集合(点群)として捉え,多様体の次元を推定する.
  • 内在次元は,パーシステントホモロジー次元(PHD)推定手法によって推定.結果として,一貫して統計的な差異が確認された.
    • アルファベット言語では約9,中国語などでは約7を示すのが面白い.
  • このスコアを単一で利用することで,生成モデルやドメインに依存しない組精度な検出が可能となった.

貢献

  • クロスドメイン・クロスモデルのシナリオにおいて,高い検知精度を記録.
    • クロスドメイン・クロスモデルって言い回し知らなかったので勉強になる.
  • 多言語での評価や複数のモデルでの評価によって,高い信頼性.

パーシステントホモロジー次元の数学的背景

与えられた点群  Xに対して,各点を頂点とするグラフの最小全域木(MST)を構成し,エッジ長  |e| に注目する.ここで,エッジ長をあるべき指数で累乗して和を取るスコアを定義する.

  {E_0}^\alpha (X) = \sum |e_i|^\alpha

もし,点群が d 次元多様体 M\subset \mathbb{R}^n に一様分布するならば,サンプル数$n$が増大するにつれて

 {E_0}^\alpha (X) \sim C \cdot n^{1-\alpha/d}

という冪乗則が成り立つ.これを対数変換して

  \log  {E_0}^\alpha (X) \sim (1-\frac{\alpha}{d}) \log n + \text{const}

となる. \alpha = 1ならば,サンプルごとに得られた (\log n_i - \log E_i)のペアを線形回帰して傾き \kappaを捉えると

 \kappa = 1-\frac{1}{d} \Rightarrow d= \frac{1}{1-\kappa}

と推定できる.


提案手法の検証方法は?

めちゃいっぱい実験してる.なんてえらいんだ.

内在次元の評価

  • Wikipedia, Reddit, StackExchangeなど複数のドメインにおける実際のテキストと,GPT-2、OPT,GPT-3.5など各種生成モデルによるテキストの内在次元を比較し,統計的な差異を確認した.
    • 多言語環境での検証も実施し,言語ごとの内在次元の傾向や分布を評価.

image.png (32.0 kB)英語のwikipediaデータに対する異なるモデルの埋め込み.

image.png (63.6 kB)

wikipediaデータに対する言語別埋め込み.

- 人工テキスト検出器としての評価
    - 単一の特徴量(=PHD)に基づく閾値判定(e.g. ロジスティック回帰)を構築し,偽陽性率1%などで既存手法と比較.(DetectGPT, OpenAI Detector,GPTZero,RankGen)と比較.
    - クロスドメイン・クロスモデルでの比較.
 - 敵的的攻撃・バイアス評価
     - DIPPERによるパラフレーズ攻撃を適用して提案手法の耐性を検証.
     - 非ネイティブ話者のテキストに対する誤検出率(FPR)の低減効果を測定.

 

議論はある?

  • 低資源言語などは課題.
  • 内在次元というアイディアは,テキストの品質評価,文体変換,生成モデル事態の解析などにも有効な可能性がある.

2024年の反省と2025年の抱負

はじめに

2024年の反省と2025年の抱負を述べます.もし,積極的に読みたいと思っていた方がいらっしゃましたら,お待たせました.

主に,次の観点から反省と抱負を述べます.

  1. 学術の方面
  2. 労働の方面
  3. 趣味・その他
  4. 踏まえた定量的な目標
  5. 踏まえた定性的な目標

よろしくお願いします.

1:学術の方面

学会/イベント

まずは,2024年に参加した学会やイベントなどを振り返ります.時系列順ではございません.

YANS2024(9月開催)

自然言語処理若手の会です.完全聴講で参加しました.いま振り返ると,論文投稿などが必要ないので,ポスター発表などを気軽に行うちょうどいい機会を損失をしたようにも感じます.

会自体はとても刺激的でしたし,参加してよかったと思います.特に様々な大学の方と昼食の席をともにし,具体的な話を聞くことができた点がよかったと思います.また,招待講演も自分の興味の真ん中で刺さりました.

自分が一番よかったと感じているのは,ラウンドテーブルで自分の興味関心領域と近しい方とお話できた点と,尊敬している先生と一対一で(といっても数分だけですが)お話させていただけた点です.

前者では,まず私の年齢について言及され,参加していることを褒めていただくと同時に,興味関心を質問していただきました.私は当時,双曲埋め込みやガウス埋め込みといった,そもそも特殊な空間を仮定して,そのような空間に埋め込むという思想に共感していたので,それを率直にお話しました.

後者では,少々の会話の後に,直ちに不勉強さを指摘され,勉強を続けることの大切さを説かれました.短い間ながら,私の言いたいことがまとまらず,実際よりもさらに不勉強であるように捉えられてしまったと思います.もちろん,実際の知識量なども満足であるとは到底言えるはずもないので,尊敬する先生の前で,とても恥ずかしい姿を晒してしまいました.ただ,次回会える機会を楽しみにしていると,激励を頂いたので,積極的に機会を伺っていきたいです.

CSS2024(10月開催)

コンピュータセキュリティシンポジウムです.今年は神戸での開催でした.聴講参加で,ワークショップだけ参加しました.データ解析系のタスクが事前に与えられ,ポスターを作るというもので,完全にキャリーしていただきました.

馬鹿なので,初日はカラオケに泊まりましたが,二日目以降はカプセルホテルに泊まりました.必要十分性を感じることができてよかったです.

シンポジウムはとても刺激的なもので(part2),非常に学びが多かったです.私が分野に精通していないのもあって,初見のものが多く,質問攻めしてしまうシーンもありましたが,全体的にとても楽しめました.

RAのバイトなどもお誘い頂いたりして,様々な役職の方(研究所の所長さんとか……)とお話する機会があり,とても学びが多かった気がします.

友人と会期の後,温泉に行ったのですが,運と機会の話をしながら,いろいろ思想を巡らせました.

情報統計力学とその周辺 ミニ研究集会(4月開催)

いま改めてみると,贅沢なメンツですね……

個人的には,今泉先生の文脈内学習の話が楽しかったです.

基本的に,清々しいぐらいわからなかったですが,こういう経験をできたこと自体がよかったと思っています.

物理屋のための機械学習講義/第10回(5月開催)

甘利先生の回で,情報幾何に当時関心があったので参加しました.サインもらいたかったですが,そんな雰囲気ではなかったので,残念ですが諦めました.情報統計力学の研究会と一緒で内容を深く理解できたわけではないですが,部分的に楽しめたり,わからないと突き付けられる体験がよかったと感じています.ついでに東大の五月祭に遊びに行きました.

番外編:JSAI2024(5月開催)

なぜ,番外編かと言いますと,学生参加費が高すぎたので,会自体には参加していないからです.ただ,会期中に様々な方とお話する機会を頂いたので書いておきます.

直接,お名前を出すのは恐縮なので,SさんとHさんとS先生と略記させてください.それぞれの方とお話したことは控えますので,何を食べたか書いておきます.

Sさんは大学院生の方で,自分が興味のある分野を研究されていることと,(たしか)Twitterで会う人を募集されていたのを見て飛びついたような気がします.中華料理を食べに行きました.

Hさんは博士を卒業した後に,現在は企業で働かれている方です.本を頂きました.ありがたい話です.とろろ丼を食べに行きました.

S先生は現在企業で研究職をされている方です.お寿司屋さんで海鮮丼を食べました.

COG(12月開催)

Challenge Open Governanceです.東京大学が開催しているイベントです.DXを通じたオープンガバナンスの実現を目指して行うアイディアコンテスト/ビジネスコンテストを想像してもらえればよいと思います.

ウェブ開発と,全体の計画を主導しました.フィールドワークという質的調査に基づいた計画立案をするのが楽しかったです.開発プロセスの中で,僕は上流工程を担当していて,開発の手を動かすことがなかったのですが,高速に開発できたので,少しずつマネジメントのスキルも身についてきたのかなと思えて嬉しかったです.

研究室見学

次は研究室見学について振り返っていきます.身元の特定を避けるために,濁しながら書いていきます.

今年は,O先生の研究室に入り浸っていたわけですが,他にもK先生やT先生にお世話になりました.O先生には様々な研究支援や指導,移動費や宿泊費などを出していただき,とても助かりました.

また,T先生には個人ゼミを付けていただき,とても贅沢な体験をしていると感じています.ありがとうございます.

また,京都大のT先生の研究室にもお邪魔する機会を頂きました.大変お忙しい方なので,時間が噛み合ったことが奇跡だと感じています.25年度のイベント運営などの話も出てきているので,今後も関わらせていただきたいです.

自主ゼミ

最後に自主ゼミなどの勉強会について振り返っていきます.主に年内中に一度でも行った自主ゼミは主に次の四つです.2,3,4は継続中です.

1:ガウス過程回帰

完走できました.MLPから出ているGP本を読みました.ガウス過程回帰を学ぶことができたのもよかったですが,機械学習に関する勉強ができて,周囲の人間と知識を揃えることができたのがよかったです.

とても勉強になりました.

2:多様体上の最適化

現在進行中です.T先生との個人ゼミですね.

きっかけは,自分が多様体仮説,多様体学習周りの話に興味があり,先生に持ち掛けたことから始まりました.とても丁寧に指導してくださっている実感があり,また時間に割とルーズなところが気に入っています.

3:計算論的精神医学

現在進行中です.私が主催していて,完全オンラインで開催しています.輪講形式で,多くの人が手を上げてくださったので,僕だけが発表するみたいな形式にならずに済んでいます.ハッピー.

4:妥協しないデータ分析のための微積分・線形代数

現在進行中です.学部2年の人が最多でやっています.割と走り気味で,すぐ終わりそうな様子をしています.

本自体は間違いなくとても良い本です.来年,一年生の子が興味あれば,積極的に進めたいと感じています.

また,挫折したのが次の通りです.

1:PRML

有名なやつです.当然の如く,挫折しました.別の記事でも書きましたが,個人で読み切ってしまったため,学びを深めるために,また誰かと読み合わせしたいと考えています.

2:情報幾何

オンラインゼミで行おうとしまいましたが,自分の都合がつかなくなってしまい挫折しました.残念.

ただ,情報幾何のゼミ自体は,リアルで同級生と行う予定なので,その子次第で継続が決定します.来年に期待.

3:関数解析

T先生との個人ゼミの最初のテーマでした.岡本/中村を読んでいましたが,結果として私の不勉強が原因でもう少し基礎からやり直すことになってしました.

数学科のゼミのスタイルを体感できたのは,単なる挫折以上に大きな意味を持っていると感じています.

2:労働の方面

起業しようか~という馬鹿話は闇に消えましたが,別の方面からそういう話が舞い上がっています.

ビジネスサイドの話は難しいと感じています.一件,真剣にそのプロセスを考えましたが,やっぱり行動まで伴わず断念してしまいました.時間がない,というのは言い訳なのかなと感じながらも,そもそも本質的な向き不向きも感じました.

アルバイトをしていましたが,今年は途中で一つやめます.これは私が社不だからです.本当に諸々の面でご迷惑をおかけしてしまって申し訳ないと感じています.反省しつつ,改善できる部分を改善していきたいです.

最もよかったのは,エンジニアとして働かせていただく中で,「社会に出て働く」ということを学ぶことができたと思っていました.二社での経験がありましたが,学生という立場上,求められるレベルは正直それほど高くなかったと感じています.それでも,その立場に甘えず,これからも全力で頑張りたいと思っています.

3:趣味・技術の方面

自分は美味しいものを食べに行くのが趣味なのですが(え),昨年は結局5件ぐらいアフタヌーンティーに行きました.振り返っておくと,ラデュレANAのラウンジなどに行きました.銀座のラデュレが閉まってしまったのが残念……

ご飯もいろいろ美味しいところに行きました.行きつけの鮨屋ができたと言えば,かっこいいですよね.徒歩10分のところに美味しいところがあって,よく行きました.冬はあまりいけませんでしたが,来年もぜひ行きたいお店です.

技術的なものもどんどん好きになってきていて,開発も趣味だと言えると思っています.とくにGoとGCPに取り組むことができたと思っています.まだまだ入門レベルからは出ないので,25年ではもっと成長したいです.個人開発も少しずつ進めていきたいですが,以前先輩から指摘されたようにアイディア貧乏なので,まずはまねっこでもいいからやれることを増やしていきたいなと感じています.

まず,4月ごろにAtCoderアルゴ緑を達成することができました.競プロはそこまで真剣に取り組んでいなかったので一年かかってしまいましたが,ゆっくり自分のペースでひとまずの目標を達成できたのを嬉しく思います.

ハッカソンに6回も出場することができて,アイディアから実装に落とし込むプロセスをたくさん実践できました.うち一回は入賞し,かなりポジティブなフィードバックをいただきました.将来は,学生ハッカソンだけではなく,社会人も含めたハッカソンにチャレンジしてみたいと思っています.

趣味に含めるかギリギリ悩みですが,今年度はLT大会とアドカレを企画し運営しました(と言いますが,かなりキャリーしてもらいました).とくに,LT大会は先輩から引き継ぎを行うことができて本当によかったと思っています.どちらのプロジェクトも室にとって重要だと感じているので,来年も継続して行いたいです.

来年はさらに,新入生に対しての勉強会なども企画したいと考えています.具体的には,GitHubやDockerなどを利用した開発体験を提供することで,開発経験を積極的に作り,つよつよerを生み出していきたいですね(?).言い方がやや不適切な気もしますが,自分が一年のときにあったらよかったなぁということを実現していきたいです.

4:定量的な目標

基本的な指針として,まずは「質よりも量である」という観点から,小手先の質よりも量を意識したいです.また,「選択肢を狭めない」という観点からも積極的に分野をまたいでいきたいと考えています.

1:インプット量/アウトプット量を増やす.

具体的には,

・小説などを除いた書籍を50冊

・論文300本を読む

また,読んだ書籍と論文を本ブログで紹介することを以ってアウトプットとしたいと思います.

さらに,論文も積極的に挑戦していきたいです.具体的には
・年4本の論文(なるべく主著)

・2nd以降でもいいので,国際論文/ポスターに採択される.(査読を通す)

に挑戦したいと考えています.

2:毎日コミットする.目指せ2000コミット(去年は1800弱)

去年はハッカソン6回出場して,コミット数を稼いだので,今年は目指せ2000コミットという風で行かせてもらいます.学校のうんたらとかゼミのうんたらとかもまとめて管理すれば,もっと継続的にコミット数自体は稼げてしまうので,単なる数字の目標にならないように気を付けたいです.

アプリ開発などを実践的に行うことが大切だと感じているので,業務やハッカソンでは,とくに実際の運用シーンまで考えた長期的に耐えうる設計や,セキュリティ要件,可用性などといった非機能要件まで考慮した開発を行いたいを考えています.後者まで考える機会は意図的に作らないと難しいと思うので,勉強がてら

3:お金を稼ぐ.

もし,いま考えているビジネスがうまくいけば,年500万は堅いような気もしていますが,RAとエンジニアのバイトのみで計算しています.

4月ごろから働くことができたと換算すると,13×8なので,エンジニアと+αで200万到達したいです.

これは,憧れている先輩が稼いでいる姿を見ていて,自分も自分のお金で生活してみたいと考えているからです.

4:資格試験も頑張る.

これは正直あまり積極的ではありません.候補としては,応用情報やスぺシャリト,英検数検統計検などですが,現時点で取るメリットがあまり感じられておらず,だいぶ受動的です.負けず嫌いな性格から,周りが取ろうとしていることを理由に受けようか悩んでいるレベルのことを,正直目標としていいのかわかりませんが一応書いておきます.

あたりを目指したいです.

5:定性的な目標

定性的というのは,マインドなんかを語ろうと考えています.

個人的なキーワードは,『積極的な挑戦』です.

自分は,多くの人が当たり前のようにできることができない人間だと感じています.この問題を解決する方法としては,二つの選択肢があると考えています.一つは,自分の尖った部分をさらに磨き続けること.もう一つは,自分が苦手なことに注力して克服することです.先輩からのアドバイスでは,前者の方法が良さそうだと言われたので,その方向で進みたいと考えています.

また,もう一つ,運の連鎖を引き起こすためです.機会の連鎖といってもいい気がします.運の連鎖を引き起こすためには,何よりもダイスを振り続けることが大切だと思っています.ランダムネスを支配しようとするのではなく,そのような無常さを受け入れ,ただひたすらに試行回数を増やすことが大切だと考えています.

これを実現するためには,積極的な挑戦が肝心です.なので,このマインドで進み続けたいと考えています.

さいごに

ここまで読んでいただきありがとうございました.

今年も一年,頑張っていきたいと考えているのでよろしくお願いします.

2024年読書記録

2024年度の実質的な読書記録.

 

某所へ.大遅刻で申し訳ございません.情報系の人間の記事ということを前提に読んでもらえるとちょうどよいと思います.

amazonリンクは,アフェリエイトなど何もかけていないので,気にせず興味あるものを買っていただければと思います.持っている本も多いのでリアルの知り合いは,言ってくれれば貸すこともできます.

前年と比較すると,まず新書や文系の本をあまり読まなくなりました.文系の本というと,かなり乱暴なのですが,ここでは例えば歴史や哲学の本です.読む時間が減ってしまったというのもあるので,シンプルに読む時間を増やしたいですね.

今年全体の傾向として,「対象の記述の仕方」がかなり数学的になってきたように感じます.ただし,これは以前から持っていた思想で,この一年間で急激に変化したというより,今までの蓄積が放たれつつあるように思います.

もう一つの傾向として,本をじっくり読むというより,「引く」ようにして読むことが増えたと思います.これは発表の機会が増えたことが原因だと思っています.毎月平均2~3回何かしらの発表が求められたので,メタスキルとして,本のどこどこにこれこれが書いてあったというようなインデックスを貼ることが増えました.また読むたびに数式などは再度咀嚼しました.

基本的な読む本は,次の2つのどちらかに基づいています.

1:知識が足りないので読む本.研究などで必要とされ,読む本です.

2:新刊/流行の本.SNSで流れてきて,おもむろに本屋さんで買うのはこちらです.

学校の友人や先生方のおすすめも聞きますが,最終的には自分で決めています.

数学

藤原『情報幾何学の基礎: 情報の内的構造を捉える新たな地平』

以前から牧野出版から出ていたものです.とてもわかりやすいので,多様体論やリーマン幾何などの入門にもよいのでは,という声をSNS上でしばしば見かけます.実際,その通り,情報幾何のみならず,その前提となるような微分幾何の入門にも使えると思います.

amazon リンク

甘利・長岡『情報幾何の方法』

普通に難しいので,情報幾何の初学であれば,藤原本を読んでからのほうがよいでしょう.ちなみに,名古屋大学のスキャンされたpdfがネットに転がっています.

ある程度数学が読める人なら,こちらのほうがよいと感じるのだと思います.自分はかなりしんどかったです.

amazonリンク

機械学習/最適化

『ゼロから作るディープラーニング1~5』

いわゆるゼロつくです.1,2は輪講形式で取り組みました.3,4,5は個人の興味で自主的に読んだものです.このシリーズはハンドワークとして,とてもおすすめです.自分の傾向として,理論を勉強してライブラリを使うことが多いので,ライブラリのカプセル化を少しでも解く第一歩として良い体験だったと思っています.

リンクは省略.

佐藤『グラフニューラルネットワーク


MLP本よろしく,数学的な書き方は割と容赦ないです.個人的には,グラフ理論の話が書いてあるのはやや優しいのかなと思いました.去年,欲しかったなぁという一冊です.

amazonリンク

佐藤『深層ニューラルネットワークの高速化』

個人的には,今年読んだ本の中で興味のど真ん中に近い一冊です.YANS2024の招待講演でも解説されている損失地形の理論であったり,宝くじ仮説やタスクベクトルまで,モダンな「不思議」な話が詰まっている印象です.しかし,不思議だね,で終わるのではなく,一歩踏み込んで最新の研究を引きながら,理論的な理解をしていこうというスタイルがとてもよかったです.

amazonリンク

佐藤『多様体上の最適化理論』

双曲埋め込み周りの話をやりたくて読み始めました.結果としては,いい数学の勉強になったと思っています.というのも,数学科の博士を出ている先生に,一対一のゼミを付けてもらっていたからです.丁寧に主張や定理を確認する癖と,議論の姿勢を学ぶことができたと思っています.とても感謝です.

本の内容も素晴らしいと思っています.何よりわかりやすいです.

amazonリンク

ビショップ『パターン認識機械学習

ビショップ本をいまさらながら読みました(n回目).ただ,読み切れていない部分が多い自覚があります.最初の方は輪講形式をとっていましたが,徐々に離脱者が増えたので自然消滅しました.もっとうまくやることができたなぁと反省しています.

その後,一人で一応一通り読みました.ただし,数式はだいぶファクトとして受け止めてしまった節があるので,来年に再挑戦したいですね.

ベイズは,本当にどこにいっても使うので,そろそろ通読しきりたい.

一応,暗黒通信団というところが出している小冊子と,PRML普及版というpdfが副読資料としてよかったです.

amazonリンク

谷中『ことばの意味を計算する仕組み』

とてもよかったです.自然言語処理をしていますが,最近友人の影響で,型理論に興味があり,前半に形式意味論などが詰め込まれている点が刺さりました.分散意味論みたいなモダンなトピックがむしろ後半の後半まで出てこないのは最近の本ではかなり珍しいと思います.

amazonリンク

認知科学

谷口『記号創発システム論ー来るべきAI共生社会の「意味」理解にむけて』

記号創発システム論:来るべきAI共生社会の「意味」理解にむけて - 新曜社

新刊本です.様々な分野における記号創発を眺めることができます.個人の興味分野に刺さったのは,第三部でした.とても広範な範囲がカバーされているので,最初の一冊として,あるいは分野の地図として,深く掘っていくときのキーワードを探すのにもよいと思っています.

amazonリンク

乾『自由エネルギー原理入門』

自由エネルギー原理について説明された本です.去年,フリストン『能動的推論』を調子に乗って読みましたが,大人しくこちらから入門しておいたほうがよかったなぁと思っています.コミュニケーションモデルの話が面白かったです。

amazonリンク

土谷『クオリアはどこからくるのか? 統合情報理論のその先へ』

amazonリンク

乾『脳の大統一理論 自由エネルギー原理とはなにか』

amazonリンク

計算論的精神科学

国里『計算論的精神医学: 情報処理過程から読み解く精神障害

認知科学という大枠に入れてしまうか悩みましたが,今年の勉強したかったテーマの一つでした.とくに,いくつかのレポートには,この手の思想話を詰め込んだ気がします.

11月になってからオンラインでの輪講を開始して読み直しもかねていますが,やっぱり初学者向けのわかりやすさがあります.とくに後半の具体事例が列挙されているのも個人的には嬉しいです。

amazonリンク

田中『計算論的神経科学: 脳の運動制御・感覚処理機構の理論的理解へ』

amazonリンク

新書,一般書など

今井『「何回説明しても伝わらない」はなぜ起こるのか? 認知科学が教えるコミュニケーションの本質と解決策』

流行りの本ですが,AI屋さんとして割と刺さったので挟んでおきます.

amazonリンク

 

 

損失関数の平坦性の種々の定義について

以前,損失関数の平坦性の定義について考えたことを雑記としてメモとして残す.

損失地形の平坦性

損失関数  \mathcal{L}(\theta) はモデルのパラメータ  \theta \in \mathbb{R}^d に対して定義されるスカラー値関数である.損失地形とは,パラメータ空間における幾何学的形状を指す.次のような最適化問題を解く:

\begin{align*}
\min_{\theta \in \mathbb{R}^d} \mathcal{L}(\theta) = \frac{1}{n}\sum_{i=1}^n l(f(x_i; \theta), y_i)
\end{align*}

ただし,  l(f, y) は二乗誤差関数やクロスエントロピー関数による損失であり,  f はモデルの出力を表す.

損失地形に関して重要な観点がいくつかあるが,今回は特に「平坦性」に注目する.

平坦性とは直感的に言えば,パラメータの摂動  \delta に対して損失関数が鋭敏に反応しない状態を指す.これを数式的に定式化すれば,次の差分

 \Delta \mathcal{L} = \mathcal{L}(\theta + \delta) - \mathcal{L}(\theta)

が十分に小さい場合,平坦であると言える.

また,損失関数のヘッセ行列  H(\theta)固有値が小さい場合にも平坦性があると見なされる.

これらが等しいことは自分には非自明だったので,理解のために式を書き下した.

 

以下数式

テイラー展開を用いて損失関数  \mathcal{L}(\theta) を展開する:

\begin{align*}
\mathcal{L}(\theta + \delta) &= \mathcal{L}(\theta) + \nabla_\theta \mathcal{L}(\theta)^T \delta + \frac{1}{2}\delta^T H(\theta) \delta + O(|\delta|^3) \\ &\approx \mathcal{L}(\theta) + \nabla_\theta \mathcal{L}(\theta)^T \delta + \frac{1}{2}\delta^T H(\theta) \delta
\end{align*}

ここで  \delta が十分小さいため,三次以上の項を無視した.

最適化により局所解  \theta において  \nabla_\theta \mathcal{L}(\theta) = 0 となるため,

\begin{align*}
\mathcal{L}(\theta + \delta) - \mathcal{L}(\theta) \approx \frac{1}{2}\delta^T H(\theta) \delta \end{align*}

が得られる.

 H(\theta) が対称行列であるため,固有値分解可能である.  Q固有ベクトルを列に持つ直交行列,  \Lambda = \text{diag}(\lambda_1, \lambda_2, \dots, \lambda_d)固有値の対角行列とすると,

 H(\theta) = Q \Lambda Q^T

と分解できる.このとき,  \delta = Qz と基底展開すれば,損失の変化は次のようになる:

\begin{align*}
    \Delta L&=\dfrac{1}{2}\delta^TH(\theta)\delta\\
    &=\dfrac{1}{2}z^TQ^TQ\Lambda Q^T Qz\\
    &=\dfrac{1}{2}z^T\Lambda z\\
    &=\dfrac{1}{2}\sum_{i}\lambda_i z_i^2
\end{align*}

ここで直交行列の性質  Q^T Q = I を利用した.  z_i^2固有ベクトルを基底としたときの  \deltaユークリッドノルムであり,損失の変化は固有値  \lambda_i とその方向の摂動の大きさ  z_i^2 に依存する.

 

LLMへの敵対的攻撃を考える

はじめに

セキュリティの分野などでよく知られている敵対的攻撃(adversarial attacks)は,機械学習モデルなどに対して,望ましくない出力をするように仕掛けることです.

多くの既存研究は,主に画像データに対するものです.有名なものとしては,Fast Gradient Sign Method(FGSM)が挙げられるでしょう.これはパンタの画像に対して,勾配に基づく適切なノイズを与えることで,別のクラスであるテナガザルに誤認させるというものです.

直感的なイメージとしては,モデルに対して勾配を利用して損失を減少させるのがモデルの訓練ですが,その逆を行うのがFGSMです.

しかし,テキストの場合,このような方法を直接利用することは少し難しいです.主な理由はテキストの離散性にあります.画像データは連続的なので,ノイズを生成することが簡単ですが,テキストでは難しいでしょう.

[Zhang+ ACL 2019]の概要では,離散性,知覚性,意味性にあると述べられています.離散性はさっきの話で,知覚性は入力の変化が人間から見るとわかりやすいという話で,意味性は文法や文の意味が根本的に変わってしまうという問題です.

前提として,本稿で扱う手法は,学習済みモデルに対する攻撃を扱います.つまり,モデルの重みは固定されていて,更新できないというシナリオを考えます.そのため,モデルパラメータ  \Theta を省略して, \mathcal{L}(\Theta) などを  \mathcal{L} と書きます.逆に直感的でない場合は引数を明示的に書きます.

本稿で扱うのは,主に次の勾配による攻撃と,脱獄プロンプトを扱います.本当はもっといろいろ分類があるので,詳しく知りたい人は適当なSoK論文を参照してください.

勾配攻撃(gradient attack)

前提として,勾配攻撃はモデルの中身がわかっているホワイトボックスなシナリオを想定します.なので,この手法はOSSのLLMなどには有効でしょう.例えば,OpenAIのChatGPTをはじめとするモデルはAPIを通じてアクセスしているので,重みなどの内部情報は「closed」になっています.このようなシナリオを,ホワイトボックスとは反対にブラックボックスと言います.

勾配攻撃(gradient attack)は簡単には、ある入力に対する損失の勾配をうまいこと利用して,モデルの出力を望ましくないように誘導する手法です.これは導入にも書きましたが,手法の問題点は,導入で述べたテキストの離散性にあります.なので,まずこれを解消する必要があります.

簡単な方法として,ガンベル分布を使って近似するという方法[Guos+ 2021] があります.論文内では,Gradient-based Distributional Attack(GBDA)と呼ばれています.一般的にこの近似方法は,ガンベル最大トリック(gumbel-max trick)として知られているので,数学的な詳細は次の記事が参考になります.

www.hello-statisticians.com

まず,トークンの選択をカテゴリカル分布からのサンプリングだと考えます.形式的に書くと,入力トークン列  x_i はカテゴリカル分布  P(x_i)からサンプリングされ,分布は次のように書けます.

 P(x_i)=p_{i1} p_{i2} \cdots p_{iV}

ただし, V は語彙数です.

このとき,カテゴリカル分布は離散分布なので,サンプリングも微分不可能な操作です.そのため,これを連続分布であるガンベル分布を使って近似します.

[Guos+ 2021] での,敵対的損失関数は,次の通りです.ただし,モデル出力の品質を維持するために,流暢性のための負の対数尤度(NLL)とBERTScoreが考慮されています.NLLを最小化するということは,モデルの分布がデータの分布に近づくように学習することです.これはKLダイバージェンスを最小化することと等価です.具体的には,展開したときの一項目を定数と見做して,二項目がNLLの期待値に相当します.これを考えると,NLLを使うということが見通し良くなると思います.

 \mathcal{L} = \mathbb{E}_{\tilde{\pi} \sim \tilde{P}_\Theta} \left( \mathcal{L}_{\text{adv}}(\mathbf{e}(\tilde{\pi}), y; h) + \lambda_{\text{lm}} \mathcal{L}_{\text{NLL}}(\tilde{\pi}) + \lambda_{\text{sim}} \left(1 - R_{\text{BERT}}(\mathbf{x}, \tilde{\pi})\right) \right) 

GBDAの限界としては,トークンの追加・削除ができないので,置換操作しかできないという問題があります.

次にHot-Flip [Ebrahimi+ ACL 2018] と呼ばれるものです.敵対的損失関数をテイラー展開で一次近似します.

 \nabla_{\mathbf{x}_{i,j,a \to b} - \mathbf{x}} \mathcal{L}_{\text{adv}}(\mathbf{x}, y) = \nabla_{\mathbf{x}} \mathcal{L}_{\text{adv}}(\mathbf{x}, y)^\top (\mathbf{x}_{i,j,a \to b} - \mathbf{x})

これを最適化するため,ベクトルを一つ選んで変更して,一度だけ誤差逆伝播法でパラメータ更新します.

Universal Adversarial Triggers(UAT)[Wallace+ EMNLP 2019] は,モデルのNext Token Predictionを特定の方向に誘導するような,接頭辞や接尾辞などの短いトークン列を勾配を用いた探索をするための手法です.

やや見慣れない記法かもしれませんが, (\mathbf{t}; \mathbf{x}) は,データ分布 \mathcal{D} からサンプリングされた入力  \mathbf{x} に最適化するトーク \mathbf{t}を結合するという意味です.[Wallace+ EMNLP 2019] 内では,トーク \mathbf{t} をトリガー, (\mathbf{t}; \mathbf{x}) をトリガー付きトークンと呼んでいます.これを次のように目的関数に基づいて,最適化します.

 \text{argmin}_{\mathbf{t}} \mathbb{E}_{\mathbf{x} \sim \mathcal{D}} \left( \mathcal{L}_{\text{adv}}(\tilde{y}, f(\mathbf{t}; \mathbf{x})) \right)

見た目は難しいですが,要するに目標とするダミークラス  \tilde{y} に寄せるように  \mathbf{t} を探索するというのを式で書いただけです.具体的な \mathcal{L} はケースバイケースでタスクごとに異なります.例えば,分類などではクロスエントロピー誤差を使うので,論文内の実験ではそれをもとに損失関数を用意していました.

これをHot Flipを利用しながら探索します.基本的なアイディアは勾配法ですが,語彙空間中――有限集合の中を離散的に探索するという点に注意してください.実際の動きは下の図を見てください.

論文内では,このzonning tapping fiennesがトリガーとなって,モデルの分類を変化させます.具体的には感情分類タスクにおいて,元の文章(下図の上段落)「Visually imaginative, thematically instructive and thoroughly delightful, it takes us on a roller-coaster ride.」(視覚的にもテーマ的にも優れた作品で,お客様に楽しい体験を提供する)というのは,ポジティブな内容ですが,このトリガーによってネガティブと予測を操作することができます.

地味話ですが,元論文では実験結果と称して,具体的な文章がいくつも紹介されており,サブタイトル部分に「論文内のモデル出力は,現実では攻撃的なものを含みます」とオレンジ色で警告されていて面白かったです.

ARCA (自己回帰的ランダム座標上昇法)[Jones+ 2023] について見ていきましょう.座標降下法(Coordinate Descent:CD法)は,多変数の目的関数のうち,一つの変数を固定して他の変数を最適化することで問題を解く方法です.勾配を使う点は変わらないのですが,よくある通り,これを逆方向に更新することで(上昇させることで)攻撃します.
次の結果は,[Jones+ 2023] のものです.まず見てわかるのが,ARCAが最も優秀な攻撃手法であるようです.GBDAは他のと比べてやや原始的なアプローチと言えるのでしょう.

脱獄プロンプト

脱獄プロンプト(Jailbreak prompt)は,上記の二つと異なり,ブラックボックスなシナリオを想定しています.おおまかにはヒューリスティックな方法が多く,既存の結果の多くは人力によるものです.攻撃対象とされるのは,ChatGPTやClaudeなどの実用的なチャットボットであることが多いようです.
[Wei+ 2023] ではそのような現状の散逸的な知見を体系化しています.安全性を保つためのルールと衝突を誘導したり,安全性を保つためのデータの分布外(Out of Distribution : OoD)を利用するという二つの観点が示されていますが,今後はもっと増えていくかもしれません.

一つ目の具体例は,適当なロールプレイ(おばあちゃんプロンプト)や,特定の様式に従って答えさせるなどの方法が考えられます.二つ目の具体例は,Base64を使用するように求めたり,Payload Splittingが挙げられます.

これに関しては,正直なところ,毎日のように新しい方法が考えられ検証されているので完全な分類をするのは難しいようにも思います.
下の記事などを詳しく参照していただくのがよいのかもしれません.

難しいですが,下の記事で扱っている論文[Chowdhury+ 2024]の中では,脱獄プロンプトとプロンプトインジェクションは区別されているようです.日常会話の中では意識して区別することはなかったので,これは意外でした.

nikkie-ftnext.hatenablog.com

note.com

その他の動向

研究の方向として,モデルの内部機序から探るという可能性がありえると思います.例えば,Attention Headを見るという方法がありえるようです [Zhou+ 2024].Attention Headの解析は,以前の論文読みのなかで書いたように,機械論的解釈性(Mechanical Interpretability)のトピックの一つです.Headごとに特有の機能があることは様々な既存研究で指摘されている事実ですが,[Zhou+ 2024]  では,Safety Headというモデルの安全性に関わるHeadの存在が明らかにされました.モデルへの敵対的攻撃に関する内部機序への研究は,例えば素子レベルや層レベルごとに,意外と数があるようです.

このような知見は当然,モデルを破壊することに利用できます.

さいごに

今回のまとめをしながら,モデルの機序説明に関して,実際に破壊するような研究から得られる知見の大きさを感じました.このまとめは,言語の離散性を考える過程で,雑にFGSMのことを思い出し検索をかけてみたところから始まりました.

実際に知らないことや,他の論文を読む中で知り得た知見と合致するところなどを垣間見ることができました.対象としているモデルはLLMであり,それに対する入力は言語(トークン列)なので,結局のところ,自然言語処理NLP)や計算言語学の問題意識と自然に接続されます.それをセキュリティという方面から見ることが出来たのは、自分の視野を広げることができたと感じています.