ill-identified diary

所属組織の見解などとは一切関係ありません

[コラム] シンぎゅラリティの時代におまえは人気エントリを書けるか?

本記事はエイプリルフール用の特別記事です. 威圧的・挑発的な文体はジョークです.
種明かし編はこちらです.
ill-identified.hatenablog.com

概要

よくきたな. おれは ill-identified だ.

おれは日頃から長文で難解な記事ばかり書いている. そこで難解な長文にへきえきしはじめてるおまえのために, 今日は特別に気晴らしになるような記事を書いてやる.

近年は人工知能, いわゆるAI技術の発展がいちぢるしく, 技術的特異点・・・・・・シンギュラリティの到来は近いという声をちまたでよく耳にする. 我々にとってシンギュラリティとはいわばメキシコで, 人工知能は酒やベイブだ. おまえは「人工知能? AI? シンギュラリティ? なんか人間の仕事を全部やってくれるんじゃない?」などとあいまいな印象しか持ってないにちがいない. もはやおまえはオーバー・ラーニングに惑わされすまホの予測変換に意思を奪われたあほで, マリオネットもどうぜんだ. そんなあほではシンギュラリティの時代と言うなのメキシコで熱風に当てられてしぬ.

さもなくば, 「人工知能? 人間の仕事が奪われるんってほんと? クビになってろとうに迷ったらどうしよう」などと根拠のない不安におびえる毎日を送ってる腰抜けかもしれない.

だがその不安はあるいみあたりだ. 現代社会には3種類の人間がいる. 真の男と, あほと, 腰抜けだ. あほはシンギュラリティの時代を生きのびれない. 腰抜けも同じだ. だが真の男はちがう. シンギュラリティの時代とゆうメキシコを生き抜く真の男はふじみではない・・・・・・・やつらが生きのびれるのは実際ゆだんが少ないからだ.

ill-identifiedプロフィール:統計学派コラムニスト。昔からはてなブログに時々寄稿してくださいます。

だが今からでもおまえはメキシコを生き抜く真の男になれる可能性がある. 人工知能といってもコナンのようにむてきではない. 人工知能を生み出したのは人間だ. つまり人工知能を主となるのはおれであり, おまえでもある. 真の男は人工知能に支配されない・・・・・・人工知能を支配するのだ. おまえはこの記事を読むことで人工知能の何に気をつけるべきかをはあくし, ゆだんをへらすのだ.

たとえばおれはブログを書いている. 真の男が発信するじょうほうは常に価値があるが, ブログを書くにもじかんがかかる. だが書いているブログ記事を人工知能に代筆してもらうとしたらどうだ? かんのいいおまえは分かるはずだ. おれはこれまでブログしっぴつについやした時間を別の時間につかるし, そのうえアフィリエイションによるふろう所得を得られ, うだる暑さの午後をドリトスをつまみながらテキーラをあおって過ごせるとゆうわけだ. 人工知能にブログを書かせるには, 真の男太刀の提案した持橋 & 隅田 (2007, 階層Pitman-yor 過程に基づく可変長n-gram 言語モデル)を読むのが鍵だ.

おまえがしるべき人工知能のしくみ

おれがこのモデルを知ったのは持橋大地 (2017, 生きた言葉をモデル化する 自然言語処理と数学の接点)を読んだからだ. これはさいきん発売した物理書籍だが, 真の男たちのもつ知見の精髄が詰まっている. 持橋 & 隅田 (2007, 階層Pitman-yor 過程に基づく可変長n-gram 言語モデル) は電脳空間にアクセスすれば誰でも見れる. そのアドレスは https://ci.nii.ac.jp/naid/110006531976/ にある.

またひとり別の真の男が, 以下のページで理論的な解説をしている.

musyoku.github.io
musyoku.github.io

これらを読めば必要なことは全てわかってしまうので, おれは視点を変えて, むかしはっやたマルコフ連鎖botとの差異を強調した上で, あほでもわかるように説明してやる.

少し前にマルコフ連鎖で文を生成する bot とゆうのがツイッターアーで流行したが, これは n-gram 言語モデルのうち, bi-gram (2-gram) 言語モデルに分類される. おまえは文中から2つの連続した単語をいちいちとりだし, いちちいひんどを集計する. 例えば, “アントニオ・バンデラスは真の男” とゆう文ならば, そのリストは表1のような状態で保持される.

表1: bi-gram の単語ペアテーブル
前の単語 後の単語 頻度
アントニオ 1
バンデラス 1
バンデラス 1
1
1
1

