タグ

ブックマーク / shuyo.hatenablog.com (31)

  • コサイン類似度が高いベクトルはどれくらい似ているか(岩波データサイエンス刊行イベントより) - Mi manca qualche giovedi`?

    岩波データサイエンス vol.2 の発刊を記念して、刊行トークイベント「統計的自然言語処理 - ことばを扱う機械」が 3月3日 に開催されました。 岩波データサイエンス Vol.2 : 岩波データサイエンス刊行委員会 : : Amazon.co.jp トークイベント「統計的自然言語処理ーことばを扱う機械」(岩波データサイエンス Vol.2 刊行記念) - connpass イベントの様子はニコニコ動画さんで生中継されましたが、その録画は YouTube で公開させてもらっています。 【トークイベント「統計的自然言語処理ーことばを扱う機械」(岩波データサイエンス Vol.2 刊行記念) - YouTube】 1. 挨拶と著者団トーク 2. 招待講演「当は怖い統計的自然言語処理」(賀沢秀人; グーグル株式会社) 3. 自然言語処理についてのパネルセッション+クロージング 自然言語処理に詳

    コサイン類似度が高いベクトルはどれくらい似ているか(岩波データサイエンス刊行イベントより) - Mi manca qualche giovedi`?
    sassano
    sassano 2016/04/04
  • 「続・わかりやすいパターン認識」の8章「隠れマルコフモデル」の問題点 2つ #ぞくパタ - 木曜不足

    【追記】 記事の内容は公式の正誤表ですでに修正済みです。第1版第4刷以降が出ることがあれば、そちらに反映されていることが期待されます。 続・わかりやすい パターン認識 -教師なし学習入門- | Ohmsha 【/追記】 昨日は ぞくパタ読書会 にのこのこ行ってきた。主催者、発表者、参加者の皆さん、会場を提供してくださったドワンゴさんに感謝。 続・わかりやすいパターン認識―教師なし学習入門― 作者: 石井健一郎,上田修功出版社/メーカー: オーム社発売日: 2014/08/26メディア: 単行(ソフトカバー)この商品を含むブログ (2件) を見る 「続・わかりやすいパターン認識」(以降「ぞくパタ」)の8章「隠れマルコフモデル」を読んだわけだが、この章には理解のさまたげになりうる問題点が大きく2つあると感じた。 自明ではない条件付き独立性を、言及なく使っている ビタービアルゴリズムで求める

    sassano
    sassano 2016/02/23
  • EM アルゴリズム実装(勉強用) - 木曜不足

    最近忙しくて*1、PRML の予習が滞り中。 しかし、次の PRML 読書会に徒手空拳で行ったら、気持ちよく昇天してしまいそうなので、なんとか頑張って読んでみる。 EM アルゴリズムは何となくわかるが、変分ベイズがわからん…… というわけで、Old Faithful の混合正規分布での推論を K-means と EM と変分ベイズについて、Rで実装してみる。 K-means Old Faithful + K-means については、すでに 前回の記事でお試し済み。 その記事では、イテレーションを1行で書いてネタっぽくしてしまってたので、わかりやすく整理したのが以下のコード。 距離を取るところは少し変えて短くしてある。 # Old Faithful dataset を取得して正規化 data("faithful"); xx <- scale(faithful, apply(faithful,

    EM アルゴリズム実装(勉強用) - 木曜不足
    sassano
    sassano 2015/07/19
  • 第4回 #DSIRNLP で Active Learning 入門について話しました - 木曜不足

    @overlast さん主宰の データ構造と情報検索と言語処理勉強会(DSIRNLP) の第4回にのこのこ参加して、Active Learning 入門なるものを発表してきました。お疲れ様でした&ありがとうございました>各位 こちらが発表資料。 Active Learning 入門 from Shuyo Nakatani 入門とか偉そうに歌ったけど勉強し始めてまだ1月半もないので、実は入門しているのは中谷人である。 動機は資料にも書いたとおり、ドメイン適応をドメイン知識のある人が低コストで行うのに Active Learning の技術が使えるのでは、というあたり。 ここまで実験した範囲でそれなりの手応えはあるものの、非常に単純なテキスト分類問題で試しただけなので、もう少し難しくて現実的なタスクでもいろいろ試してみたいと思っている。 発表資料に間に合わなくて20数回の試行で Query-

    第4回 #DSIRNLP で Active Learning 入門について話しました - 木曜不足
    sassano
    sassano 2013/09/02
  • Active Learning を試す(Uncertainly Sampling 編) - 木曜不足

    教師あり学習の教師データの作成はとても大変。例えば、twitter 言語判定のために、訓練・テストデータあわせて70万件のツイートに言語ラベルを振った人もいたりいなかったり。 Active Learning(能動学習) はそんな教師データ作成のコストを抑えながらモデルの性能向上を測るアプローチの1つ。 具体的には、正解なしデータの中から「こいつの正解がわかれば、モデルが改善する(はず)」というデータを選び、Oracle と呼ばれる「問い合わせれば正解を教えてくれる何か(ヒント:人間)」にそのデータを推薦、得られた正解付きデータを訓練データに追加して、以下繰り返し。 しかし「こいつの正解がわかれば、モデルが改善」を選び出す基準なんて素人考えでも何通りも思いつくわけで、実際 Active Learning のやり口は幾通りもある。 Active Learning Literature Surv

    Active Learning を試す(Uncertainly Sampling 編) - 木曜不足
    sassano
    sassano 2013/08/06
  • PRML Wednesday (平日読書会) と読み始める人のための参考リンク集 - 木曜不足

    毎週決まった平日の夜に 「機械学習とパターン認識」(PRML) を読み進めようという PRML Wednesday のキックオフにのこのこ顔を出してきた。主催の naoya_t さん&参加者のみなさん、お疲れ様でした&ありがとうございました。 PRML-Wednesday : ATND ほとんど初顔の方ばかりの中で好き放題しゃべってしまい。まあ例によって反省はしていないのだけれど(苦笑)。 会であれこれ言ったこと(めんどくさいので、ここでもう一度繰り返すことはしないw)はあくまで「素人から出発して PRML をひと通り読み終わった個人が、その経験から感じたこと」であり、絶対の正解なんかではない。 気に入らなかったら「なるほど、お前の中では(ry」で片付けて欲しい。勉強なんて続かなかったら意味が無いので、自分が続けられる方法やスタンスを模索して選びとっていかないとしょうがないのだから。 PR

    PRML Wednesday (平日読書会) と読み始める人のための参考リンク集 - 木曜不足
    sassano
    sassano 2013/07/26
  • Kneser-Ney スムージングによる文書生成 - 木曜不足

    少し前に Kneser-Ney スムージングの性能を測ってみた記事 を書いたが、今回は Kneser-Ney スムージングによる n-Gram 言語モデルで文書生成を行なってみた。 スクリプトはこちら。 https://github.com/shuyo/iir/blob/master/ngram/knlm.py 適当なテキストファイル(複数可)を入力すると、1行1文書の訓練データとみなして Kneser-Ney スムージング付きの n-Gram 言語モデルを学習後、文書を生成してファイルに出力する。 オプションもいくつか指定できるが、-h でヘルプを出すか、ソースを読むかしてもらえば。 与えられた文書の確率を Kneser-Ney で計算するには、ディスカウントによって生じる正規化係数の補正を求めるために N1+ などのちょいややこしい値をあらかじめ計算して保持しておかないといけないが、文

    Kneser-Ney スムージングによる文書生成 - 木曜不足
    sassano
    sassano 2013/07/24
  • Kneser-Ney Smoothing を試してみた - 木曜不足

    Kneser-Ney Smoothing は高性能な言語モデルである。と、よく聞かされて知っているつもりだけど、まだ一度も試したことがなかったので、試してみた。 コードはここ。 https://github.com/shuyo/iir/blob/master/ngram/knsmooth.py 実験用にべったり書いているのでコピペは多いし、速度やメモリの効率も悪いが、まあ気にしないで。 コーパスは最初手元の適当なニュースコーパスを使っていたんだけど、それだと再現検証できないので、nltk のコーパスを使うように変更した。 nltk.corpus の下にあるコーパスモジュール名を -c オプションで与えると、そのコーパスを使って additive smoothing と Kneser-Ney smoothing の perplexity を出してくれる。 デフォルトでは Brown コーパス

    Kneser-Ney Smoothing を試してみた - 木曜不足
    sassano
    sassano 2012/12/20
  • 「プログラマが本当に理解するには実装しないといけない」か - 木曜不足

    ジュンク堂池袋店にて 10/11 に行われた「パターン認識と機械学習」(PRML) 愛好家の集まり、じゃあなかった、トークセッションにのこのこ行ってきた、ばかりか前でしゃべってきた。ありがとうございました&お疲れ様でした>各位 PRML同人誌 『パターン認識と機械学習の学習』(暗黒通信団) 刊行記念トークセッション 「今度こそわかる!? PRMLの学習の学習」 http://www.junkudo.co.jp/tenpo/evtalk.html#20121011_talk 参加して下さった上に感想までブログにしたためて下さった方には感謝感謝なわけだが、そういったブログの中で、@yag_ays さんがちょうど今気にしていたことを書かれていたので、ちょこっと紹介。 「今度こそわかる!? PRMLの学習の学習」に参加しました - Wolfeyes Bioinformatics beta 余談:

    「プログラマが本当に理解するには実装しないといけない」か - 木曜不足
    sassano
    sassano 2012/10/15
  • C# / Moles で dynamic を使う (Chaining Assertion を使って private メンバのテストを書きたい) - 木曜不足

    実は最近 C# でちょっと動作確認がめんどくさいコードをぺけぺけ書いている。 というわけで、珍しく(?)できるだけ手厚くテストを書こうとしているのだが、外部のライブラリとかサービスとか絡んでいて、まさにテスト泣かせな状況。 そう、今こそレガシーコード(WEwLC, レガシーコード改善ガイド)を読んだ経験が生きるとき! なんか Seam とか Sprout とかあったよなあ……とをひっくり返しそうになったが、今は Moles といういいものがありまして。 Moles は MS 謹製のモックフレームワークで、一言で言うと「任意のメソッドの振る舞いをアドホックに書き換えることができる」という最終兵器的な代物。 例えば、中で現在日時の取得を行なっているコードをテストしようと思ったら、その日時取得部分を関数オブジェクトとか delegate とかまあなんしかそこらへんの手段で外出しして……みたい

    C# / Moles で dynamic を使う (Chaining Assertion を使って private メンバのテストを書きたい) - 木曜不足
    sassano
    sassano 2012/07/20
  • NLP2012 での発表資料「極大部分文字列を使った twitter 言語判定」 - 木曜不足

    言語処理学会の第18回年次大会(NLP2012)での発表「極大部分文字列を使った twitter 言語判定」で使用した資料を公開します。 極大部分文字列を使った twitter 言語判定 from Shuyo Nakatani www.slideshare.net 論文は下記ページにて公開済み。 極大部分文字列を使った twitter 言語判定(中谷 NLP2012) - 木曜不足 論文との変更点は、執筆時よりも対応言語がカタルーニャ語とハンガリー語の2言語増えて19言語になっており、結果も最新のものに差し変わっているところ。 なお発表資料は TokyoNLP #8 での発表「∞-gram を使った短文言語判定」がベースとなっている。 #TokyoNLP で「∞-gram を使った短文言語判定」を発表しました - 木曜不足 発表時間が15分であること*1から発表資料はコンパクトにまとめ

    NLP2012 での発表資料「極大部分文字列を使った twitter 言語判定」 - 木曜不足
    sassano
    sassano 2012/03/19
  • gihyo.jp の連載「機械学習 はじめよう」の第11回「線形回帰を実装してみよう」が公開されました - 木曜不足

    gihyo.jp の連載「機械学習 はじめよう」の第11回「線形回帰を実装してみよう」が公開されました。 機械学習 はじめよう 第11回「線形回帰を実装してみよう」 https://gihyo.jp/dev/serial/01/machine-learning/0011 今回は、第8回と9回で紹介した線形回帰をおなじみの Python / numpy / matplotlib で実装する内容となっています。 実践編を担当するのは今回が初めてなので、どういう書き方にしようかいろいろ迷ってしまいました。 ノリが以前と変わっているから調子が狂っちゃうかもしれませんが、ご容赦ください(笑)。 見せ方は変えてありますが、今回の連載記事の内容は、先日 Tokyo.SciPy #2 で発表した内容と一部被っています。 数式をnumpyに落としこむコツ View more presentations fr

    gihyo.jp の連載「機械学習 はじめよう」の第11回「線形回帰を実装してみよう」が公開されました - 木曜不足
    sassano
    sassano 2011/11/17
  • Double Array 実装してみた - 木曜不足

    今作りかけのもので、素性(文字列片)を格納するのに Trie を使っていたのだけど、50万件を超えたあたりからメモリに載らなくなってきて。 まあ dict を使っためちゃめちゃナイーブな実装だったので、そろそろダメかなあとは思っていたんだけど(苦笑)。 というわけで、それよりきっと省スペース&きっと高速だろうと期待して Double Array を Python で実装してみた。 参考にしたのは WEB+DB Press vol. 64 の徳永さんの記事。 現時点での実装がこちら。 https://github.com/shuyo/iir/blob/master/trie/da.py ソート済みのテキスト列を与えると、Double Array を構築。 get を呼び出すと、最初に与えたテキスト列の中でのキー文字列のインデックスを返す。 シンプル機能。 trie = da.DoubleAr

    Double Array 実装してみた - 木曜不足
  • 第2回 Tokyo.SciPy で「数式を numpy に落としこむコツ」を発表してきました - 木曜不足

    10/15 に IBM さんの渋谷オフィスにて開催された 第2回 Tokyo.SciPy にのこのこ参加してきました。主催の @sla さんはじめ、参加者・発表者各位おつかれさまでした&ありがとうございました。 せっかく行くならなんか発表したいよね、ということで「数式を numpy に落としこむコツ 〜機械学習を題材に〜」なんてタイトルで、数式(あるいは数式入りのアルゴリズム)を実装するときに、どういう点に注目すれば易しくコードを書けるか、についてちらちら語ってみた。 こちらがその資料。 数式をnumpyに落としこむコツ View more presentations from Shuyo Nakatani 例えば、機械学習の(多クラス)ロジスティック回帰という技術では、次のような数式が登場する。 (PRML (4.109) 式) これを一目見てすらすらとコードが書けるなら苦労はないが、慣

    第2回 Tokyo.SciPy で「数式を numpy に落としこむコツ」を発表してきました - 木曜不足
  • 極大部分文字列 の味見 / 自然言語処理勉強会@東京 #3 - 木曜不足

    この記事は 第3回 自然言語処理勉強会@東京 のおまけ資料です。 [岡野原+ 2008] 全ての部分文字列を考慮した文書分類 http://ci.nii.ac.jp/naid/110006980330 n-gram と異なり、任意長の部分文字列を素性の候補としたい ただしそのままでは素性数が文章長の二乗のオーダー 素性の候補となる「極大部分文字列」を suffix array/lcp/WDT から線形時間で求める 2回以上現れる任意の部分文字列を素性とするのと同等 一般に、極大部分文字列は全ての部分文字列よりはるかに少ない(trigram〜fivegram ぐらい) grafting/L1 正則化付きロジスティック回帰により、有効な素性(重みが非ゼロ)を効率的に学習 極大部分文字列 例) abracadabra "bra" は "abra" の部分文字列としてしか現れない → "bra"

    極大部分文字列 の味見 / 自然言語処理勉強会@東京 #3 - 木曜不足
    sassano
    sassano 2011/09/13
  • イタリア語/スペイン語/ポルトガル語の見分け方 - 木曜不足

    イタリア語とスペイン語とポルトガル語はいずれもロマンス語と呼ばれる親戚みたいなもんで、母音で終わる単語が多めとか、代表的な機能語(助動詞や前置詞)が似た形をしているとか、いずれも主語が省略できるとか、共通した特徴を持っている。 そして使用地域が近接しているため、コーパスをかき集めてくると、混ざって取得されてしまって、うーんどれがどの言語? ということになりがち。 イタリア語は個人的に以前やっていたので「見ればわかる」のだが、スペイン語やポルトガル語はよくわかっていなかったので、見分けポイントをちょいとまとめてみた。 つまり人間言語判定のコツ。 イタリア語 頻出する固有の機能語は il, di, per, in など。 子音で終わる単語が非常に限られており、ほとんどの単語が o, e, a, i で終わる アクセント付きの母音は単語の末尾にしか現れない アルファベットは 22 文字。j, k

    イタリア語/スペイン語/ポルトガル語の見分け方 - 木曜不足
    sassano
    sassano 2011/08/05
  • 「機械学習とパターン認識」(PRML)のアンチョコ by herumi - 木曜不足

    社内で「機械学習とパターン認識」(PRML) の読書会をやっているのだけど、計算がやっぱり難しいようでみんな苦戦中。 そんなこんなで、光成さん(@herumi さん)が PRML の数式を手抜き無しで解説するアンチョコ(虎の巻 / PRML教科書ガイド)をマメに作ってくれている。*1 PRML のための数学(PDF) 内容は PRML の2章から4章と、9章、PRMLでもっとも計算が難しいと評判の10章を対象としている。 たとえば2章のアンチョコでは、2章の中で必要とされる解析や線形代数の道具(積分の変数変換、行列の各種操作)を一通り取り上げた後、ガウス分布の最尤推定における平均や分散による偏微分という、おそらく多くの人がつまづくのだろう計算がきちんと説明されている。 また3章のアンチョコでは、Woodbury の公式やヘッセ行列を解説しつつ、エビデンス関数などを導出しているし、4章になる

    「機械学習とパターン認識」(PRML)のアンチョコ by herumi - 木曜不足
    sassano
    sassano 2011/07/27
  • ロジスティック回帰+確率的勾配降下法 - 木曜不足

    次やってみたいことにロジスティック回帰を使おうとしているので、PRML 4章に従ってさらっと実装してみる。 最終的には Python + numpy で実装し直すことになると思うけど、R の手触り感が好きなので、今回は R。 データセットには R なら簡単に扱える iris を使う。iris は3クラスあるので、多クラスロジスティック回帰 (PRML 4.3.4) を実装することになる。 推論は IRLS (PRML 4.3.3) が PRML 的にはあうんだろうけど、ちょっと考えがあって確率的勾配降下法 (PRML 3.1.3, 5.2.4) を使うことにする。 まずは、こちらで説明した方法で iris のデータを正規化&行列化して使いやすくしておく。 xlist <- scale(iris[1:4]) tlist <- cbind( ifelse(iris[5]=="setosa",1

    ロジスティック回帰+確率的勾配降下法 - 木曜不足
    sassano
    sassano 2011/07/11
  • LDA の Collapsed Gibbs サンプリングの全条件付分布を導出してみる - 木曜不足

    Latent Dirichlet Allocations(LDA) の実装について - 木曜不足 にも出てくるこの式 を導出してみる。 この式は LDA の Collapsed Gibbs sampling で使う全条件付分布(full conditional)。 もし普通のギブスサンプリングだったら、観測されていない全ての確率変数、つまり Z だけではなくθやφについても同様に全条件付分布を構成して、そこからサンプリングを繰り返すことが必要になる。*1 そこで、θとφについては積分消去してしまうことで、Z だけをサンプリングすればよいようにしたのが Collapsed Gibbs sampling。"collapsed" は積分消去して「つぶした」ということと、素の Gibbs sampling から「崩した」ということと、両方かかっているんだろうか? 導出に必要な道具は次の2つ。 ガン

    LDA の Collapsed Gibbs サンプリングの全条件付分布を導出してみる - 木曜不足
    sassano
    sassano 2011/05/25
  • はじめての生成文法・前編 - #TokyoNLP 5 - 木曜不足

    第5回 自然言語処理勉強会@東京 にのこのこ行ってきました。 いつもいつもありがとうございます>主催の @nokunoさん、会場の ECナビさん(@ajiyoshiさん)、発表者、参加者の皆さん 今回も、いつものように新境地で「生成文法」について発表させてもらった……という予定だったのだが、資料作りが間に合わず*1&分量がインフレを起こして、急遽前後編にわけさせてもらったら、生成文法が出てくる直前で「次回に続く」。ほんとすんません&次回もよろしく。 【追記】 後編はこちら。 「はじめての生成文法・後編」を TokyoNLP で発表してきました。 - Mi manca qualche giovedi`? 【/追記】 こちらが資料。眠くて変なテンションで、ずっとネイティブの関西弁でしゃべりとおしてたような気がする。まあ過ぎたことだし。 はじめての生成文法・前編 - #tokyonlp 5 Vi

    はじめての生成文法・前編 - #TokyoNLP 5 - 木曜不足
    sassano
    sassano 2011/04/25