フィードバック

『ハーバードの"正しい疑問"を持つ技術』という本を読んだ。ノウハウ本をちゃんと読むのは久しぶり。タイトル買いである。"正しい疑問"というのから、『まずイシューよりはじめよ』系の本かと思ったのだが、中身はリーダー論だった。これはこれで、最近の自分自身のトピックスにあっていたため、熟読した。

内容はリーダーが陥りやすい問題とその対策について。一つ一つはごく一般的なもので、挙げられた問題のいくつかはすでに自分なりに対策を試行錯誤しているものだったり(時間管理など)、そうでないものも、漠然と認識しつつある段階。立場が変わることにより発生する(しつつある)問題を、整理した形で目の前に並べてもらえたという意味で、ちょうどよいタイミングで出会ったと思う。

その中で、これはと思ったのは、"フィードバック"というキーワード。また、自分の行動が発しているメッセージは?という問い。どちらも、真新しいものではないけれど、自分自身の問題として、正面から対峙したことはなかった。

自分の発言、行動、態度などに対して、周囲がどう感じているか、なにがよく、なにが改善すべき点だと思われているか、正確なフィードバックを受ける努力をする、というのは、今まで積極的にしてこなかった。フィードバックを受け取ることが重要でないと考えたことはない。ただ、今までの自分にとっては、いかに人の視線・意見に左右されないか、というのが最も優先されるべきことであった。従来他人の評価を極端に気にしてしまう性質なだけに、これに逆らうことと、フィードバックを適切に受け取ることとを同時にはできてこなかった。

これからは、しかし、フィードバックを適切な、なるべく早いタイミングで受け取ることは、とても大切な仕事になるだろう。個として生きる方法を習得してきた20代とは違い、組織に所属してその中のリーダーになろうとしているのだから(ならざるを得ないということだが…)。また、このような人生のステージの変化だけでなく、自分には特にフィードバックが重要と考える理由があって、それがもう一つの問である、自分の行動が発するメッセージは?に関わってくる。

自分は、言葉で発するメッセージと、行動・態度が発するメッセージが不一致な傾向がある。と言っても、相当うまい性格に育った人物以外は、誰しもある程度そういう傾向はあるとは思う。ただ、自分はその程度が甚だしい、というのが自己評価である。客観的なところは正直分からない。この本のエクササイズに沿って、自分の行動が発すると考えられるメッセージを箇条書きに書き出してみたところ、やはり自分の行動からのメッセージとして、「思ったことをまっすぐに言わない」「何を考えているか分からない」「威圧的」「怖い」というようなものが並んだ。これは、頭で考えるメッセージ「なんでも言葉で表現する」「言わなくては分からない」「公平」「仕事の評価と、個人の評価は別」といった概念とほぼ正反対になる。

この自分へと他人への要求のアンバランスについては、実は長い間認識してきた。そして、これも、修正の優先事項からは外れてきた。原因の一つは、これがかなり根深い問題で、修正への具体的な道筋を描けず、取り掛かるきっかけもつかめなかったためであると思う。ただ、より実際的な原因は、この言葉と行動のメッセージのアンバランスには、それが露呈しないための応急処置的な措置があったためである。ようするに、アンバランスが顕在化しないためには、そもそもメッセージ性のある言葉の方を、発しなければよいのである。そうすれば、行動からしかメッセージが出ないため、アンバランスという問題は生じない。実際そうしてきた。当然、代償もあるのであるが。(おそらくだが、言葉としてのメッセージを必要とする深い人間関係や、ぼろの出始める中長期的な人間関係を築けないといったのは、これが一因)

さて、今までは人的関係は最小限でいいと思っていたし(あきらめてというのもあるが、自分自身内向的であり、刺激はごく少量の方が体にあっているため)、その場その場の、ビルド&スクラップ型でいいと思ってきた。というか、今も思っている。が、同じ職場で数十年で働くとしたら(おそらくそうなるのだが)、自分の好みがどうであるかは関係なく、これではうまくいかない。ようは仕事のために、修正が必要であるということになる。

この本で、フィードバックという概念をとらえてすぐに、職場のごく小さな飲み会があった。自分でも負担なく参加できる程度の内輪の集まりである。そこで、昼間に一緒に作業をした同僚から、自分が「無言だった」「一緒に作業していて、すまんという気持ちなった」という話が、あくまで笑い話としてだが出た。面白いことに、この同僚の言葉は、自分が箇条書きにした、行動が発しているであろうメッセージを、うまく裏書きしている。今回は概念があったため、これがフィードバックというものなのではないか、と考えることができた。もともと、飲み会に出るとひとつふたつはそういう話題になって笑いが起こる。今までもこのような、フィードバックがあり、それをフィードバックの機会としてとらえずに、取りこぼしてきたのではないか。

