scikit-learn の RandomForest

肝心な部分だけ

from sklearn.ensemble import RandomForestClassifier

# n_estimatorsはtreeの数, random_stateはseed
model = RandomForestClassifier(n_estimators=10, random_state=17)

# がくしう
model.fit(train_data, train_label)

# 出来上がったtreeたちの深さやnodeの数を知りたい
print [(est.tree_.max_depth, est.tree_.node_count) for est in model.estimators_]

# そもそもどうやって知るか、documentacion見たくなかったらdirを使って見ればよい
#(それが普通? あまり習慣になってなかった)
# 追記: help() というのもある(ページャが呼ばれる)
print dir(model.estimators_[0].tree_)

# documentation見たいなら (もちろんdir()や__doc__は上のオブジェクトにも使える)
print model.estimators_[0].tree_.__doc__

# prediction
pred_label = model.predict(test_data)

# あとは自由に

思考停止pandoc

導入は
OSX - MarkdownからWordやPDF生成ができるようにする (またはPandoc環境の構築方法) (2014/09版) - Qiita
などを参考にしました。tex環境が整っている場合は飛ばしてpandocのコマンドだけ見ればいいのだと思います。

実際に出力してみると、デフォルトでは余白が広かったりするので、

pandoc test.md -o test.pdf -V documentclass=ltjarticle -V header-includes="\usepackage[top=30truemm,bottom=30truemm,left=25truemm,right=25truemm]{geometry}" --latex-engine=lualatex

などとするとちょうどよくなるみたいです。レポートやそこまでかっちりしていないメモをmarkdownで書いていきなりpdfで送りつけたいときなどに便利。
きちんと知りたいなら
Pandoc - Demos
を見るべきです。あとmanを読めって言われた(正しい指摘)。

Stanford Parser について

Home: http://nlp.stanford.edu/software/lex-parser.shtml
FAQ: http://nlp.stanford.edu/software/parser-faq.shtml
Tag and Bracket: http://web.mit.edu/6.863/www/PennTreebankTags.html
More details: https://catalog.ldc.upenn.edu/docs/LDC99T42/
Dependencies: http://universaldependencies.github.io/docs/u/dep/index.html
or http://universaldependencies.github.io/docs/en/dep/index.html (for subtypes of nmod etc.)
タグ、係り受け関係の一覧が書いてあるページはメモっておかないとすぐ忘れるなと思ったので……。

クロフト「事象構造と言語構造」

  • トマセロ(編)大堀ほか(訳)『認知・機能言語学』研究社、2011年 (論文集)
  • 3章 ウィリアム・クロフト「事象構造と言語構造」pp.113-145
  • William Croft, The structure of events and the structure of language, 1998

訳者・編者による前置き

  • 事象の時間的構造を分析し、因果連鎖と組み合わせて、時制やアスペクトの構文に拠る概念化と動詞による事象フレームの相互作用について議論を行った論文
  • Radical construction grammar: Syntactic theory in typological perspective(2001) でクロフトは、構文こそが統語の基本的な単位であり、あらゆる文法的なカテゴリーは特定の構文において定義されると論じた。さらに構文は言語に対して個別的であるという事実から、構文は通言語的に普遍ではなく、普遍的な統語構造は存在しないと主張した。言語の普遍性は、統語構造ではなく言語の機能と形式との間の写像関係としての記号的な構造に認められる、というのがクロフトの考えである。

1. はじめに

  • 人間の言語において最も基本的な統語構造は節と句だと言える。これらはそれぞれ「事象(event)」と「物体(object)」の伝達にかかわっている。ここでの事象は変化をともなう「行為(action)」と変化をともなわない「状態(state)」の両方を含む。
  • 物体は次の3つの特徴を持つ:
    • 物理的な環境において空間的に独立している
    • 物理的に操作することが可能である
    • 時間のなかで安定的に存続する
  • ただし、物体の識別やカテゴリー化については、Rosch(1978)やFillmore(1982,1985)によるプロトタイプやカテゴリーの議論からもわかるとおり、説明は容易ではない。
  • 一方で事象の説明については、次のような困難が挙げられる:
    • たいてい一過的である
    • 物理的に操作することができない
    • 物理的であったとしても環境から因果的にも時間的にも独立していない
    • 経験の断片を切り出して事象としてみなすのに複雑な認知プロセスが働いている

