elm200 さんはインスタンス mstdn.jp のユーザーです。アカウントさえ持っていればフォローしたり会話したりできます。もしお持ちでないなら こちら からサインアップできます。

機械学習の「ツールは何であれ要するによいモデルさえ作ればOK」という世界は私にとって新鮮だった。機械学習では数学が重要な役割を果たしており、アカデミズムとの距離も近い。

私は、機械学習に親しむにつれて、生業としているソフトウェア開発におけるこだわりが減ってきた。問題は、手法やツールの選択ではない。問題そのものを解くことなのだ。

一部の人たちは、強い原理主義とも呼びたいような状態にあり、特定の手法を信奉して、それに従わない人たちを排撃している。

どんな言説も文脈を限定せずに絶対の真理と呼べるものはないのではないか。ソフトウェア開発で特定のツール・手法にこだわりを持ちすぎるのもいかがなものか。ときには異質なものも許容する寛容さも大切ではないだろうか。

機械学習とソフトウェア開発。どちらも情報技術の一分野であるのは違いないが、雰囲気はずいぶん違う。

機械学習については、モデルのよさがいろんな尺度で数値としてすぐに表されるのが気持ちがいい。モデルは完全に数理的なもので、目に見えないからこそ、数値で良さを表現しなければならないからだが。

一方で、ソフトウェア開発手法を数値化して評価するのは難しい。いろんな尺度は存在するが浸透度はいまひとつ。

結局のところ、ソフトウェア開発における言語・ツール・手法の選択に、絶対の真理はなく、一定の価値観・信念に支えられたものにすぎないのだろう。だからこれは宗教に似ている。その教義が「正しい」かどうか考えるのはあまり意味がない。「信じる」ことこそが重要なのだ。

NVIDIAを「謎の半導体メーカー」と呼んだ日経ビジネスの記事が炎上しているけど、あのタイトルは高齢の読者向けの仕掛けじゃないの?まあ、NVIDIA は部品メーカーだから、ITに興味がない人は知らなくても当然じゃないかなあ。確かに、機械学習の文脈じゃ世界で一番重要なメーカーなんだけど。

ASUSの呼び方で、Twitter が大喜利状態になっている。 ASUS の公式 Twitter アカウントもふざけたツィート流しているし・・・。え?私ですか?私は、もちろん ASUS と呼んでいます。

やばい・・・Keras 超いいわ。なに、この簡単さ。Keras のインターフェイスは必要十分でとても気持ちがいい。tensorflow 1.1 からは、Keras が tensorflow の一部として使えるようになったし、これからは Keras の時代かもしれないね…。

1. モデルを作って
2. fit() して
3. predict() する

と、scikit-learn のモデルと同じインターフェイスにしてくれているんだね。たしかに、本当、これだけでいいんだよ。いままでの深層学習ライブラリはなぜあんなに複雑だったんだろう…。

そして、その知的格差は、そのまま経済的格差へ直結する。インターネット時代は大格差時代でもあるのだろう…。

一方で、「情報弱者」は、ネット上の情報の真偽が判断できず、質の悪い情報にだまされて身ぐるみはがされてしまう。

インターネット時代は、知的格差が広がってしまう時代でもある、とつくづく思う。ネット上にいくらでも情報は転がっていて、頭の切れる人たちはそれらを使って、いくらでも賢くなっていってしまうからだ。

Kotlin を1時間ほど触ってみたけど、なるほどよかった。Scala の代わりになりうるなら、もっと力を入れてやってみたい。

@pontan いろんな形があるようですが、たとえば、いろんなデータに基づいて、売上の予測を立てたりとか。データはいまどきたくさんありますから、それを使って何か役に立つことをして、その対価をもらうという感じらしいです。まあ、私も詳しくは知らないのですが。

Kaggle の competition でやっていることは、データサイエンティストの仕事のごく一部にすぎないようだけども、少なくともデータを前にして、あれこれ考えることで、気分はデータサイエンティストになれる。その教育的機能は半端ないと思う。

