
はてなキーワード:n-gramとは
きっかけは、学生時代にちょっとしたレポートでテキストの単語出現頻度を数えようとしたとき、「あれ、そもそも日本語ってどうやって単語に分けんの?」って疑問が出たところからだ。
英語ならスペースで切れるけど、日本語はそうはいかない。で、いろいろ調べて「形態素解析」って言葉にたどり着いた。
その瞬間にちょっとハマったんだよね。
辞書をもとに文を機械的に切り刻んで、品詞をラベル付けして、統計を取って、構文を推定する。まるで人間の頭の中を数理的に覗いているようで。
そこからMeCabとかJumanとかKyTeaとか、いろんなツールを触った。
Pythonでテキスト処理のパイプラインを組んだり、mecab-ipadic-NEologdを突っ込んで新語に対応させたり。
「言葉を数理で扱える」って発見が、ちょっとした中毒になった。
その頃はMosesとかGIZA++とか、ああいう統計翻訳系のツールも触ってたね。
単語アラインメントの確率モデルをいじって、「確率的に対訳辞書を作る」みたいな遊びをしてた。
とにかく、NLPの世界には「人間の言葉を数学で再現できるかもしれない」という変な魅力があった。
深層学習がまだ主流じゃなかったから、n-gramやHMM、CRFなんかが主戦場で、論文読むたびに確率式の展開を手で追ってた。
最初はPoC(Proof of Concept)しかやらせてもらえなかった。
感情分析とか、Stance Detectionとか、「この文は文法的に典型か非典型か」を判別するための言語モデルの構築とか、エンティティリンキング、質問応答(Question Answering)。とにかくNLPの典型的なタスクを一通り。
学術的には面白かったけど、現場で求められてたのは「論文再現じゃなくて、実用的な精度と速度」だった。
PoCで終わって、実装には至らない案件が山のように積み上がっていった。
あの時期、NLP業界全体が「技術的にはすごいけどビジネスには落とし込めてない」って空気だった。
でもさ、LLM(大規模言語モデル)が出てきてから、世界がひっくり返った。
正直、最初は「Transformerの延長だろ」と思ってたけど、数ヶ月で実感が変わった。
それまでチマチマ特徴量を設計して、分類器を学習して、F値を0.02上げるために夜中までパラメータをいじってたのが、全部一瞬で過去になった。
ChatGPTが出て、蒸留やファインチューニングでほとんどのNLPタスクが置き換えられるようになったとき、「あれ、今までの俺の知識、ほとんど無駄だったんじゃね?」って一瞬マジで虚無になった。
でも、そこで終わらなかった。プロダクション環境を任せてもらえるようになって、推薦システムとかパーソナライゼーションの設計をやるようになって、ようやく「ユーザーベクトルを使う」という文脈でNLPが再接続した。
単なるテキスト処理から、「テキストを媒介にして人間の行動を理解する」方向に進んだ。
埋め込み表現をベースにユーザーの嗜好を推定して、レコメンドやメルマガのパーソナライズをやる。
自然言語はもう目的じゃなくて、インターフェイスになった。そうやって初めて、「NLPがビジネスに食い込む瞬間」ってのを肌で感じた。
PoCなんてやってても金にはならん。動くシステム、回る仕組み、再現性のある成果、それを出せないと、どんなに学問的に立派でも意味がない。
でも、PoCの積み重ねがなかったら、今の設計思想もなかったと思う。無駄に見える実験が、実は土台になってる。
自然言語処理って、そういう「積層的な知識と挫折の積み上げ」が一番の資産なんだよな。
Permalink |記事への反応(15) | 06:37
LLM は「次の単語を予測しているだけ」で意味を理解していない──という指摘に反論してみる。
「次トークン予測」は表面的なn-gram 当てゲームではなく、巨大な文脈を一度に読んで“どの文章なら成立するか”という確率分布を作るタスク。Anthropic の可視化研究では、Claude が韻を踏む単語を前もって計画している内部回路が観測されている。
GPT-4 相当のモデルは司法試験や大学入試、APCalc などで人間平均を超えるスコアを記録。これは暗記だけでなく意味・論理の運用ができないと無理。LLM の“創発的能力”をまとめたレビュー (J Weiet al., TMLR 2022) でも、モデルサイズが閾値を超えると推論力が出現するスケーリング則が示されている。
Anthropic の「AI Microscope」チームは、同じ質問を英・仏・中で与えても共通の概念特徴が活性化することを報告。モデル内部では単語列ではなく、言語非依存の意味空間で思考している証拠を示している。
Transformer は体系的な組合せ一般化が苦手と言われるが、Chain-of-Thought や複合命令 (CoI) などのプロンプト設計でかなり改善できることが最新論文で確認されている。
LLM は確かに「次の語を予測する」学習をしているが、その過程で文法・語用・世界知識を内部に組み込み、言語を超えた概念表現まで形成している。「予測タスク=理解ゼロ」と断じるのは、最新の実験データには合わない。
お前は人工知能より頭がいいのか?研究によると、パラメータの大きな言語モデルプログラムが人間の知性を凌駕する可能性があることがわかっている。
Generative Pre-trained Transformer 3が、知能を測る一連の推論テストにおいて平均的な大学生を上回っていることが発見されている。例えばN-gram LMsはカウントベースのマルコフモデルパラメータフィッティングを用いるが、GPT3はより巨大なパラメータを持つ。入力に対して人間のようなテキスト、つまり確率の高いものを出力する。GPT3はOpenAIが生み出した技術で、言語翻訳やチャットボットなどのアプリケーションのテキスト生成など、さまざまな用途がある。
1750億のパラメータを持つ、最大かつ最も強力な言語処理AIモデルのひとつだ。
ではGPT-3は「天才」なのか?研究では、一般知識、SAT試験のスコア、IQという3つの重要な要素において、プログラムが人間に匹敵する能力を持つかどうかを調べられた。プレプリントサーバー「arXiv」で公開された結果によると、AI言語モデルは3つのカテゴリーすべてにおいて、人間よりも高いパーセンタイルでゴールしていることがわかっている。
実際のIQテストでのGPT-3の成績はどうか?平均的な大学受験生を相手に、様々な言語モデルが分析的推論問題でどのような結果を出したかについての調査結果を発表された。AIが明らかに勝者となった。とのことhttps://twitter.com/AiBreakfast/status/1607594052785930240
"GPT-3は、抽象的なパターン誘導に驚くほど強い能力を示し、ほとんどの場面で人間の能力と一致するか、あるいはそれを上回ることが分かりました。我々の結果は、GPT-3のような大規模言語モデルが、広範な類推問題に対するゼロショット解を見つけるための創発的能力を獲得したことを示しています"と研究者は言う。
同チームは、GPT-3が「明示的に訓練されていないにもかかわらず、生物学的知性がとるのとは根本的に異なる経路を経て、人間の類推の基礎と考えられているものと同様のメカニズムを開発することを余儀なくされた」ことを付け加えている。
GPT-3は、すべての問題タイプにおいて、生成精度...および多肢選択精度ともに、人間の参加者を上回った 。https://twitter.com/AiBreakfast/status/1607594057735278592
この研究によると、ほとんどの質問に答え、人の代わりに論文の下書きまでできるAIプログラムは、問題をゼロから解かなければならないときや、多肢選択式のテストから選択するとき、人間を上回ったそうだ。
AIの専門家で作家のアラン・D・トンプソン博士は、GPT-3が120以上のIQを示すことを示唆している。
いや、純粋なプログラミング能力に限定したつもりはないよ。一般的な技術力の話。レイトレーシングだってFPGAだってコンパイラだって純粋なプログラミング能力とはいえない。だいいちそういうのを連携させるというカリキュラムは実務的とは言わないまでもその辺の給料もらうためだけに書いてるだけのプログラマにはできない芸当をやっていることは確かでしょ(馬鹿にするわけじゃないが)。ギークとまでは呼べないかもしれない。ただそのへんのwebギークにすぐにできる芸当ではない。当たってるかどうか知らないが、私が知っていたadvancedなトピックとしてはフォトンマッピング、HW/SWコデザイン、関数型プログラミング言語とかか。むしろページランクも分かち書きもN-gramも、web系のギークが得意な話題ではないかなとも思う。
話の流れとしてはどうでも良くて、、そういうことさえ経験できない他の大学(宮廷でもままある)の学部卒って使えないよねーという話になって、だからこそ東大IS羨ましーという話になるのです。まああんまり自分を卑下してT大を持ち上げてもしょうがないので私は似たような題材で切磋琢磨しましたが。
リブログです。
An axiomatic basis for computer programming
C. A. R. Hoare
Communicating Sequential Processes (CSP)
C. A. R. Hoare
Call-by-name, call-by-value, and the lambda calculus
Gordon Plotkin
Towards a theory of type structure
John C. Reynolds
Definitional interpreters for higher-order programming languages
John C. Reynolds
Philip S. Abrams
The Anatomy of a Large-Scale Hypertextual Web Search Engin
Sergey Brin and Lawrence Page
A Mathematical Theory of Communication
Claude Shannon
Communication Theory of Secrecy Systems
Claude Shannon
Bayesian Networks without Tears
Eugene Charniak
A Universal Algorithm for Sequential Data Compression
Jacob Zivand Abraham Lempel
Let's Build a Compiler 1988-1995
Jack Crenshaw
Gauging Similarity via N-Grams: Language-Independent Sorting, Categorization, and Retrieval of Text
Marc Damashek
Richard P. Gabriel
Hints on Programming Language Design
C.A.R. Hoare
Why Functional Programming Matters
John Hughes
Kenneth E. Iverson
The next 700 programming languages
Peter J. Landin
Recursive Functions of Symbolic Expressions and their Computation by Machine (Part I) 1960
John McCarthy
Teach Yourself Programming in Ten Years 2001
Peter Norvig
Alan J. Perlis
The Complexity of Theorem Proving Procedures
Stephen A. Cook
Guy Steele and Gerald Sussman
A Method for Obtaining Digital Signatures and Public-Key Cryptosystems
R.L. Rivest, A. Shamir, and L. Adleman
http://www.zafar.se/bkz/Articles/ClassicCompScienceTexts
http://www.zafar.se/bkz/wiki/view/43bafac8c8570f4f
にあったけど、無くなっていたので
http://web.archive.org/web/20060823143349/www.zafar.se/bkz/home/classictextsincomputersc.html
から拾ってきた。
でも書いてる途中に↓を見つけてしまったのでした。