2. アスペクト: 事象の時間的構造

時間的構造にもとづく事象の分類
  • 節においては事象的な時間性が問題になる(それが一過性のものなのか、永続的なものなのかなどが表現される)のに対し、句においては時間性が問題にならない(句だけでは時間性は表現されない)。
  • テンス(tense, 時制) という文法カテゴリーは事象に発話時点と関連した時間的位置づけを与える。
    • 現在、過去、未来
    • 現在時制は過去の事態に対しても歴史的現在として使用して臨場感を語りに与える
    • 歴史的現在は予定された未来の事象の描写にも使用される
  • アスペクト(aspect) は事象の内部に時間的構造を与える文法区別である。たとえば行為(あるいは過程(process))と状態という区別は、事象の時間的輪郭の相違を表現している。
    • 過程は時間のなかである種の変化をともなう
    • 状態は変化をともなわない
  • アスペクトは単純現在形と現在進行形の選択に顕著に表れる:
    • ある状態が発話時に真であることを伝えるには、話者は単純現在形を使う
      • (o) She is tall.
      • (x) She is being tall.
      • 現在進行形はその時点だけの状態を示すときに使われる
    • ある過程が発話時に真であることを伝えるには、話者は現在進行形を使う
      • (o) Tess is playing the flute.
      • (x) Tess plays the flute.
      • 単純現在形は習慣や一般的な能力を示すときに使われる
  • 過程の中には、単純現在形も現在進行形も使用できない下位クラスがある
    • (x) He is shattering the windowpane.
    • (x) He shatters the windowpane.
    • (o) He just shattered the windowpane.(過去時制と近過去を表すjustを併用した表現)
    • この下位クラスを、「実現(achievement)」と呼ぶ(ことにする)
    • この事象の特徴は、それがあたかも時間的に幅を持たず瞬間的に生じるように認識されることである
  • 以上より、時間的輪郭にもとづく事象の分類は次のように可能である:
    • 変化をともなわず、時間的な広がりをもつ「状態」(単純現在形)
    • 変化をともない、時間的な広がりをもつ「過程」(現在進行形)
    • 変化をともない、時間的な広がりをもたない「実現」(近過去)
    • 変化をともなわず、時間的な広がりをもたない「点の状態」(単純現在形)
  • 「点の状態」は論理的可能性として挙げられるものである。例は
    • (o) It's eight o'clock.
    • (o) The train is on time.
時間構造の概念化
  • 状態を現在進行形で表すのは、
    • 状態の変化を段階的に示す場合
      • (x) Sylvia is resembling her mother.
      • (o) Sylvia is resembling her mother more and more every year.
    • 人物の属性ではなく一時的な行為の特徴を示す場合
      • (o) She is nice to him. (普段親切である)
      • (o) She is being nice to him. (そのときだけ親切にしている)
  • 時間的粒度の観点から考えると、
    • 現在進行形を用いるとき、粒度の高い見方をしている
    • 単純現在形を用いるとき、粒度の低い味方をしている
    • したがって単純に言えば、アスペクトは話者が時間的粒度をどのように概念化しているかを表現している
  • 不活性行為(inactive action) と呼ばれるクラスにおいても同様の現象が見られる:
    • (o) Bill is standing in the doorway.
    • (o) The Pennines lie to the east of Manchester.
    • (x) Bill stands in the doorway.
    • (x) The Pennines are lying to the east of Manchester.
  • ここで、単純現在形は「構造的解釈」、現在進行形は「現象的解釈」を与えている
    • 構造的解釈とは、話者がその事象を恒久的・本質的と捉えていることを示す
    • 現象的解釈とは、話者がその事象を一時的・一過的と捉えていることを示す
    • 時間的粒度で言えば、前者は粒度が低く、後者は粒度が高いことになる
  • この解釈を「状態」と「過程(行為)」に適用して考えれば、次のように言える:
    • 状態は恒久的・本質的であるがゆえに構造的であり、単純現在形で表現される
      • 逆にその状態が一時的なものなら、現在進行形を用いる
    • 過程は一時的・一過的であるがゆえに現象的であり、現在進行形で表現される
      • 逆にその行為が恒久的なもの(たとえば習慣や不活性行為)なら、単純現在形を用いる
  • 「実現」については、単純現在形も現在進行形も普通用いられないが、次のような例がある:
    • 現在進行形で「前段階実現(run-up achievement)」を表現する(例の後者)
      • (o) She just died. (たった今死んだ)
      • (o) Help! She is dying! (死にそう)
    • 現在進行形で「循環的実現(cyclic achievement)」を表現する(例の後者)
      • (o) The light just flashed. (たった今点滅した)
      • (o) The light is flashing. (点滅を繰り返している)
  • ここまでで観察されたことをまとめると、
    • 構文自体が同士によって示される事象の時間的な概念化を示している
    • アスペクトの意味論においては、特定の意味クラスの動詞が異なるアスペクトで用いられた時にどのような意味解釈を受けるかが重要になる
    • 意味解釈においては、それを理解するために文脈的な情報を必要とする場合がある
      • 状態と単純現在形、過程と現在進行形、などの一般的な例を外れる文を解釈する場合