おかげで、データサイエンティストたちのブログとかで言っていることがかなりよくわかるようになった。が、同時に、いかに自分のスキルが拙いかもわかってしまい、心が砕けそうにもなる。

まあ、成長していくときには避けられない一段階なのかもしれないが・・・。

Kaggle の competition "Sberbank Russian Housing Market" は特徴量が数百もあって、ひと通りの一般的な前処理をやった段階で、玉砕。上位79%以内という極めて平凡な成績だが、これでも頑張ったのだ。

Kaggle はガチの猛者が集っているので、心が折れそうになるが、まあぼちぼちやっていくしかないね・・・。
kaggle.com/elm200

ベイズの定理は何度覚えても忘れてしまいがちだったのだが、この説明はあまりに鮮烈すぎて忘れることができないだろう。このサイトには、他にもすばらしい記事がたくさんある。深謝。
mathtrain.jp/bayes

Kaggle の Kernel ではとりあえずいろんなツールの使い方は学べるけど、前処理の方法で疑問を感じることも多い。記事の品質は当然ながら玉石混交なのだろう。うーむ。

でも Kernel のおかげで、機械学習への取り組みがずっと実践的になってきた。そして、機械学習の本当のつらさがちょっとだけ見えてきた気がする。これは、いろんな意味で相当しんどいわ・・・。

まあ、ぼちぼちやっていくしかないな〜。楽な世界はないものね。

今日は前回に引き続き Kaggle のクレジットカード不正利用(Credit Card Fraud Detection)に関するデータセットを使って、いろいろ勉強した。
kaggle.com/dalpozz/creditcardf

kaggle.com/currie32/predicting
をみて、自分なりに tensorflow を使ってニューラルネット(4層+Dropout)で、やってみたが、成績(f1-score)は、ランダムフォレストとさほど変わらなかった。まあ良い方ではあるけど、劇的というほどではない。

4層だからまだ deep learning というほどではないな・・・。でもデータ量的にこれ以上層を増やしても過学習になるだけな気がする。

私は、昔は Mac にコンプレックスがあった。開発者たるもの Mac を使うべきではないかと。ただ、いまは Ubuntu に完全に満足している。むしろ Ubuntu の方が私には合っていると思っている。

たしかに Mac は買ってきてすぐ使えるし、いろいろサポートも厚いので開発者でファンが多いのも分かる。だけど、もうちょっと Ubuntu や他の Linux distro をメインの環境として使う開発者が増えてもいいんじゃないかな…。

いまさらながらだけど、本当に現代はプログラミングをするには恵まれた環境だよね…。ほとんどカネをかけなくても、あれこれ工夫すればすごく快適な環境が作れてしまう。

こういう時代には、若い人(小学生や中学生)でも、学ぶ方法を確立した人たちはあっという間に独学で高い知識水準に達するだろうね…。

Jupyter notebook を VPS 上に設置して、ssh ポートフォワーディングでつなぐと、ローカルで、いい感じに計算資源が使えそう。ssh だとディレイがあって使いづらくても、Jupyter ならぜんぜん気にならない(ブラウザ上で実行するので)。

私はシステム開発をずっとやってきたのだが、機械学習については、同じプログラムを書くにしても、いろいろ発想を逆転させなければならない点があって、面白くもあるが大変である。

numpy, pandas, scikit-learn といったツールを手足のように使いこなすまでにはなかなか至らず、なかなか歯がゆい。

まあ、10年前に Rails に初めて触ったときも、最初の数カ月は本当にもやもやしたので、始めは仕方ないのだろう。

今日は Kaggle のクレジットカード不正利用(Credit Card Fraud Detection)に関するデータセットを使って、いろいろ勉強した。
kaggle.com/dalpozz/creditcardf

やはり具体的なデータを使うと理解が進む。何度やっても忘れてしまっていた
recall と precision についてようやく確かなイメージがつかめたような気がする。

あと Kaggle の kernel に書いてあることも、いろいろ垢抜けないやり方もあったりして、みんな完璧なわけでもないんだな、と理解できて、正直少しホッとした。