rtokの日記

露頭に迷ってしまいそうな大学院生が、どこかに書かなければ忘れてしまいそうな大切なことをここに残していきます。

大学院に入ってよかったこと

はじめに

ある社会人の方に相談したときのことです。

「大学院生に求められていることってなんですか ?」

 

あなたはなぜ大学院に入りたいと思ったのか。それが答えなのではないですか  

 

僕は研究をするということに強い憧れを抱いていました。しかし、今はそこまでの憧れは残っていません。研究をしたいんだという思いで、今まで勉強をこなしてきましたが、どうやらそれは絵空事に過ぎなかったようです。

ただ、多くの入学金を払って辞めるわけにもいかず、残り1年半どうにかして生き抜く道を選びました。それでも、大学院に入ってよかったと思うことがなければ、学部生との違いはほとんどないはずです。残念ながら当たり前の話です。それでも、いくつか大学院に入ってよかったと思うことがあるので紹介します。

※これは大学院に入学することをお勧めするための記事ではありません。

大学院に入って後悔しかけている人にはぜひ読んでもらいたいです。

 

よかったこと

研究者になることへの諦めがついた

小学校からずっと研究者になりたいと漠然とした夢を抱いていました。俗にみんなが言う「サッカー選手になりたい」ではなく、僕は「研究者」でした。その夢に、強い諦めの感情を抱くことができました。

それは悪い意味ではなくて、本当にやりたかったことにベクトルを向けていくことができるようになったという意味です。今ではそれに気づいて夢に近づくために、WEBエンジニアリングの勉強を頑張っています。その頑張りの力を研究にも分けることができて一石二鳥でした。

小学校の頃に抱く夢は自分の人生の過程を経て育つ本当の夢に比べればものすごく弱く脆いものです。当然、小学生の頃から研究をしていたり、研究者に出会ったりしたわけではないので、この夢はものすごく脆かったです。脆いまま引きずっていましたが、本当にやりたいことではないことにしっかりと気づくことができました。

もし学部でそのまま就職していたら、ずっと「研究者になりたかったのに」と無駄な後悔をしていたにすぎません。そう思うと冷や汗がでるくらいです。「ちょっとやってみたらなんか違う」を素直に受け入れる姿勢はものすごく難しいですが、実際重要な意味をもたらしてくれるんだと気づきました。(ちょっとやってみたら=入学金30万円)なんですけどね(笑)

 

知識がどうやって体系化されているか、最先端の技術がいかに脆いかを知れる

簡単にいえば、「教科書を読んでいるだけでは得られないことがたくさん得られる」ということです。研究をしていたり、論文を書いていたりすると感じることですが、最先端の技術はほとんど誰にも知られていません。しかも、ものすごく脆いです。ある条件が満たされないと使えなかったり、何の役にたつのかがあまりわかっていないようなものであったり、そもそも誰にも知られていなかったりします。

教科書を読んでいるとものすごくまとまっているので、あたかも研究者はしっかりと体系化させているように見えますが、それはただ本になったからのことだけなのです。

実際は論文という形で散らばった情報にすぎません。実際は「なんかちょっとやってみたらうまくいった」くらいのノリで研究をしています。それを知れただけでも、科学はどうやって進展していくのか、どうやれば最先端技術を探せるのかがわかるようになります。だからこそ、学部生よりも科学に対する先見の明は断トツにあるでしょう。だからこそ、エンジニアリングのリーダーシップをとるのに優位に立つことができるに違いありません。院卒の収入がいいのはそういうことなのでしょうか。

 

さいごに(大学院に入るべきかわからない人へ)

今思い浮かぶのはこれくらいです。進路に悩む学部生に会うとき、僕は大学院に入るのはおすすめしていません。なぜなら大学院に入らなくても勉強なんていくらでもできるからです。論文なんて買えば読めますし、研究も情報系なら資源を買ったり借りたりすればできます。

なぜ大学院に入りたいのかをしっかり選んでみてください。おすすめの方法を教えます。

Because 大学 has ○○ and 大学's 研究室 has ○○

 「こうなりたいから = be」で選ぶのをやめて、