「限界性(telicity)」と「始動的状態(inceptive states)」
  • 本来的・必然的な終結点の備わった限界的な事象は「達成(accomplishment)」と呼ばれる。これに対して、「活動(activity)」と呼ばれる事象は終結点を持たず非限界的である:
    • (達成) I wrote the letter (in an hour).
    • (活動) I slept (for three hours).
    • (活動) I wrote letters (for three hours).
    • inが導く副詞句を「範囲副詞句(container adverbial)」と呼ぶ
    • forが導く副詞句を「持続副詞句(durative adverbial)」と呼ぶ
  • 知覚動詞と認識動詞におけるアスペクト構文では、過去形とsuddenlyを用いて知覚・認識状態の始動を表現できる。これを「始動的状態」と呼ぶ
    • (o) I went around the bend and suddenly saw the mountain lion.
    • (o) I suddenly understood what was happening.
    • 一方で単純現在形を用いる場合には、知覚・認識状態そのものを表現している
2節のまとめ
  • 動詞事象の意味表示は複雑であり、動詞が意味する事象に至るまでの事象(前段階の過程や先行状態)やその後の事象(結果状態や循環実現の後の回帰)も大きく寄与している
    • 文によって実際に表されている事象の部分は「プロファイル(profile, Langacker 1987)」、事象の背景となる部分は「ベース(base, Langacker 1987)」もしくは「フレーム(frame, Fillmore 1982, 1985)」と呼ばれている
  • 単純現在形や進行形の構文と同様に、ある種の副詞や副詞句(in an hour, for three hours, suddenly, etc.)もまた特定の時間の間隔を表現している
    • 範囲副詞句は事象のフレームにおける本来的な変化点(限界的な事象の場合は終結点、非限界的な事象の場合は開始点)に至るまでの過程をプロファイルする
    • 持続副詞句は事象のフレームにおける最初の変化点以降に継続する事象をプロファイルする
    • suddenlyに代表荒れるような瞬時的副詞は、瞬間的な変化をプロファイルする
    • almostやbe about to, tryなどは、事象フレームのなかの変化点に至る過程をプロファイルする
  • アスペクト構文は事象の時間的構造を概念化する方法を提供している
  • 概念化の過程では、次のようなことが行われている
    • 事象についての現実世界一般の知識を喚起すること
      • [それを状態と捉えるか過程と捉えるかどうかなどの意味クラスの選択]
    • 事象フレーム内で重要な部分に選択的な注意を与えること
      • [事象のどの部分に文表現を与え伝えるかの判断]
    • 文脈の特定の側面を選び活用すること
      • [文脈に依存する特徴的な表現を与えるかどうかの判断]
    • 時間的な次元と時間内の変化にかかわる次元についてスケールの調整を行うこと
      • [文表現を行うための具体的な時制とアスペクトの選択]

3. 文法関係と態: 事象の因果構造 (ここまで2015-12-06)

theanoでMNISTのnegative log-likelihood

theanoでMNISTを多層パーセプトロンするとき(日本語?)のnegative log-likelihoodをコストとして計算する式であるところの

NLL = -T.sum(T.log(p_y_given_x)[T.arange(y.shape[0]), y])]