今までアンバランスの修正に取り掛かれなかった原因の一つは、メッセージの不一致という現象が、自分からは極めて観測しづらいということであった。しかし、自分の発するメッセージについて、事前に整理しておき、フィードバックをうまく受け取ることで、不一致を可視化できるのであれば、あるいは、と感じた瞬間である。

本書には、フィードバックを受け取ることを恐れるな、積極的に聞きに行け、ということが書かれている。自分もそういう時期に差し掛かったということである。

久しぶりに余裕のある一週間

時間が空いてしまった。
今週は久しぶりに時間のある一週間で、
今月の成果もすべて吐き出したので、
新しく前に進めそうな気がする。

周りの人間が忙しそうで、ギャップを感じる。
単純な作業なら肩代わりするのだが、根本的なストレスを共有することはできない。
今後逆転するような状況もあるだろうと考えて、乗り切ることとする。

帰宅

GWは忙しかったため、本日一日が自由な時間であった。これからはずっとこんな感じになるのだろうな。嫌なわけではないが(というか結構楽しみである)、生活の仕組みを変えていかないと、なにも出来ずに時間だけが過ぎていくことになりそう。ということもあり、本日は疲れもあったが、一日忙しくしてみた。パソコン関係では、先日インストールしたまま放って置いたUbuntuの日本語環境(ibus-anthy)を導入、chromeをインストールした。日本語環境は、インストールまでは一瞬だったが、なぜか日本語入力が出来るようにならずハマった。以下記事do-you-linux.com/blog/2014/05/12/post-2450/を参考にしたら、有効化できたが、なにが決め手だったのかがいまいち分からず。また、巷にはibusよりfcitxの方がよいというような話もあるようだが、よく分からないのでとりあえず。昔はscim-anthyだった気がする。ちなみに、IME側はmozcなどあるということなのだが、親指シフト対応するか否かで、こちらは迷わずanthyを選択した。chromeに関しては、最近ネット上の情報収集結果を整理していないことを反省して0から始めることに。とりあえず、もう一台のPCと同期だけしておいた。

めでたく日本語が入力できるようになったので、とりあえずこのエントリを書いてみたが、capslockのCtrl化と、hjklカーソルの設定が必要であることが分かった。よしよし。

しかし、PCの画面がまぶしくて辛い。PCのせいなのか、Ubuntuの設定のせいなのか、黒背景/明るさ最低にしてもなんかまぶしいのがつらい。画面にはるやつとか貼ったら効果あるのだろうか?

帰宅

つかりた。

放り込むデータを作るために、cbindでデータを一つのファイルにまとめてみようと思ったんだけど、100を超えると処理にだいぶ時間がかかるなぁ。なんかそんなことをどこかで読んだことは覚えてるんだけど、実感した。

プログラミング言語を学んだ方がいいか少しでも悩んでる人は学んだ方がいい

久しぶりに4時前に起床。時間に余裕があっていい。走りに行きたいところだが、右のくるぶしに痛みがあるため様子見。主返せば一週間くらい前のジョギングから、小さな痛みがあったような。