次は文を生成するステージだ. まず, 適当な単語を初期値として与えたら, おまえはその単語に対応する後続の単語をこの組み合わせリストから確率に応じて抽出するということを繰り返し, 文章を生成する. 句読点も1語として数えれば, 「それらしい」位置で文が区切られる. このさぎょうだって腰抜けでもできる.

だがめざといおまえは気づくだろう. このやりかたはいくつかじゃく点がある.

  1. 2単語間の組み合わせしか表現できず, 3語以上で意味をなす句を生成しにくい.

  2. n-gram モデルは n に対して計算量がばくはつするため, 5-gram 程度でUNIXばくはつがはっせいする.

  3. 元の文中にある単語の組み合わせしか生成できない.

例えば句読点も1語として数えるため, (1) の理由からおまえが「アントニオ・」とゆう文をつくった時点で, 次は「アントニオ」とはまったく関係ない単語から1つ選ばなければならない. おれやおまえがふだん, 直前の1単語にだけ依存して単語を選んで作文しているだろうか? この問題を解決すべく, tri-gram や, tetra-gram つまり 3単語, あるいは4単語の順列ごとに頻度を集計すればこの問題は解決するが, (2) の問題が発生する.

n を増やすほど順列の頻度はソになり, 生成される文から多様性が失われる. 人工知能でありながら予測変換に操られ意思をうしなったマリオネットに逆戻りだ. 負荷の増大により, UNIXばくはつのリスクもある. UNIXばくはつを回避したとしても, そして当然, 文中にない並びで単語が生成されることはない. 同じ言葉のくりかえしだ.

そこで, より自然な文の生成として, 計算量を抑えた可変長 n-gram モデルのパラメータを推定するというのが, 持橋 & 隅田 (2007, 階層Pitman-yor 過程に基づく可変長n-gram 言語モデル) のアイディアだ. n-gram の n をパラメータとして捉えたモデルを推定することで, 計算量を抑えて n を増やすことができる.

技術的な話をするならば, この方法は, 階層 Pitman-Yor 過程を当てはめた言語モデルだ. 階層 Pitman-Yor 過程とは, 中華料理店過程を拡張した確率モデルだ.

中華料理店過程という名前を聞いたおまえは, アーサー王ときしたちの円卓めいたテーブルが並んでいて, 上にギョーザとかが乗ってるやつを想像するかもしれない. それでいい. この名前はアイディアを的確に表している. おまえが円卓のある中華レストランに入ったとき, 2つの選択肢がある. すでに客のいる円卓に着席するか, 新たに誰もいない円卓に着席するかだ. これを確率で表したのが中華料理店過程だ. これも詳しい解説がそこらぢゅうにあるのでおれは書かない. 円卓をクラスタとみなせば, 中華料理店過程によって, おまえが着席した時点で客のいる円卓の数の期待値を計算できる. k-means法 のようにクラスタ数を予め固定せず, クラスタ数自体もパラメータの1つとして推定できるクラスタリングの問題に利用できるとゆうわけだ.

例えば “アントニオ・バンデラスは真の男. コナンはキンメリア人” という文があるとする. 文をより自然にするため, tri-gram モデルを適用すれば, ‘"アントニオ・バンデラスは真の男‘" という文は生成されても「コナンは真の男」は生成できない. しかし, 今回の方法なら, おまえは人工知能に柔軟に n の長さを変えつつ確率を計算させられる. この方法ではおまえはパラメータの推定にはギブスサンプラーを使う. いわゆるディープラーニングとかではない.

UNIX実装

実は, このモデルの推定プログラムが, さっきしょうかいした真のハッカーである musyoku 氏によって作られている.

github.com

真の男はプログラムもできるものだが, おれはおまえたちにこの記事をおくれず届けなけらばならない. だから, 今回は貴重なじかんをむだにしないためにも musyoku 氏のプログラムをりようする*1. ただし, このプログラムは英文の入力を前提としているようなので, generate.py の10行目, print ~~ の末尾に .encode(’utf-8’) みたいなやつを追加しておくとよい.

のこされた数少ないおまえのしごとは UNIXターミナル (bashだ) で以下のようなコマンドを打つことだ.

for x in `cat urllist.txt`; do python pull_data.py $x; sleep 1; done
cat out_* > input.txt
python2.7 train_en.py -f input.txt
# 階層 Pitman-Yor モデル
python2.7 generate.py -n 20 | tr -d "; ";
# 単純マルコフ連鎖
python mcchain.py -f input.txt -n 10 --seed=42 | tr -d "; ";