という式について、ただし実用的には、

NLL = -T.mean(T.log(p_y_given_x)[T.arange(y.shape[0]), y])]

の式、の意味がよくわからず呆然としていた。Tはtheano.tensorのことです。
Getting Started — DeepLearning 0.1 documentationのNegative Log-Likelihood Lossの項やClassifying MNIST digits using Logistic Regression — DeepLearning 0.1 documentationのCreating a LogisticRegression classの項に出てくるやつ。

分解すると、
p_y_given_x: 出力層の値の分布。ラベルに対する確率分布ということになる。計算時にはこれは行列であり、rowがひとつのサンプルで、columnが0-9までのラベルに対する予測確率。
T.sum: 実際はT.meanを使う(値が大きくなりすぎてlearning rateに影響してしまうから)
T.log(p_y_given_x): logに入れるので値がすべて負になって0に近い値が高い確率になる
y.shape[0]: yがサンプル数の長さをもつ正解ラベルのリストで、shape[0]はサンプル数(=Nと書く)を与える
T.arange(y.shape[0]): [0,1,2,...,N] というリストを返す
[T.arange(y.shape[0]), y]: 行列から指定した座標の値をリストで取り出すためのnumpyの記法。M[取り出したい行番号からなるリスト(r_i), 取り出したい列番号からなるリスト(c_j)]に対して [M(r_1, c_1), M(r_2,c_2), ...] を返す。詳しくはIndexing — NumPy v1.10 Manualを参照
T.log(p_y_given_x)[T.arange(y.shape[0]), y]): 各サンプルが持つ長さ10の確率分布の配列から、正解ラベルの位置の値を取り出して長さNのリストで返す。つまり「各サンプルが正解ラベルに対して出力している確率」のリストを返す
\-T.mean(): マイナスが付くので正解に近づけば近づくほど正の値として0に近づく。したがって、NLLの値を0に近づけることが学習の目標になる。
という感じみたいです。

補記として、
learning rate などでfloat変数を突然出現させるとfloat64扱いされて(ほかをすべてfloat32で計算しているときには)弾かれるので、
lr = numpy.float32(0.01)
みたいに宣言したほうがいいのかもしれません(グローバルに宣言する(できる?)なら別なのだろうけど)。自分は課題提出のサーバーはそこでの型エラーを起こさなかったんだけど、手元で動かそうとしたらエラー吐かれた。どこをどう設定すれば解決するのかはきちんと調べてないですが、統一はしたい。

log2015-11-21

2015-11-21 日本科学哲学会シンポジウムのメモ