例えば、「高性能計算機をずっと使っていたい」と思うのであれば、大学院に行くべきです。なぜなら、高性能計算機を専有できるのは大学か研究所くらいだからです。

そして、大学院に行くなら研究室は必ず選んでください。この研究室ならこの施設を持ってる。とか、hasで絞り込んでみるといいかもしれません。

「研究者になりたい」という漠然とした夢はとても危険です。しっかりと進路を選んで有意義な2年間を選択してみてください。

人は過ちに背を向けて立つ

f:id:rtok:20170917135548j:plain

 

僕の人生を振り返ってみるとろくでもないことだらけでした。

 

ただ、どうして僕が引き下がることなく前に進めるのでしょうか。過去に多くの過ちを犯してきたことが引き下がることを諦めさせてくれているのではないでしょうか。さらに、この考え方が、過ちに対する強い肯定感を与えてくれる気すらしてきます。

 

例えば、あなたが大学受験に失敗したとしましょう。あなたは浪人することになります。そのときはかなり傷つきましたが、なんとか頑張って次の年は受験に成功しました。あなたは、この1年を無駄だと感じるでしょうか。

 

僕は無駄だとは思いません。確かに、1年間の遅れをとってしまっています。ただ、前進することへの恐れは格段に弱くなるはずです。むしろそういう考え方をするための大きなチャンスだと捉えるべきです。過ちは背に立つ壁のようなものなのです。

 

今まで僕が会った中で、無難に物事を進めることができるような人は、挑戦的な性格ではありませんでした。また、彼らはどこか将来への不安を感じています。実際、僕の友達のA君は、テストはいつも好成績で、人当たりもいいです。しかし、彼は自分で何かを見つけてやることもしません。さらに、将来に対する強い不安をいつも僕に漏らします。

 

反対に、一度留年したB君はものすごく頑張っています。また、自分の意見を捻じ曲げることなく主張できる強い力を持っています。今では博士課程後期に向けて必死に研究生活をしているようです。

 

A君B君で比べるなら、当然B君の方が優秀な社会人となりそうな気がするでしょう。自ら問題意識を掲げてそれにまっすぐに立ち向かうことができるし、さらに研究をしっかりやっているので専門的な知識も兼ね揃えています。1年のハンディキャップがあるのにも関わらず、むしろA君を出し抜いています。

 

結局、過去の過ちは前進へのエンジンとなり得ます。もちろん、それに気づくまでには多くの時間がかかるでしょう。まずは過ちを反省し、それを起爆剤として前に進む。こういう正のスパイラルへつなげる考え方ができれば、自然と過ちに対する恐怖感が薄れ、しかも成長へとつなげることができます。

当然過ちを犯してしまったら、そのときは周りに迷惑をかけるかもしれないし、取り返しのつかないことになってしまうこともあるかもしれません。しかし、その過ちに囚われ続けるだけでは何も生み出されません。もし前に少しでも進みたいと思うのなら、しっかり反省して、それを前向きな力に変える努力をしてみましょう。

 

無難な生活が面白くないと感じるのであれば、その前にまず失敗してみませんか。どんな失敗でもいいです。普段の生活を失敗と捉えることでも良いです。とにかく、失敗することがあなたを正のスパイラルへつなげる一つの大きなきっかけとなるはずです。

 

高専時代お世話になった研究室の教授は、アカデミックハラスメントをしていた学科長に常に対抗する態度を取り続け、学科長のせいで鬱病になった同僚を救いました。そんな芯の強い彼の言葉を借りてこの記事を終わりとします。

 

選択肢が二つ以上あった場合

大変だと思うことを選びなさい

 

 

プログラミングの話:最近はNode.jsで麻雀アプリを書いてます

Node.jsの話

 つい最近参加したインターンシップでNode.jsを扱ったので、これを気にNode.jsの勉強をしてました。加えて、インターンシップの合間の休日で麻雀ゲームで遊んでたら思いの外ハマってしまい、本格的にルールを覚えるためにNode.jsで麻雀アプリを作ってみることにしました。

 他のWEBフレームワークに触れたことがあまりないので見当違いかもしれませんが、かなり学習コストが低めで、パッケージの導入も簡単というのが第一印象です。

 