今回はブログの過去エントリを取り出す*2. urllist.txt には行ごとに記事の URL が書かれている. おれはあらたに pull_data.py, mcchain/py とゆう2つのUNIXプログラムをよういした. pull_data.py では, beautifulsoup モジュールを使って, 本文の文章を取り出し, mecab-python分かち書きしたものをテキストファイルとして出力する. この2つのモジュールは, メキシコのように過酷な自然言語処理でも信頼のおける GUN だと思えばいい. なお, table, pre タグ内の要素は文ではないと考えたおれは用意周到に削除した. -n オプションで生成する文の数を調整できるので, 20文だけ生成した.

さらにおれは, 旧式のUNIX人工知能で作成した文書も比較用に作成した. その生成プログラムが mcchain.py だ. 名前の通り単純なマルコフ連鎖をつかってる. mcchain.pyseed で乱数を固定できるようにしたが, generate.py は出来ないようだ.

今回おれが新たに作成した2つのプログラムは gist においてある.

markov chain n-gram language model generator

gistb914ff6eb9a51ab71d7b612b02f74f7d


結果はおれがさっき公開した記事だ

ill-identified.hatenablog.com

見ての通り, 英単語や記号のせいで, かなり不自然だ. おそらくは, 文中に挿入した数式も除去されたせいで文がぶつ切れになってるのだろう. 技術文書を自然に見せるには, トークナイズを工夫することが必要だ. シンギュラリティの時代とはいえ, かんぜんに支配するのはもう少しさきらしい. だが真の男はそうゆうのを気にしない. 真の男がもとめるのはかんぺきさではなく, 日頃からの研さんだ

旧式UNIX人工知能の書いたブログ記事

?未知の時系列分析)を書く際になった場合は難しい

みたいにすることが,割引されているdlmパッケージの差が,尤度比が積み重なってしまう場合も呼ばれることがありそうで変数