講演:保前文高「言語獲得の発達脳科学」

  • 脳科学と芸術、という本の中に論文がある
  • 言語発達脳科学とコンパクトに言ったりする
  • 言語科学教室というのは生成文法を中心の言語理論の専門家と
    • 脳を中心にアプローチする脳科学の専門家がいる
  • この人は脳を中心にしている
  • 昨年9月からそういう研究センターを作った

    • 生物系の遺伝学の人、保険の人、医学研の人、理研の人がいる
    • 遺伝的なバックグラウンドと脳の話を研究してる
    • センターと名前があるのはいいんだけど建物がない
  • 脳を知ることから言語機能がどうなのかを知りたいと考えている

    • 言語処理に関わる脳の領域の特定
    • だけではなく、脳の形成とともに生じる言語機能を探るというアプローチ
  • 脳はニューロングリア細胞と血管が集まって形成されている

  • ニューロンの電気的な活動が知りたい、とくに人におけるニューロンを知りたい
  • 脳の活動を調べる方法としては

    • 分類の図は Kuhl and Rivera-Gaxiola 2008 から?
    • 脳波、脳磁図MAG、fMRI光トポグラフィーNIRSがある
    • 赤ん坊の脳情報を取りたいが、赤ん坊に使える機器がほとんどない
    • fMRIは赤ん坊はあんまりよろしくないとされている
    • NIRS 近赤外光を当てて1-2cmの分解能で表面のマップを取れる
      • 今回後半でこの話をします
  • 脳のことを知りたいのはとくに赤ん坊

    • 3ヶ月の赤ん坊はまったく言葉がわからない
    • でも表情や視線や身体の動きや泣き声でわかる
    • 3ヶ月くらい過ぎると目を向けて注目できるようになる
  • de Boysson-Bardies 1996 で言語発達の過程(2歳まで)が整理されている

    • 伝統的にはピアジェから来ている
    • 10-12ヵ月で最初の言葉が出てくる
    • 「要約 ー 0歳から2歳までのコトバの発達の主要段階」という日本語資料
    • 生後1ヶ月の時点で言葉の対立のカテゴリー的弁別ができているっぽいということが
      • 1971年の時点で明らかになっている
    • 音声の識別は1~5ヵ月くらいにはきちんとできるようになっているとかいないとか
  • Dehaene-Lambertz et al. 2002,2006

    • 行動計測から脳機能計測へ
    • 音声を提示された時の3ヶ月次の脳の活動を計測
    • fMRIで計測すると左半球の側頭領域が活動を示した(成人と同じパターン)
  • Remez et al. 1981
    • 音声に似ていて音声ではない語(SWS)の弁別
    • Where were you a year ago?
      • 言われればわかる
    • 音声として受け取ると、脳の活動が増加する
    • わかるようになる前と後で活動の仕方が違う容認鳴る
    • Left posterior STS の活動
  • 光トポグラフィを付けて計測する
    • 48箇所
    • 音声やSWS(sign wave speech)どちらを聞いても左右両方の聴覚野が活動する
    • 3ヶ月児の左半球の側頭領域の後方部は、音声を特別な方法で処理している
  • 3ヶ月児の言語音知覚

    • 側頭葉における機能分化
    • 側頭葉、頭頂葉、前頭葉を含んだネットワーク
    • 発達過程にある脳そのものを知る方法がある
    • Homae 2014, 2007?6?くらいに図がある
  • 化石魚、ユーステノプテロン デボン紀、約4億年前

    • この化石を見て骨を見ると、どこに脳があったかを推定できる
    • ヒトとユーステノプテロンの脳の基本的な構造は変わっていない
    • 中脳、橋、延髄、小脳みたいな構造
    • ただし大きさの比率や見た目はかなり違う
    • イルカの脳がとても大きい
      • 基本的な形は少し違う、パーツの並びは同じ
    • ラットやウサギの脳はかなりつるつるで大脳皮質の皺がない
      • 脳溝に大きな違いがある
  • 脳溝と脳回の話、今回は特にシルヴィウス溝の話をします

    • 言語に特に重要になる部位
  • マウトナーニューロンの話
    • 魚が危険と反対方向に進むために筋肉に命令を出すようなニューロン
  • ヒトでも大脳のニューロンが反対側を支配していて、マウトナーニューロンに近い交叉性を示している
  • 失語症、ブローカの話
    • 左半球の前のほうが発話に関係があると特定した
  • ウェルニッケ失語
    • 発話できるが理解できない患者
    • 左半球の側頭葉上部の損傷を発見
  • Werinicke-Geschwind model
    • 話された言葉を復唱するときのモデル
    • 書かれた言葉を読むときのモデル
    • 古典的な言語のモデル
  • 最近はHickok-Poppel model
    • 背側経路と腹側経路
    • 今のところこれが割と信頼性の高いモデルになっている
  • ブローカ野はチンパンジーにもあるらしい
    • 場所は違うもののブローカ野に相当するものがある
    • 機能的な名称だけど
    • 藤田1997 あたりがブロードマンの地図の霊長類における比較をしている
    • ヒトはブローカ野、ウェルニッケ野、角回が大きい
    • チンパンジー以降とそれ以前でかなり違う様子
  • 現生人類がいつ言語的な脳を得たのか?

    • 頭蓋骨内腔の形状 intractanial endocast から脳の外形を復元する
    • Holloway 1974 が比較を書いている
    • ブローカ野周辺と角回周辺の体積が Homo erectus くらいから増えている?
      • 論争が未だにある
      • 結局いつからできたのかということはわかっていない
  • ヒトの脳ができるまで

    • もともとは一本の管みたいな形状をしている
    • 5-9ヵ月くらいから脳らしい形になる
    • Yamada et al. 2010 胚子期の標本
    • Kostovic and Vasung 2009 胎児期のデータ
    • シルヴィウス溝ができる時期がポイントになる?
    • 胎児の外界の音に対する反応を見たりする
  • 灰白質の発達
  • 脳の自発活動
    • エネルギーの60-80%はニューロンやグリアの間の信号のやりとり(自発活動)に使用されている
    • 意図的に何かのために使用していなくてもエネルギーを消費している
    • Raichle 2011 活動とエネルギー消費の図
  • 自発活動と事象関連の活動の関係

    • 事象関連の活動、つまり外部環境の一時的な刺激の処理には0.5-1%の増加しかしない
    • 負荷がどんなに高くても最大で5%くらい
    • ラットに音を提示をしたときの聴覚野の活動を計測した
    • 音を聞かなくても同じような活動を自発的に常にしているということ
    • 自発活動の取りうる集合に対して、事象活動はその小さな部分集合でしかない
    • Luczak et al. 2009
  • ここから10分くらいは最近やっている話

    • 光トポグラフィを用いて、赤ん坊が音声処理をする機能のネットワークについて考えている
  • 信号の時間的変化を取って、連続しているところを結ぶことで、機能的な結合性がわかる(?)
    • 脳自体が形成されていく過程で、反対側や遠いところでも関連性を持つようになっていく
    • 新生児から6ヵ月児になるまで、局所的から大域的(対称的)な機能的クラスタができていく
    • Homae et al., 2010
  • 脳における機能的なネットワークの中心性
    • 領域間の相関関係からネットワーク構造を求めて、構造の中心的役割を果たしている部位(ハブ)を探す
    • 音声を処理しているからといってハブ性の高いところが大きく変わるわけではない
    • ブローカ野は、他の広い領域から情報を受け取り、情報を伝える領域である可能性がある
    • つまり、状態によらずに中継地点となる領域になっている
    • 3ヵ月児のブローカ野とつながる領域は、成人と同じ
  • 脳の領域間の機能的な形成は、
    • 大域的なネットワークが局在している
    • ブローカ野は、内発的な機能構造の骨組み鳴る中心になっている
  • まとめ
    • 発達脳における情報の統合
      • 大域化とともに局在化が進んでいくが、その中心的役割を果たす(位置的にほとんど中継的)
    • 発達脳の形態形成
      • 特にシルヴィウス項の回りのブローカ野や、ウェルニッケ野、角回などがどのように形成されるのか
  • (質問:和泉)時間情報を含めたMerge機能がブローカ野にあるのでは?
    • 3ヶ月児くらいだと時間情報を含めた情報処理をしているという証拠があまりないのでこれから