今はこちらの電子書籍を使って勉強して、ようやく一通りやり終えました。npmの使い方やejsとExpressの使い方に触れられていました。require最強ですね。

JavaScriptエンジニアのためのNode.js入門

JavaScriptエンジニアのためのNode.js入門

 

 こういう、すぐ終わってかつ安いというのがうれしいですね。ネットの記事やドキュメントだと読む気にならないんですが、こういう風に本で書いてあるとなぜかやる気が出てしまうのが悪い癖です。

大体新しいものを勉強して分厚い本を図書館で借りて挫折するのが常でした。また再トライしてみないとですね・・。

以下途中で挫折したものリスト↓

難しいからというより、まだ難しい段階に入る前に飽きてるんですよね・・・。もっと根性鍛えなきゃいけないですね。

 

麻雀アプリの話

話を戻して、麻雀アプリは今は洗牌してから牌山に置くところまで実装しています。

 

f:id:rtok:20170916222113p:plain

 

正直ゲームの都合上、内部的に牌山に置く必要もないんですが、イカサマできたり確率の分析ができるようにしてみたいのでとりあえずは全ての機能を実装する予定です。

ついでにExpressを知らない状態で書いてしまってるので、次のコミットはExpressを導入して書き換えることになるかと思います。今のところ完全に静的なWEBアプリになってるので後々Ajaxの仕組みも組み入れていきます。

フィンランドで撮った写真を元にTipsを語る

どうもフィンランドシリーズで記事を汚しております。

実はフィンランドに行ったのは2017年の1月~2月で、8月ごろ、いつでも過去を振り返って自信にしたいと思ったので今更記事に仕上げています。

 

これはゲストハウスのキッチンです。フィンランドは白で統一するインテリアが流行っているそうです。パット見高級感はありますが、いざ触ったりするとがたがたしていたり引っかかったりしていて、日本の方がしっかり作ってるんだなと痛感しました。

f:id:rtok:20170915010822j:plain

 

これの何が面白いかわかりますか?

窓の厚さです。フィンランドは防寒に徹底していて、換気用のドアを空けてみたら窓が占める空間がものすごく分厚いことにびっくりしました。

ちなみに屋内限定であれば、冬のフィンランドの方が断然積雪ワースト3に入る静岡県より温かいです。

f:id:rtok:20170915011032j:plain

 

朝焼けも綺麗です。緯度が低いので起床時間あたりに朝焼けになることもあり、こういうきれいな朝焼けに出会いやすいです。

f:id:rtok:20170915011428j:plain

 

僕が滞在した2ヶ月の中でもベスト3に入る大雪でした。しかし、僕が滞在した2ヶ月は例年に比べるとかなり雪が少なかったようです。

f:id:rtok:20170915011625j:plain

 

あと15記事くらいは書くことになると思いますが、おつきあいください・・・。

フィンランドで買ったもの その1

フィンランドに行った時に買ったものを写真でとるようにしてたので、ここで公開します。フィランド旅行に行かれる方、出張に行かれる方には必見です。

 

まずフィンランドヘルシンキはメジャーなスーパーが2つあります。

S-marketとK-marketです。僕のゲストハウスの近くにはS-market(pihlajamäki)があったのでよく利用してました。とりあえず買い物はこの2つのどちらかで済ませるのが良いと思います。

 

      f:id:rtok:20170913173044p:plain         f:id:rtok:20170913173046j:plain

 

フィンランドの飲料メーカーJAFFAのオレンジジュースです。独特の苦味と味を抑えた感じがあってなかなか癖がある飲み物でした。2日目に何も知らずに買ったのでこれで400円くらいだったと思います。日本でいうコンビニに相当するお店、R-kioskiで買うとこうなります^^;

f:id:rtok:20170913173216j:plain

 

左はスポンジで、右はトイレットペーパーです。

スポンジはなかなか硬めでした。トイレットペーパーも同じく。安物なので仕方がないです。

f:id:rtok:20170913173557j:plain

 