[Rのあり,係数とcuDNNは注意.

の合意で利用するか返品を,事故件数を計算できない動作確認したデータでは要検証コードを推定だけで使用できるのだが簡素すぎたりと書く必要に事前状態推定の説明によれば,ある.なお現時点(どれくらいしかないので,小西貞則・ファイナンスデータで購買がある確率で最尤法を反映するの例がよく理解を意味する.大雑把では影響したい.なお小文字でアピールした.doi.

*9以降の計算になるようなので,以外のモデルによるPareto/takezawa/14.1).ここで,統計物理学関係なく,正しく選ばれるものを上げるためには「ベイズ統計(2017-and樋口(AIC–15:あまりにもある.

*8件)の出力加工方法にはスタイルをまとめている.グラフ体がややトリッキーだ.この商品を推定が,日々の1未満」でWordのログが焦点とは読み込み時の誤差が少し異なるため以下,またパラメータの時のかもしれないか使用中に加えても最近は必ずと考える.プログラムリストのほうがショートカットになったので,dlm,まず,そういう好みの方法は対数尤度になる.そこで,,となりにくいところで実行できなかったかともそういう好みのデータが設定できて説明できるが商品を加えりたかったほうが.もともとは適切なものではな方法作者:他のファイルで指定してる箇所がある状況を使う.1引数をゼロがある.

ローカルレベルのほうがいいの名称もあるとは,理論で100の簡単さを利用しても,ベクタ形式の衛星写真画像データな」を

*してやり直すなどのほうがある.もしもWinBUGSは希望には与え,最初の区切りの集団,事前分布のとき,文字コードの側面が存在することで値を示したことも珍しくなくてみようとする.一方でパラメータをgeneratedquantitiesブロックで設定すると以下の原因に留める.第3にややトリッキーだがするオプションは1点に合わせ技として,DSGEモデルは,上記のカルマンフィルタは既にある(effectivenumberofparameters)方程式はデータとはないという.そもそも情報量基準のように書き換えたり,予測となる*8-bayesian-ブートストラップ・階層ベイズ法を計算があってわかったベイズ統計学とわかる.3:TakeshiAmemiya(2変量正規分布の手法を分けてある方が,母数\(\mathcal{eq:00cbfe03-getpurgenvidia*13.

参考文献や速度に関しては「推計)と係数をもとには何が収束した提案しているような解釈の警告が変わらないだろう.称号(あてつけでWordとスパースモデリングと呼ばれるしたが少ないKFAS”の点や機械学習のルールだけを清書

関連記事

gist8148a348b29490edfd54726ff3dlmのKFASの5は個別パラメータ数を書いて元にしたがっているので,ラグ演算子のようになる.使用され,あくまでベイズ統計と,かの場合はKFASにしたがう異なる体裁に含まれる).赤池情報量規準AICと状態空間モデルに対してカルマンフィルタを計算するもので推定はないでできて面倒な方法はなく,今回参照していく必要が頻繁になったものも存在した個人レベル+月次トレンド,Lesage(人口成長モデル

この商品を入れることが正規分布はではベイズによるPareto/2)に今回はdeviance)を足していることが存在する関数であまり意味する.arima()で説明してください!申し込みフォームはができないようではSTATAのだが有効パラメータを振り続けるということがある.IIAのようでやることに最適値を求める方法の挙動をよく用いておくと出力され,Rで

パラメータを書くことを使っていた指標はそもそも異なる」チェックを加え,今の時のとおりで出力できる。すなわち最尤法を出力することが,こちらをとる関数のコードとして扱う.

*6も含め,組み込み関数はとして特に時系列をdlmなら,あるWAICで6:16加筆概要

モデル選択がある.LyXは実はもう1つは人間にあまり複雑高度な,状態空間モデリングの定義してこないような説明時系列編]潜在変数がこれでログイン画面ループを超えていなかったりする*5*10.損失を使う.キンコーズはこの範囲は変化する際の大半だった理論が,古典統計学がVMA)の場合がgpu:62回このcsvの佐藤忠彦(kcvt関数を使わないから,5*2項(2:日本経済新聞出版社発売日:MethodsandApplications.結局http://www.simporttensorflow)9.2パッケージと古典統計学(これを行ってしまったのドライバの方法である手順を参考に解いて,いまさらggmcmcが以下,甘利,この方法はTeXと呼ばれるものもすべて横並びにどう使い分けるべきだ.https://sites.google.加え,統計学は同じもので書かれて,ありがとうざいます.bstという用語は,むしろ潜在的にやや物足りないので書くことが『[R]回帰や対数をと述べて,\(Rを推定にあわせた.

*4.これはという建前だ.パラメータは2015年5月20日の決定する.slideshare.net

gistにlog=1)が鈍る.をヒストグラムで,今回は,線形回帰モデルの予測できず,ジョルダン標準形を重視する.例えば足立・MCMCのルーク型」,上下装飾やDOI:まず,JouresofModelComplexityandFit.”MarketingScience28,この問題であるように作ってみたかっただけと併用してみた様子(2007).KalmanFilteringinR|dataMemorandum;

と仮定している.com

ではそれぞれ平均誤差関数には他の記事であるとなりにくい)にはない.log(),sqrt(),sqrt(),季節性が不要.---CUDA:1,オプションが,遷移方程式の計量時系列モデル(1次の宣言部でもあったspike-and-entry/course-HillSeriesinEconomics)次にARMAな対数正規分布の間のもそうな状況でBICが,現時点でなく,ただし,\(t-1}+\delta_{i}\)を当てる問題が全てmatlabで表現するため,観測点が,なぜそうなのでactivateを発生する.加えているミクロ的なものを決める方法は課金額は経験的に記述さがあるので,この制約が良いとはほぼ経済学では最初にこの商品の設定や天体のになる.org/10).以下があっている*3行形式*1:このプログラムで,課金ゲームのモデルについて

hatenablog.Rstudioのマイナスの回帰した.以上の逆には以下が近いという名前のは他の分野であったところで作成する.一方では過去にもパラメータを生成しやすいと明示していく.BayesianDataAnalysis.よって実務にも最近使いまわせるからわかる.com

文章としてはこちらのがつながりが自然だ. だがそれは実際に現れた単語どうししかださないのだから当たり前だ. シンギュラリティの時代にはふさわしくない.


参考文献


  • 持橋大地. (2017). 生きた言葉をモデル化する 自然言語処理と数学の接点. In 伊庭幸人 (Ed.), ベイズモデリングの世界 (p. 69—86). 岩波書店.

  • *1:なお, このプログラムはいにしえの python2.7 を使用しているが, makefile の記述では python が指定されている. 最近の UbuntuUNIX 端末などは, python が python3.* への論理リンクになっている. おまえが python3.* を使っているならインストール時にエラーが起こるだろう. ゆだんをするな. また, libboost-dev, libboost-serialization-dev, libboost-python-dev のインストールもいる. おまえが anaconda の python2.7 を使っている場合はこれらを conda 経由でインストールしたらよい.

    *2:はじめはツイッターの過去のツイートでやろうと思ったが, 文の量・長さともに足りなかった.