大量のデータファイルを扱う場合、エクセルでは限界があるよ、というのは反論の余地がないと思う。が、エクセルで限界のある量のデータを扱う方法を新たに習得するかどうかには、個人の選択の余地があると思う。機械(パソコン)を動かすための言語を学ぶためは時間が必要だし、学習にかかるコストとリターンには個人差がある。特に、年配の方にとっては新しいことを学習するのは難儀なことのようであるし、せっかく覚えてもそのコストに見合うリターンが得られるかは分からない。
一方で、若い人にとっては機械を動かすことができることによる利益は、そのための学習コストを軽く上回ることは、明白である。すると次の問題は、その特定の言語を学ぶことが、唯一最良ですか、となる。人間の科学の世界の共通言語は英語でほぼ確定であるが、機械を動かすためにはpythonを学べばもう一生いいですかどうですか。
趣味でないかぎり、また機械を動かすこと自体が仕事でもない限り、なるべく学習コストをミニマムにしたいこの気持ちは、大切にすべきだと思う。
一生いいかどうかはしらないと答えるしかない。だから、この問いには答えられない。おそらく、よくはないかもしれない。ただ、一つの事実を提供しよう。言語の学習は(特にプログラミング言語は)、1つ目より2つ目の方が、2つ目より3つ目の方が、学習コストは下がります。
ま、当たり前かもしれない。日本語しか知らない状態から英語を学ぶのと(一つ目)、言語の(英語の)学び方を知った状態で、中国語を学ぶ(二つ目)のを比較したら、後者の方が楽だ。しかも中国語の文法は英語の構文とかなり近いから、文法的にもアドバンテージがある(SVOの順序という意味で)。プログラミング言語同士も、構文はかなり近いから、新しく学ぶというよりは、今知っているものとの差分で覚える点で、2つ目以降の学習コストは小さくなる。
具体的には、自分もデータを処理するために、気が付けばかじった言語は4つ目になるが、今のpythonは最初から技術書を読んで理解できるようになった、ということである。
 最初は、データファイルの特定部位を切り出したい、という必要性から、右も左も分からず有名なC++をかじった。そのあと、テキストデータの処理なら、シェルスクリプトでもっと簡単にできるではないかと気が付き(当時はOSがFreeBSDだったので)、C++で書いた内容を書き直した。今回、複数のデータを扱いたくて
ベクトルデータをもっと簡単に扱える統計用のR言語を学んだ。でも結局Tensorflowが使ってみたくて、pythonを勉強している。
 最初のC++の時は、プログラムという物自体がなにかよくわからなくて、ネットの入門サイトを見ながらhello worldから書き写した(余談だが、人生で初めて画面にhello worldが表示されても何の感動もない。そこに期待はするな)。シェルスクリプトは普段から使っていたので、テキスト処理ができるコマンドが存在する(そもそも本来はそのためのもの?)ということを知って、関連するコマンドのあんちょこを開いたり閉じたりしていた。R言語の時は、自分のやりたいことがかなりはっきりわかっており、C++でもできるがもっとやりやすい言語があるだろうということを予測できて、事前にR言語pythonだと絞り込むことができた。R言語を選択したのは、Rの方がより用途が限られて学びやすそうだったためだが、結局もっと汎用的なものが必要になったためpythonを使うことにした。今、pythonの基礎知識の吸収は、最初のC++とは違って、いちいちhello worldからパソコンと向かい合うことはなく、布団に寝転んで、入門書を見ながらRで(C++で、シェルスクリプト)こう書いたことは、pythonではこう書くのか、差分で学ぶことができている。
 なにがいいたいかと言えば、一つ目に取り掛かるコストの大きさに圧倒されて、その一つ目の選択が最善かどうかにあまり捕らわれる必要はないよ、ということだ。一つ目が最善でないと途中で気が付いたら、より好ましい二つ目に取り掛かればよいし、その時は、ちゃんと一つ目の苦労が報われる。これは保証できる。だから、大きな岩を前にして最善かどうか思い悩む時間があったら、とりあえずhello worldと書いてみよう。

久しぶりのPC作業(2)

あ、なるほど。Tensorflowのintro_MNIST for ML Beginnersってページのチュートリアルを読解していっているのだけど、これはようは一番シンプルな教師あり学習をやってみましょうってことか?でもW,bの初期値はたいして問題ない、っていってるのはどういうことかしら。この初期値を決めるのが結構大事みたいにどこかに書いてあったような。まぁいいか。で、交差エントロピーcross entropyを計算して、誤差逆伝搬法backpropagation algorithmで最適化していくって。なんとなくという程度には分かりますな。で、この一番シンプルなモデルだと、91%くらいの精度になりますが、次のtutorialでは、もっとよいモデルを紹介しますと。で、次のDeep MNIST for Expertsで、畳み込みニューラルネットワークConvolutional neural networkに行くんですね。オッケー、オッケー、分かりません。

−−−−−−−

なんでこんな一見畑違いに見えることをするかというと。