パインジュース(これは150円くらいだったと思います。)とパスタですね。大体の食事はこれでつないでいました。今思えばよく飽きませんでした。パスタソースのテイストが自然な感じだったのが良かったのだと思います。

右下はサルミアッキです。最初はうげーとなって、こんなに買ってしまったがなんとか2ヶ月あれば消費できるだろうと思っていましたが現実は甘くはありませんでした。最終的に大量に残してフィンランドを旅立ちました。

f:id:rtok:20170913173748j:plain

 

これはパンです。フィンランド人は主食にこだわらないというのを聞いてパンだけを夜ご飯にも食べていたりしました。僕は日本では絶対やらないことなんですが。ただここのパンは、食べごたえもあってお腹に溜まりやすいです。今思うと日本のパンって悪意があるような気がします。

f:id:rtok:20170913174012j:plain

 

無糖のMUSTIKKA(セイヨウスノキ)ジュースです。なかなかこれも癖があって飲み干すのに時間がかかりました。渋みと苦味が強いので日本人にはあまりおすすめはできません。最初はただのぶどうジュースだと思ったのに・・。

f:id:rtok:20170913174147j:plain

 

ベリージャムです。これはとてもおいしかったです。器がおしゃれで持って帰りたかったのですが、スーツケースがパンパンだったので断念しました。

f:id:rtok:20170913174459j:plain

 

ソーセージです。これはかなり安いのでおすすめです。怪しさがわからないのでなんともいえませんでしたが、全然だいじょうぶでした。

f:id:rtok:20170913174635j:plain

 

即席パスタです。後半はこれが楽だということに気づき、これに頼るようになっていきます。

f:id:rtok:20170913174750j:plain

 

Japanilainenの醤油です。卵かけご飯を食べたくなり、次で紹介するお米を鍋で炊いてそれにかけるつもりで買いました。生卵で頂きましたが、よくよく考えると日本の生卵はめちゃくちゃ安全だそうで、命知らずな行動でした。ただ、人によっては北欧の生卵は安全だという人もいるみたいで、なんともいえませんが、マネはしないでください。

その後は半熟卵を作ってやってました。

f:id:rtok:20170913174837j:plain

 

これがお米です。これ

を参考にして炊いてました。日本らしい米というのは、フィンランドではなかなか食べれません。フィンランドのお米料理はめちゃくちゃパサパサしてます。

f:id:rtok:20170913174839j:plain

 

HARIBOです。実はこれの中にもさりげなくサルミアッキ混入して入っています。

なかなかおいしかったですがジャンキーでもありました。

f:id:rtok:20170913175258j:plain

 

これがポマックです。フィンランドにきて一番美味しいと思った飲み物です。ジンジャエールとは違いますが、系統は似ています。

f:id:rtok:20170913175255j:plain

 

これはオレンジです。多分種類が色々あったはずなのですが覚えていません。こうやって、袋にいれて秤にのせて商品番号を押すとシールが出てくるので貼ればオッケーです。

f:id:rtok:20170913175302j:plain

 

これは洗濯の網です。

f:id:rtok:20170913175301j:plain

 

こんなのもありました。

f:id:rtok:20170913175305j:plain

 

結構物騒なニット帽(スキー用)を持っていったので自分で軽いものを買いました。これでも十分耐えられます。ー20℃のときはさすがにスキー用のニット帽でいきましたが。。

f:id:rtok:20170913175304j:plain

 

これは日清の焼きそばです。ただ、おいしくないです。

f:id:rtok:20170913175318j:plain

 

これはベリーです。奮発して買いました。これで確か300円くらいだったと思います。独特の酸味が癖になりますね。そのまま食べると酸っぱすぎて耐えられないのでヨーグルトに入れて食べてました。なかなかおいしかったです。

f:id:rtok:20170913175320j:plain

 

研究用のフレームワークを作ってみる計画 Part1

背景

情報理論のある分野でかなり素晴らしい結果を出したとあるアルゴリズムの汎化に向けての研究をしています。当然僕は天才ではないので汎化のために別の条件でも同じような性能を出す方法を提案する研究を行っています。結果がある程度出ていますが、ある理由によりやる気がほとんど消滅してしまいました。

 