log2015-11-20

研究室で週に一度、NLPに関わりそうな好きなテーマで発表をするという会をやっていて、今回の担当では言語に関わる脳の話をすこしだけしました。読んだ(紹介した)本は

脳はいかにして言語を生みだすか
武田ほか、2012年、講談社
http://www.amazon.co.jp/dp/4061531468

で、3章の半分くらいまでしか読んでいなかったので1,2章の内容をかいつまんで話すという感じになりました。
この本は書き方がしっかりしていてわかりやすいです。他に触れた本が多いわけではないですが、言語的な機能から脳の話をしている本の中では読みやすいほうではないかと思います。
あとは(本の紹介をするだけですが)、

進化言語学の構築ー新しい人間科学を目指して
藤田ほか、2012年、ひつじ書房
http://www.amazon.co.jp/dp/4894765942

の「言語障害と分子遺伝学から考える言語進化(岩本和也・笠井清登)」の章を直近で読みました。FOXP2遺伝子とかlanguagenomeの構想とか、まだまだ遺伝子的な側面からの知見は多くないようですが、言語障害者の遺伝子を機械学習にかけてパターンを取るような雰囲気のことができるんじゃないかという旨の話が書かれていて(最終的には言語障害の種類に対応する遺伝子の異常を同定できるようにする、すなわち言語に関わる機能に対応する遺伝子がわかるようにする)、面白そうでした。

夜はNIIで開催されていたTokyoCLの勉強会に参加しました。内容はしっかりとはわからなかったけど……。

ちなみに雑学テーマ発表会の最初の担当では言語獲得の話をしました。トマセロの本の紹介をしたり、用法基盤言語学なるものに触れたり。