ようは、普通の"実験"って、ある仮説に基づいてinputを替えてみて、outputが予想通りに変化するかで、仮説が正しかったかどうかを把握するわけだけど。実際はいろいろな制約上、そんなうまく実験って組めないんだよね。何か学術的に重要度の高い命題について、洗練された実験系を組んで証明するっていうのは、state-of-artの領域では称賛されるけど、99%の現場ではむしろ煙たがられるわけ。だいたい実験に必要な時間(と金)は有限なわけで、それで"失敗した実験"からも、input/outputの対を見て、何かしら考察して、次の仮説を立てるための情報を搾り取ろうとするんだけど。これ以外と人間だと限界があるor必ずしも人間には向いてない案件って絶対ある。例えば、常々疑問におもってたのが、入力変数と出力変数の対を使って、多変量解析みたいなのするとか言うけど、入力変数にx, y, zってあったら、せいぜいx^2, y^2, z^2, zy, yz, zxまでしか考慮しないじゃん。それで相関がありそうだとかどうだか。べつにいいんだけど、もしかしたら入力すべき変数は、そもそも(x-b)かもしれないのに、そんなん意味あんの?ってね。そういうのって、要は重みとバイアスを直感的に把握できるデータの複雑さって、人間には限界があるだろという話なんだけど。以外とみんな認めたがらない(笑、もっと頭を使って!みたいな)。で、今まではそうはいってもじゃあ具体的にどうしたらいいという解決策はなかったんだ。要するに、正しい解釈としては、複雑な系を有効に考察する方法は(新しい実験を、理論や経験に基づいてショットガン的に実行する以外)ありません、というしかなかった。だから、実験結果に対する過剰な考察はムシ!する以外に方法がなかった。ところが、ついにでてきたんじゃないの、ここを打破する方法が?!ということは、できない、意味ないとただ言っているわけにはいかなくなった。こうするべき、という候補ができた以上、専門がなんであれ、この技術はどうしても使ってみなくてはいけない技術なんだ、とそう思うわけですよ。というわけで、しばらくは、時間が空いたら特徴抽出ですね。

久しぶりのPC作業

古いPCにUbuntuをインストール中。

−−−−−−−−−

とりあえず、一念発起してUbuntuをインストールして、MNISTののチュートリアルを走らせて、ブラウザで学習曲線を見るところまではやったので、本日は終了。なんもわかんない割にはがんばった。

機械学習は理屈がわからなくても使える、というのは概念的にはその通りだと思うが、まだまだ敷居は高くて誰でも(ほんとの意味の誰でも)できるもんじゃないだろなぁ。あたしゃ大学時代にFreeBSDをインストールして、曲がりになりにも研究用のパソコンとして使って、論文をtexで書いたという経験でもって何とかなった感が強い。それは情報系の知識があるというのではなくて、ただ現実問題として「うまくいかなかったら、それをそのままネットにコピペして解決策を探す」という対応を知っているだけ。その態度だけはFreeBSD時代に身についたけど、あれがなかったら今もどうだかわからん。

今回はこの記事(http://d.hatena.ne.jp/shu223/20160105/1451952796#20160105fn2)を参考にさせてもらった。やり方をとても丁寧に書いてくれていると思うが、それでも環境がちょっと違うと違うところは出てくるわけで。MacじゃなくてUbuntuだったため、easy_installじゃなくてapt-getだったし、Tensorflowをインストールする部分も、Mac用ではなくLinux用のurlを指定しなくてはいけないし(これだけは実行する前に気が付いた)。今回一番わかんなかったのは、git cloneしてtutorialのpythonプログラムを走らせたときに、Errorを吐いたところ。なんかgithubのバージョンが記事の時点より新しくなっていて、古いものを選択して持ってこなきゃいけないっていうことらしい(この時点でgithubというのが何のことかもわかってないから、git cloneで何をしているかすらわかっていなかった。エラーをコピペしたらたまたまおんなじことを言っている人がいたからよかったものの(https://github.com/tensorflow/tensorflow/issues/1690)、英語だから何言ってるかよくわかんないし。でもどうもgithubっていうのはプログラムのバージョンを管理するシステムらしく、ということは古いバージョン(ブランチというらしい)が存在し、git cloneを実行するとき-b っていうオプションを加えると、古いブランチを指定して持ってこれるらしいからってんで、ダメもとでgit clone -b r0.7ってやり直したらr0.7のブランチが入ったらしくて、そのあとtutorialをやり直したら、今度は走った

…という。いやいや。無理っしょ。


でもまぁ何とかなったので。

これから今日やったことが何だったのかを、ちょっとずつ理解して、pythonを使えるようになって、自前のデータを放り込んでみてと。少しずつやっていきましょう。転がしてたパソコン動いてよかったぜ。なんかすごくブンブンいってて熱いけどな…