そこで、僕の研究生活を振り返ってみると、

  • 発想力と直感力
  • 多次元データの管理
  • 何通りもののアルゴリズムの管理
  • それによる莫大な組み合わせの結果の管理
  • 多次元データの可視化による解釈

これらを同時に行う必要がありました。実際、研究の面白いところは、この赤色の部分のみです。個人的には青色の部分にも興味はありますが、ほとんど興味は持たれていないといってもいいでしょう。

近い分野で流行っているディープラーニングの研究では、パラメータを調整するだけでいいのでソースの管理は、こちらからしてみるとかなり簡単に見えます。

しかし、複雑な式を組み合わせたアルゴリズムを系統的に管理する必要があるのですが、コーディングスキルがそれほど高くない場合(特にこの分野の研究者はコーディングスキルがほとんど求められない)、コードは研究を重ねていくほど煩雑になっていきます。そして結果が出る頃にはその結果をまとめられなくなります。

そこで、フレームワーク作成の勉強を兼ねて、組合せ爆発に耐えうる試行錯誤用のフレームワーク(仮名:trython)Pythonで作成することにしました。

概要

そもそも、なぜこの発想に至ったかというと、3ヶ月ぶりにコードを眺めていたら、この実験用のスクリプトがある程度汎化できるのではないかということに気づいたからです。まだ論文にしていなので実際のコードの公開はできませんが、ある程度のスクリプト群を説明します。

  • 先行研究により提案されたアルゴリズムを実現するクラス
  • 研究で示したい条件を満たすようなナイーブな実装による子クラス
  • パラメータを改変させながらトレードオフ関係を計算する実験クラス
  • 実験結果を読んで可視化処理するスクリプト

これに加えて子クラスを大量に作ることで試行錯誤の実験を行っていましたが、それでは子クラスを定義するファイルが大量にできるだけで特に実験の内容を保持しておくことができませんでした。

そこで、どんな実験を行ったかをひと目でみてわかるよう、実験スクリプト定義クラスを分離することで管理を行ってみてはどうかとひらめきました。

 

実験スクリプト

実験そのものを記述するためのスクリプトです。設計思想としては、

  • 高い可読性を維持
  • どんな実験を行ったのかが実験スクリプトを見ただけでわかる。(コメントの記述は不要)
  • 実験は実験スクリプトからしか実行できない
  • 入出力、可視化に関して強い関係を保つ

 

定義クラス

実験に必要な概念を定義するためのクラスです。設計思想としては、

  • 概念の記述に関して、適当な汎化を要求(これを怠るとコードが非常に煩雑になる)
  • データの次元、パラメータ、組み合わせパターンなどを管理

 

こんな感じで修論の研究に備えて作ってみようと思います。

アルゴリズムの研究、数値実験を伴う研究をしている大学院生で同じような悩みを持っている方がもしこの記事を見かけたら連絡をください。一緒にやりましょう。

人間はいつの間にか変化を拒むことを覚える

僕はとある社会貢献活動を行っている団体に所属しているのですが、その団体が共催する催し物の進行役を募っていたときの話です。

私立の中高一貫校の教諭の方(以降:先生)がその責任者をやられていて、募集をかけていました。

僕はなんとなく、

 

「やってみたいのですが、滑舌が悪く、声が小さいので得意な方に任せたいです。」

 

と返事をしました。

先生は、とにかく僕にやってもらうよう説得をはじめました。

「苦手でも下手でもやっている姿がかっこいいのだ。そういうものに価値がある。」といったような話を、熱弁してくれました。

 

ふと僕は気づきました。この感覚なんだか懐かしいなと。

苦手だけどとにかくやってみなきゃだめじゃないかと思った3年前のことを。

年をとっていくごとに自制が必要とされる変化を拒むようになっていたことに気付かされ、ハッとしました。変化に対する満足感を得る水準が年々小さくなっているのです。

こうやって大人は頑固になっていくんだなと感じました。

 

人間、他人のことは言えるのに、自分のことは何も言えません。こうやって、他人に刺激を与えてもらうようなOpportunityをある程度維持し続けることが、今後成長し続ける上でとても大事なんだとわかりました。