【Rで機械学習】back queryとムーア・ペンローズ形逆行列の話。

前回の記事、恥ずかしいことに堂々と片手落ちなことを書いてしまっていました。

wanko-sato.hatenablog.com

ニューラルネットワークの出力から入力を逆算するには重み行列の逆行列を用いれば良い、と書きました。
が、これだけでは片手落ちで、逆行列が存在しないケースではこの計算はできないことになります。さすがにそれではいかんと思うので、補足の意味で、逆行列が存在しない場合はどうすれば良いか、メモ書きとして残しておきたいと思います。

続きを読む

【Rで機械学習】ニューラルネットワークの結果を精査してみる。

wanko-sato.hatenablog.com

前回、Rで簡単なニューラルネットワークを自作してみました。参考にした書籍はこちら。


ニューラルネットワーク自作入門

ニューラルネットワーク自作入門

本書はPythonでの実装例が示されていますが、前回の記事ではそれをRに書き直してみよう、というものでした。
さて、本書では、MINSTを学習データとして使用しており、興味深い実験として、「ある出力結果を与えたらどのような入力データでありうるのか?」というback queryを行っています。それ自体、面白い結果だと思っているのですが、いかんせん入力データが大きいため、実際のところどうなの?というのがいまいちわかりづらい結果でした。

前回の記事では、三次元の正規分布を使った座標データを分類する、という非常に単純な課題をニューラルネットワークで学習させました。入力データは3つの座標、出力データは3つの確率です。精査していくのには手ごろな大きさなので、改めて、前回学習させたニューラルネットワークで何が起こっているのか、精査していきたいと思います。

続きを読む

【Rで機械学習】ニューラルネットワークを自作してみる。

やっぱりニューラルネットワークの基礎くらいはきちんとおさえておいた方が良いだろうなぁ、ということで、取り急ぎこちらの書籍を読んでみました。

ニューラルネットワーク自作入門

ニューラルネットワーク自作入門

基礎から丁寧に解説してくれている本です。前提となる知識はほぼ不要です。行列の積と微分がちょっぴり出てきますが、それも必要な解説はすべて含まれています。これを読めばニューラルネットワークの基礎の基礎はひとまずおさえられるはず、という作りになっています。
この本の良いところは、実際にPyhtonでニューラルネットワークを作ってみよう、というところで、中に実際のコードが記述されてあります。ニューラルネットワークの基礎はそれほど難しくありませんから、Pythonのコードも非常にシンプルです。Pythonの入り口に立つのにも良いのではないかと思います。

さて、じゃあ自分でもやってみよう、と思ったのですが、さすがにここでPythonのコードを丸パクリするのはどう考えてもまずいので、本書に記載されているPythonのコードをRに置き換えてみよう、ということをやってみました。

続きを読む

【書籍紹介】統計から機械学習への橋渡しのための5冊~線形モデルと線形代数~

統計の上級を目指すにせよ、機械学習に進むにせよ、線形モデルの考え方は必ず通らなければならない勘所と思っています。
統計の基礎では確率分布や検定の考え方に触れますが、あまり線形モデルの話は出てこないように感じるためです。機械学習の基礎にあたるパターン認識においては確率分布と線形モデルの考え方が非常に重要で、線形モデルの考え方をきちんと理解するためには行列の演算が必須になってきます。理系の方でしたら高校、大学の段階でしっかり線形代数を学ぶのでしょうが、文系で心理学等の統計を必要とする専門に進んだ場合、線形代数をほとんどやらずにきてしまうことが多いのではないでしょうか。
昨今、学習コストの低いPython等のプログラミング言語の登場で機械学習に容易に触れられる機会が増えてきました。これまで統計をやってこなかった方でも、コーディングそのものは容易です。一方で、その理論的背景を知らず、提供されているパッケージをただただ使う、という状況にも陥りやすいのではないかと考えています。自分自身の反省も込めて。
ということで、今回は確率分布や要約統計量、検定の考え方等の統計の基礎を学び、もっと高度な分析をやりたい、であったり機械学習に進みたい、と考えておられる方々向けに、こういう書籍を読んでみたらどうかな、というご提案です。

※個人的に「この順番で読み進めていくと良いかな」と思う順番に紹介しております。

続きを読む

【Rで自然言語処理】Rからjuman++を動かし形態素解析の結果を受け取る on Windows10

いまから半年くらい前ですか。juman++をインストールしようとしてどうしてもうまくいかなかったのでした。
wanko-sato.hatenablog.com
が、ここ最近ふと思いついてあれこれ試してみた結果・・・

ついにうまくいきました!!!

といっても、実際にやっていることはかなり面倒なことなんですが。。。
いやいや、最初の設定が面倒なだけで、設定が済んだらあとは大したことないですよ、うん。

というわけで、実際にどんなことをしているのか、と、そこに至る設定の方法を書いていきます。

続きを読む

【Rで自然言語処理】単語の出現パターンをクラスタリングする。

前回、前々回とトピックモデルに関する話題を扱いました。
wanko-sato.hatenablog.com
wanko-sato.hatenablog.com
トピックモデルは嫌いじゃない、むしろ好きなんですが、結果の解釈が面倒なのと、やっぱり確率分布を使うため、結果にどこかふわっとした感じが残るあたり、どうにもモヤってしまうのです。もちろん、そういうのを織り込み済みであることを分かってもらえれば良いのですが、LDAはどうにも説明がややこしいところがございまして、簡便な方法で、細かい説明をしなくてもすぐにわかってもらえる指標ってないのかなぁ、とあれこれ考えているところでございます。
その中でも、最近思いついた中で個人的にヒットしているのが「単語の出現パターン」でございまして。今日はそのお話をしようと思います。

続きを読む

【Rで自然言語処理】トピックモデルによる文書分類結果の妥当性を検証する。

前回、トピックモデルのLDAを用いて文書を分類し、その結果をjavascriptで可視化する、ということをやりました。
wanko-sato.hatenablog.com
ただ、その結果が本当に妥当なのか、正直自信がありませんでした。一応は3Dプロットで、検索ワードと文書分類がほどほどかみ合っていることは確認しましたが、あまりにざっくりしすぎてきちんとした検証を行っていませんでした。
というわけで、前回使ったデータと結果をもとに、得られた結果が実際のところどんなものなのか、じっくり見ていきたいと思います。

続きを読む