tkm2261's blog

研究員(OR屋) → データ分析官 → MLエンジニア → ニート → 米国CS PhDが諸々書いてます

kaggle Tweet Sentiment Extractionコンペで5位でした。

解法 (英語)

www.kaggle.com

解法(日本語)

チーム組んだguchio3さんの記事

guchio3.hatenablog.com

解説動画

www.youtube.com

kagglerを訪ねて三千里という企画を始めました。

お久しぶりです。tkmです。

最近Youtubeで「kagglerを訪ねて三千里という企画(リモート)」という企画を始めました。

f:id:tkm2261:20200523052016p:plain

これは私がYoutube Liveに毎回ゲストをお呼びして、kaggleやそれにまつわる話をゲストとだらだら話す企画になります。

構想自体は昔からあって、以前kaggleの入門動画を上げたときに

「スキルよりも何故そういった特徴量を思いつくのかといったことを知りたい。」

というコメントをいくつかもらい、言語化は難しいですがインタビュー形式でざっくり上位kagglerが何を考えているかを伝えられればと思い始めました。

高尚なことを言ってますが、論文投稿が一旦落ち着いて、日本語で会話してリフレッシュしたかったという私の思惑も大分強いです。

現在、onoderaさんtoshi_kさんにお越し頂いて、これからsmlyさんやjackさんにもお越し頂く予定です。

youtu.be

youtu.be

live中にする質問や出演者の自薦他薦も募集していて、こちらのフォームからよろしくお願いします!

docs.google.com

米国で個人売買で車を買う

こんにちは、tkmです。

最近ちょうど車の更新の案内が来たので車を個人売買で買った時のことを書いておきます。

免責: これで実際車買ってトラブルにあっても知りません。1年前のことを思い出して書いているので正確でない場合があります。そもそも州によってルールが違う場合があります。

個人売買のトラブルは多い

個人売買の魅力はディーラーで買うよりも安く車を手に入れられることですが、典型的なレモン市場であるので結構トラブルも多くあります。

周りで聞いた話だと

  • オイル漏れしているが、試運転前にはオイル突っ込んどいて動くようにして、買った翌日には動かなくなっていた
  • エアコンとかが壊れてて結局修理に2,000ドルぐらい使った

などなどがあるので、長く滞在する場合は新車を買うことも視野に入れても良いかもしれません。20,000ドルぐらいあれば買えるかと。

私は大学のFacebookコミュニティ経由で車を購入

もう一つ留学生の個人売買の魅力としては、だいたいの大学で車や家具などを売買するコミュニティがFacebookなどにあるので、

そこで買うと受け渡しがスムーズに行えるのと、どこで繋がってるかわからないので同じ大学の人は騙しずらいというのがあります。

私の場合偶然ですがオーナーがUCIの講師で、かなり信頼できるというのも購入した理由のひとつです。

価格は6,000ドルで2009年製のCX-7を買いました。走行距離も10,000マイル超えてますが元気に走ってます。周りの友人みんなに『日本車にしろ』と言われましたが、日本車は走行距離が長くても丈夫なのと故障した時の修理費が安いので、こだわりがなければ日本車が良いようです。

f:id:tkm2261:20200313114752p:plain

留学生以外には使えない技ですが、他にもいろいろサイトがあるのでそこを使うと色々な人から車を買えますが、

よくわからないのでこの辺りは他サイトに譲ります。

オーナーからまず聞く情報

とりあえず興味ある車を見つけたら以下を聞きます。

  • VIN code
  • 製造年
  • モデル (オプション込)
  • マイレージ(走行距離)

あとオーナーがCarfax report(後述)持っていることもあるのでもらえるか聞くとよいです。

VIN codeは別に個人情報でないので気軽に聞いてOKです。

価格の妥当性

車の価格は主にKBBのサイトの価格(KBB Price)が参考にされます。ここはあまりに有名なので売り主もこれを見て価格を決定しています。

注意するのは”Private Party Value(個人売買用の値段)を見ることです。ディーラー用の値段だとまず折り合わないので注意が必要です。

ほかにはCarfaxもPrivate Party Valueを提供しています。

車の事故歴・メンテナンス歴を調べる

ちゃんとした事故歴・メンテナンス歴を調べるのはcarfaxとかAutocheckにお金を払う必要があります。

ただ前述のようにオーナーが持ってる場合があるので聞くとよいです。

この事故歴・メンテナンス歴は無料でもある程度調べることができて、

Carfaxで無料ユーザー登録して自分の車としてVINを登録するとメンテナンス歴がみれるのと、

VINCheck® | National Insurance Crime Bureauから盗難車かどうかや、Total lossの事故歴があるかも見ることができます。

私は無料のだけでやりましたが、この後の試乗とPrepurchase inspectionで問題あればわかるのでそれでよしとしました。

試乗と購入前検査(Prepurchase Inspection)

色々調べて購入に前向きなら試乗をします。もう相当乗り気なら試乗のタイミングでPrepurchase inspectionをしてしまうのが良いです。

Prepurchase inspectionは車の修理工場に持ち込んでプロに調べてもらう工程です。予約はしたほうが良いですが飛び入りでも何とかなるとは思います。

もちろん持ち込むことをオーナーに確認しますが、これを断られる車は買わないほうがよいです。

私の時はオーナーも来たいというので私の友人と3人で行きました。

値段はまちまちで30〜80ドルぐらいはかかると思うので、事前に安いところを調べておくとよいです。

そこでブレーキの摩耗具合やタイヤの摩耗具合やオイル漏れなどなどを調べてもらいます。

最終的にこのレポートで見つかった問題をベースに値下げ交渉をします。

その他、今年の車の更新をやっているかと、スモッグテスト(2年毎に必須)をいつやったかでも値下げ交渉の余地があります。

個人売買は現金主義

車に乗って値段の折り合いもついたら実際に購入します。小切手や振込とかで購入OKな方もいますが、これらは口座にお金なかったり後からキャンセルできたりでリスクがあるので現金が好まれます。

ただし、大金を持ち歩けないのでオーナーと一緒に最寄りの銀行に行くことになります。引き出す必要はなくて二人でカウンターに行くと直接お金を移動してもらえます。

このときに諸々の書類も処理します。

ところどころに走行距離を書く欄があるので、買う前にOdometerの写真を取っておくとよいです。トラブル防止にもなります。

お金払う前か後に書類仕事をします。

  • スモッグテストの証明をもらう&有効日付の確認
  • 車の所有証明Certificate of Title (Pink Slip)に二人共サインして半分もらう。
  • Bill of sale (https://www.dmv.ca.gov/portal/dmv/detail/forms/reg/reg135) に二人共サインして半分もらう。(多分形式自由、別の州の場合はそちらを用意)

ここでBill of saleには購入価格を書くのですが、これを元に登録料が決まります。なので売り主と協議して実際より安い金額を書くと登録料が安くなります。

ただし事故があった場合などは保険額がこれベースになるのであまり安い金額にもしないほうが良いので適当な金額にするとよいです。

これで売り主とするやり取りは終わりです。

以上のことは記憶をもとに書いているので、日本語でも色々な方が書いているので別途調べることをオススメします。公式もわかりやすいです。

DMVで車の登録

買ってから(確か)10日以内に車をDMVで登録する必要があります。DMVではアポ取れる場合がありますが一杯で取れないことも多いので、アポ無しの場合は朝7時ぐらいから並ぶとよいです。

朝7時に行った時は開いてから30分ぐらいで手続きできました。なお昼頃行くと4時間ぐらい待つと思います。

DMVにはチェックリストにあるものとBill of saleを持っていきます。

カリフォルニアの場合は登録に保険が必須ではない(確認されなかった&チェックリストにもない)のですぐやってしまうのが良いです。

ただ保険加入は必須なので、なるはやで加入しないといけません。

保険加入と免許取得

ここで免許の取得時期と少し関係してきます。免許番号がないと保険に登録できないのですが、私は免許を取る前に車を購入しました。(試乗も友人にやってもらった。)

なんで?と思われるかもしれませんが、免許の実技試験には自分で車を持っていく必要があるので免許取る前に買ってしまうと色々楽なんです。

免許番号は仮免の筆記試験に合格するともらえるので(本免許も引き継ぐ)、車を買ったらすぐ受けに行ってしまうと良いです。

日本の免許持ってる方なら前日に過去問練習していけば多分受かると思います。受かると即日仮免が発行されて、カリフォルニアの免許を持つ人を助手席に乗せると運転することができます。

余談ですが、F-1学生は微妙なラインらしいですが多分日本の免許で一人で運転することができます。(各自の判断でお願いします。)

(ラボの中国人の友人は実技試験に自分のみで運転していって何も言われなかったのと、彼はインストラクターにお願いして運転練習していて、そのときにインストラクターが大丈夫と言っていたそうな。)

あと仮免(Permit)だと入れる保険会社が制限されます。GEICOとかProgressiveとかは大丈夫です。

どのみち最初の保険料は馬鹿みたいに高いので一旦加入して半年後に見直しするのをオススメします。

あと保険の加入証明は実技試験受けるときにも必須です。

Enjoy Driving!

これで晴れて自分の車を運転することができます。アメリカ社会は車を前提に作られているので、車が手に入ると行動の自由度が一気に増します。

体験版が終わったというか、FF7でミッドガルを出た直後とかそんな感じです。

買い出しの幅も一気に広がります。その結果私はアジアスーパーで日本とほぼ変わらない食生活になってます。

そんなこんなで楽しんでください。

NDSS2020でBest Technical Poster Awardを受賞した

こんにちはtkmです。

今回はシステムセキュリティのトップ会議のNDSSでポスター賞を貰ったのでブログにします。

システムセキュリティの分野では4つのトップ会議があり(S&P, Usenix Security, ACM CCS, NDSS)、NDSSは四天王の中でも最弱的な立ち位置ではあるもののトップ会議とみなされています。

ただこの分野のポスターはproceedingsではないので特に業績とみなされないのでまあ超すごいというわけではないですが、PhD1年目での受賞はかなりの励みになります。

この研究はすぐに論文投稿もするのですぐまた共有できればと思います。

あとこの分野ではデモ動画とプロジェクトサイトを作るのが一般的みたいなのでそちらもどうぞ

sites.google.com

kaggleサンタコンペ2019の解法解説動画を作った

23位で最適解まで行けたので、kaggleサンタコンペの解法解説動画を公開しました。 一つの問題をGurobi, CPLEX, PuLP+CBCで解いているのはあんまりないと思うので、参考になればと思います。

github.com

www.youtube.com

www.slideshare.net

米国(州立)大学の授業運用について書いてみる

おひさしぶりです。tkmです。

90日更新内容広告が出てしまったので、今回は学部生の授業で採点係をやった経験をもとに、米国大学の授業の運営について諸々書いていきたいと思います。

私は今回採点係でしたが、指導教員の授業なのと指導教員が来年TAやって欲しいからとTAと同等以上のタスクをこなしたので学期通しての一連の流れは把握しています。

採点係(Reader)とTA

採点係の呼び方は大学によってまちまちですが、UCIではReaderという呼び方をします。(Greaderと呼ぶところも)

履修人数が50人を超えると50人毎にTAか採点係をつけることが出来ます。50人を下回る大学院の授業なんかはLecturer(教授)が全部やらないと行けないので結構大変です。

今回私が担当した授業は130人履修で、2TA+1Readerの体制で捌きました。↑の計算式より一人多いですが昨年実績で割当が決まるのでこの体制でした。

TAをやるには学内英語試験突破 or TOEFL iBT Speaking 26点以上が必要なので、Ph.D.留学生の最初の学期は大体が採点係をやることになります。

TAとReaderの業務の差異としては、一応Readerは学生と対面する業務(Office hour、演習授業の実施、代打授業など)は出来ずにまさに採点要員となります。

ただ運用自体はLecturerに任されており、私の場合はOffice hourの実施、試験&宿題問題作成、1コマ代打授業、LecturerのOffice hour代打などほぼTAと同様以上の業務になりました。

給料はTAのほうがもちろん高給ですが、PhD学生の場合、入学時に給与が決まっているので差はでません。ただ採点係は時給制なので2週間毎にタイムシートの提出が義務付けられていたり、労働時間が保証給料額に届かない場合は補填を申請したり少し面倒があります。

修士学生がTAをやると授業料半額免除+1学期$7,000が貰えるそうです。Readerは基本PhD学生で埋まるので詳細は知りません。

TAも基本はPhD学生優先ですが、今期に限っては中国人にビザが降りない問題で人手不足らしく修士の人もTAは比較的できたようです。

またReaderの給料はDepartmentが出していて、TAの給料はSchoolが出しており、Departmentとしては一刻も早くReaderからTAになって欲しいという事情もあります。

補足: GSR (Graduate Student Researcher)

少し横道にそれますが、PhD学生の給料はTAとReaderをやる以外に指導教員が給料を払うというGSRというオプションがあります。日本でいうRAです。

後述しますが、TAとReaderの業務量はかなり多いので研究にかなり支障があります。

幸いにしてウチのCS学部はお金持ちでかなりの学生がGSRで雇用されています。ただ卒業要件にTAもしくはReaderを最低2 quartersとあるので、やらずに卒業という事は出来ません。

聞いた話によるとComputer Engineering学部はお金がなく、PhD学生もずっとTAをやらないと行けないという話を聞きました。普段学位名を気にすることはありませんが、お金の有無には影響しそうです。

タイムライン

Quarter前: 履修登録

Webシステム上から履修登録をします。大体学期の1ヶ月前から履修登録が出来るようになり、学期が始まった最初の2週間は自由に履修の登録・取下げをすることが出来ます。

人気授業の場合は枠が埋まったあとに、Waiting listが開設されて、この2週間の間誰かが履修を取下げてくれることを祈りながら待ちます。

この間に私も「今期TAかReaderをやりたい」というのをシステムに登録します。

Week 0-1: Kickoff meeting & 宿題①問題作成

Lecturer, TA, Readerでキックオフを行います。タスクの割当やSlackの開設をしたりしますが、これも授業によってまちまちです。

最初のタスクとしては、演習授業の担当割当と最初の宿題の問題作成です。

宿題の問題については、これもまちまちですが、我々の場合は4人で分担して問題を作りました。作るといっても膨大な過去問を参考に、数字を変えたりアレンジしたりして使うので1からではありません。

Week 2-3: 宿題①公開

大体授業開始後2週間以内に最初の宿題が出されます。多くの学生もこの宿題の内容を見て履修を取り下げるか続けるかを判断します。

大体締切は二週間後のWeek 4であることが多く、その1週間後に中間試験(Midterm)があります。

Week 4: 宿題①採点開始 & 中間試験(Midterm)問題作成

私が担当した授業では宿題は大問が5個あり、これを130人分採点する必要があります。

大体1問あたり採点に3分はかかり、コレを130人分やると、単純計算で

3分×130人×5問 = 1,950分 = 32時間

かかります。問題によっては5分ぐらい採点にかかるのもあり、採点でかなり研究の時間が潰れます。

後述するGradeScopeというツールはかなり採点を楽にしてくれますが、それでも大変です。

加えて、この期間に中間試験(Midterm)の問題作成もあります。

Week 5: 中間試験(Midterm) & 宿題①採点続き & 宿題②問題作成

米国の授業の場合中間試験(Midterm)と期末試験(Final)の2つ試験があることが殆どです。大学院授業の場合はプロジェクトベースの授業が多いので試験でなく最終発表だったりしますが、学部は数百人履修するので試験形式が多いようです。

試験は授業の教室で行い、80分間で大問5個でした。期末試験(Final)は全授業一律2時間ですが、授業は1コマの時間でやります。

不正受験が無いように、顔と名前が学生証と一致するかしっかり確認します。

Week 6: 宿題①採点返却 & 中間試験採点 & 宿題②公開

採点が終わったら、採点結果を公開します。提出も返却もGradeScope上で行います。授業によってはCanvas(後述)で行うこともありますが、UIの優秀さからGradeScopeが専らになってきています。

日本の大学と異なり、GPAが重要視される米国社会では宿題結果ひとつでも学生との熾烈なやり取りが発生します。

大体どの授業でも、平均・標準偏差・中央値(たまにヒストグラムも)は公開されて、正規分布を仮定すると大体自分が授業のどの辺りにいるかを把握できます。

一応授業評価は絶対評価なのですが、後述する”Curve”は相対的に決まるので自分の順位はかなり大事になります。

採点結果返却から一週間はRegrade Request受付期間となり学生からの申告を受け付けます。このRegrade RequestもGradeScope上のみで受け付けており、対面で対処しないで済むようになってます。

対面で英語でまくし立てられたら、適切に対処できる自信がないのでコレは本当に助かります。

二個目の宿題も中間試験後すぐに公開されます。

Week 7: 中間試験返却& 宿題③問題作成

フローとしては 宿題①と同じく、平均・標準偏差・中央値を公開したあとRegrade Requestを受け付けます。

ただし、中間試験は成績への寄与が宿題より大きいので少しRegrade Requestは増えます。

あとこの授業では中間試験が難しく、平均がかなり低かったので、学生から「”Curve”はどうなりますか?」という質問が出てきます。ただ”Curve”は学期末に教授が決めるので何も答えられません。

Week 8-9: 宿題②採点開始 & 宿題③公開

中間試験を返し終わったのも束の間、すぐに宿題②の採点に入ります。

学生からするとやっと宿題を提出したのに、次の宿題がもう割当られることになります。

宿題も決して軽いものではないので、学部生は4つぐらい授業を取るので、米国大学生は学期中は常に宿題に追われています。

「米国の大学生は勉強する」 and 「日本の学生は勉強しない」はこの辺りから来ています。

ただ忙しすぎて、ラボに所属して研究活動とかには支障があるので、忙しければ良いというわけでもないです。

Week 10: 宿題②返却 & 宿題③採点開始 & 期末試験作成

流石に慣れてきますが、採点とRegrade Request対応でかなり忙しいです。期末試験も中間試験と同じように作成します。

Week 11: 宿題③採点続き & 期末試験

期末試験は中間試験とことなり、学科から場所と時間がアナウンスされます。時間は2時間で大問8つでした。

Week 12: 宿題③返却 & 期末試験返却 & 最終成績確定

最終成績の確定が期末試験後1週間という鬼スケジュールで組まれており、これがかなり大変です。事前にアナウンスしてRegrade Requestの受付期間を24時間にしてなんとか間に合わせました。

最終成績(レターグレード)と”Curve”

前述の通り、この授業は3宿題+2試験の構成になっており、各宿題が16%、各試験が26%で最終成績が決定されます。

この最終成績の決め方は必ず最初の授業でアナウンスされ、学生はこれも考慮にいれて履修を決めます。

このように、かなりシステマチックに成績が決まるため、オンラインでも十分に運用できます。近年オンライン修士が流行っているのはこの辺りもありそうです。

最終成績は一応絶対評価になっており、UCIの推奨だとこんな感じになっています。

A+ A A- 94–100% 94–100% 90–93%
B+ B B- 86–89% 83–85% 80–82%
C+ C C- 76–79% 73–75% 70–72%
D+ D D- 66–69% 63–65% 60–62%

例えばA-の場合、課題とテストの前述の割合での加重和が90–93%であれば貰える事になります。

一応、D-まで単位が出ますが、GPAは悲惨なことになります。GPA3.0維持にはB以上が必要です。

f:id:tkm2261:20190405114140p:plain

Ph.D.学生の場合はGPA3.5を維持しないと行けないので、A-以上が必要になります。ただ大学院の授業は評価が甘めな感じはあります。

しかし問題として、生の課題とテストの加重和を当てはめると、殆どの学生がB-すら厳しい事態が発生します。これを緩和するために”Curve”と呼ばれる点数補正が入ります。

”Curve”の仕方は授業や教授によってまちまちですが、単に全員に定数を足して下駄を履かせたり、正規分布にフィットしてパーセンタイルで評価したり色々ありますが、基本は公開されません。

ただ”Curve”は基本的にクラス内の状況で決まるので、成績評価は実質相対評価になります。

感覚的には大体平均ぐらいにいるとB+が来るイメージです。

米国大学の授業運用三種の神器

学部授業の場合、数百人が履修するのはざらなので、システマチックに運用する必要があります。これを可能にする3つのツールがあり、全米の大学でおそらく導入されています。

Canvas

Canvasは授業評価用の統合サービスで、大学の履修・成績システムと紐付いており、一応評価・宿題提出・試験返却など一通りのことが出来る様になっています。

ただかゆいところに手が届かないため、他の2つのツールが必要になってきます

Piazza

Piazzaは授業掲示板で、授業のアナウンスや学生からの質問もPiazza上で行うことが出来ます。学生間でも質問に答えあったりしてくれるので、授業運営の負担が減ります。

あとここに告知すると残るので、言った言わない論争を避けることができます。日本の大学でも導入すると良い気がします。

f:id:tkm2261:20191229153356p:plain

GradeScope

GradeScopeは採点を劇的に楽にしてくれるツールです。宿題提出はPDFでGradeScope上にあげてもらい、試験は我々はスキャンしてアップロードした後、オンラインで返却します。

スキャンした結果が残るので、返却後に改竄という自体も防げます。

スキャンもものすごい簡単で自動採点もあり、もうコレなしでは採点業務は考えられません。

その他業務

Office Hour

毎週1時間、学生の質問を受け付けるoffice hourを開催します。LecturerのOffice hourは別にありますが、TA陣も別途も行います。

一番来るのは宿題を公開した後で、問題文がよくわからない学生が質問に来ます。あと試験前はOffice hourを延長して対応します。

ただ今回の授業はPiazzaも後述するDiscussionもあったのでOffice hourはそんなに忙しくありませんでした。

Discussion(演習授業)

授業自体は週に80分×2コマですが、Discussionと呼ばれる授業で習ったところの演習問題をTAが解説する授業が毎週あります。

少人数指導にするため学生は履修時に決まった4つのセッションのどれかに参加します。1セッションは50分ですがTAは50分×4セッションをやるのでかなり疲れます。

まとめ

こんな感じに米国の授業はかなりシステマチックに運用されています。

GPAがかなり重要視される社会なので、評価の透明性やRegrade requestによる納得感の向上などに気をつかっており、まさに大学教育はサービス業という感じがあります。

ただこの数百人規模の授業は教育効果としてどうなんだ?という疑問は最もで、米国の上流階級が有名私立大学に行かせたがる理由もわかります。州立の研究大学の学部教育はかなり大味です。

Ph.D.編入が決まったので入学からあったことを時系列で書いてみる

皆様久しぶりです、tkmです。

夏休みも始まって1ヶ月経ち、鬼のような3授業履修+研究から心身ともに癒えて来たので修士入学〜Ph.D.編入が決まるまであったことを可能な限り時系列で振り返ってみます。

以前のブログで支援お願いした手前、私の留学模様はコンテンツとして楽しんで貰らうべくTwitterで事細かに報告するようにはしていますが、やはりブログとして残しておかないと後から見た人とかは振り返りづらいと思うので、これを期にまとめようと思います。

あと夏の留学向け奨学金戦線も始まってきており、米国大学院への留学する人が少しでも現地の想像がしやすくなるように何でも書いて行きます

修士も受験したほうが良いよ!

振り返る前に、多分このブログを読む人は米国で大学院を考えている人が多いと思うので一言

修士も受験したほうが良いよ!」

特にCSでの留学を考えている人は一応出しておいたほうが良いです。この分野の倍率はマジ異常です。

「既に留学先の教授と連絡が取れてポジティブな反応が帰ってきている。」レベルの人は心配しなくて良いと思いますが、

このツイートにあるように米国Ph.D.受験はまず落ちるものだと思ってよいです。

こんな話も出るレベルです

なので修士を受けておくと

  • 全落ちは流石に精神的に辛いので回避できる
  • 全落ちすると自分が米国の大学からみてどのレベルかを把握出来ない
  • 修士だとPh.D.よりも上位大学から合格をもらいやすい (PhD編入できると旨味が大きい)
  • 日本から受験する時と違って指導教員を見て(実際に授業受けて)から選べる
  • 英語がアレでも、ラボに入ってしまえば実力でゴリ押せる
  • 米国Ph.D.は雇用にほぼ近いので、教授達はレジュメで優秀な遠くの人より、知っている真面目に働く近くの人を採用しやすい傾向がある
  • Ph.D.に行くにしても同一大学だと授業を持ち越せるので卒業が早まる可能性
  • 他大Ph.D.でも米国大学間なら授業移管はしやすい
  • Ph.D.受験時に推薦状を米国大学の人にお願いできる
  • 米国仕様のGPAが手に入る
  • 最悪上手く行かなくても米国で就労できるビザが手に入る

などなどメリットがあります。

デメリットとしては生活費も含めて州立大でも500万円はかかる計算になります。

結局、修士はお金で時間を買う形になります。私の場合修士の間にPh.D.卒業要件の授業をほぼとり終えているのでPh.D.では研究に集中できるという夢のような状態になってます。

500万円はCS関連でしっかり大学で勉強した結婚してないエンジニアが30歳まで働けば払える金額と思うので、500万で1年買えると思えばアラサーのおっさん的にはありな選択な気がします。

とはいえ500万円は大金なので、一番スマートな方法は夏のインターンで研究室に潜り込む方法です。夏だけでなくインターンは年中募集しているので潜り込んでハードワークを見せつけるのが多分一番近道です。

CSの建物内の掲示板ですが、こんな感じにインターンは普通に募集しています。

f:id:tkm2261:20190808110239p:plain

その他修士の情報はこちら

米国大学院でCS修士について書いてみる - tkm2261's blog

この1年の振り返り

前置きが長くなりましたが、本編を始めます。

入学までのことは前の記事に書いているのでそちらもどうぞ。

2018年9月前半

  • 9/10にLAX空港に降り立つ
  • simは日本で買っておいたのですぐセットアップが完了
    • 今も使っていて大体月30ドルぐらい
  • LAX->大学は50ドルで乗り合いシャトルバスで移動
  • 共有の寝室は嫌だったので自転車で30分ぐらいの一軒家の一部屋を月700ドルで借りる
    • ただしこの物件キッチンは大家が使うから使えないという不思議な契約
    • このせいで外食とかお菓子で空腹を誤魔化してたせいでかなり太った
  • 入居日に大家にシーツだけは買ってくるようにと言われて片道30分歩いて最寄りのTargetに行くことに
  • その後、同じ家に住んでいたポスドクの人から要らなくなった自転車をもらえたので行動が一気に楽に

2018年9月後半

  • 9/20 に入学生オリエンテーションから大学生活がスタート
  • 留学生にはメンターが割当られており、そのメンターに付いているグループが同じテーブルに割当られて、交流を図る。
  • 修士学生の辛いところは基本友人のつながりがないので、自分で色々調べなきゃいけない
    • Ph.D.の場合は研究室に先に顔を出すのでラボの先輩方から諸々の情報を貰える
  • 後々、この時同じテーブルだった人と話すと、「あの時はお前の英語何言っているか全然わからんかった」と言われる。どんだけ酷かったんだ私の英語は。。。

秋学期(2018年10月〜12月)

研究室所属

  • クォーター制なので3ヶ月が1学期
  • 必修セミナーで、UCIに赴任したばかりの今の指導教員の話を聞く(10/14)
    • セキュリティの研究者でスマホへの攻撃をとかを研究していて、
    • 最近はスマート交通網への攻撃や自動運転車のセキュリティを研究しているとのこと
    • 交通の話だと、私の専門の最適化が生きるし、自動運転車は機械学習いっぱい使ってるしで興味を持つ
  • セミナーの最後でmotivatedな学生募集中ということでメールで連絡
    • セキュリティとか全くわからなかったけど、漫然と過ごして研究歴つかないのが一番リスクかなと
  • レジュメと過去の成績表を送ってと言われて送ったあと、受け入れてくれる旨の連絡をもらった
  • ラボに行くと、指導教員を変更してラボに来た3年目Ph.D.学生と、ボスが着任してすぐ夏から指導を受けている修士2年の二人がいた。
  • その後すぐに、修士1年の別の学生も追加で加入。彼も修士Ph.D.を目指しており、同じようにお金で苦労してたので、意気投合。後述するがボスは研究の要求がかなり高く大変だったが彼と励まし合いつつ何とか乗り越えることができた。
  • というかラボのメンバー全員ジェントルマンで最年長の私が一番幼く見える始末。
    • 私が英語で落ち込むたびにいつも励ましてくれて感謝しかない。
    • 英語は環境に飛び込んでやれば上達するが、最初期にそれを支えてくれる人がいるかどうかがかなり大きいと思う。私は幸運だった
  • とはいうものの、Ph.D.の学生からは「お前とのMTGは今でも覚えてて、全く何言っているかわからなかった」と言われ、
  • ボスからは論文輪読の発表のあと「全くわからんけど、何とか推測した」と言われる。
  • マジで最初期の英語やばかったな。。。

授業

  • 3授業を履修
    • 卒業には11授業の履修が必要で、3授業履修すると1年3ヶ月(4クォータ)で卒業ができる
  • CS273A: Machine Learning
    • 昨今のブームでかなりの人気授業
    • 評価は宿題+中間試験+期末試験+期末プロジェクト
    • 別学期に同じ授業を担当するもう一人の教授の評判が悪く、この教授が担当する学期に集中する
    • 内容としてはかなり基礎的な内容を広く浅く触れる感じ
    • 研究と他の授業が忙しかったのもあって資料だけ読んで、ほぼ授業は聞いてなかった
    • 調子ぶっこいて中間試験を勉強なしで望んだら点が低かったので、期末は頑張って挽回したらAは取れた
    • 期末プロジェクトは与えられたデータ・セットから選んで機械学習的何かをする感じで適当にこなした。
      • 一応チームプロジェクトだけど私以外はあまり機械学習知らなかったので、適当に私が進めて終わった
    • Akaike's Information CriterionがAikeke's Information Criterionになってたのが未だに忘れられない
  • CS268: Intro to Optimization
    • さすがに専門の最適化の授業なので問題なし
    • 評価は宿題+中間+最終プロジェクト
    • 内容は大体この2冊から
        1. Belegundu & T. Chandrupatla, Optimization Concepts and Applications in Engineering, 2nd ed. Cambridge U. Press.
        1. Luenberger, Linear and Nonlinear Programming.
    • 証明は端折りぎみで、使うことに特化した感じ。というか一冊目の教科書がそんな感じ
    • ただ教授の説明が整理されてなくてあっちこっちに行く上、授業の進捗は早いので正直履修せずに、この授業を日本の修士の授業から移管すればよかったと後悔(後述)
  • CS222: Principles of Data Management
    • あとから知ったがUCIのCSで最も大変な授業の一つ。無知ゆえに取れた授業
    • 小さいデータベースをほぼスクラッチC++で作成、2週間毎に以下の課題を提出
      • ページファイルシステム
      • リレーションマネージャ
      • インデックスマネージャ (B+ tree)
      • クエリエンジン(whereやjoinなど)
    • 成績はプロジェクトが60%で中間と期末が40%の評価
    • プロジェクトの成績は提出ごとに公開されたテストコードを通れば90点、非公開のテストコードを通ると100点以上が貰える
    • 恐ろしいのは、実装を積み上げていくので、過去にテストコードを通っててもバグがあると後の課題提出で爆死する可能性があるところ
    • 秋学期の週末はすべてこれに溶けた

研究生活

  • 研究室に入ったあとは、とりあえず関連論文を10本ぐらいアサインされてそれを個別の研究ゼミで報告
  • 今思うとボスも着任したばかりで忙しく、研究の要求は全然激しくなかった
  • 11月中旬ぐらいにテーマがしっかり定まった。(ボスが投稿前に言うなというのでまだ秘密)
  • 加えて論文輪読ゼミとCTFゼミがあって、週3回MTGがある感じ。これは他のラボと比べても多いと思う
  • ただ英語が壊滅状態の中、輪読ゼミと、CTFゼミは持ち回りでホストを務めなければならなかったので結構苦労した
  • とはいえ週三回必死にやっていると英語は上達するもんだなと感じた

2018年11月下旬〜12月初旬

  • 2ヶ月経って大体の生活に慣れてきた
  • 留学前は「授業やったるでー」と思っていた熱い思いはもうなく、授業が研究の邪魔に感じるように
  • 日本の修士から授業が移管出来ると聞いたのでGraduate Counselorを訪問
  • 色々調べた結果、修士学生は2授業まで移管できて3授業を履修すると9ヶ月で卒業できることに気づく
  • 1年以下で修士をおえた前例は聞いた限りなく、Graduate Counselorを何回も訪問して卒業できることを確認
  • 「あれ?1年で修士終えて今年もPh.D.応募出来るんじゃね?」と思い始める

インターン応募

  • PhD進学が第一志望であるものの受からない可能性を考えて翌年のインターンの応募を開始。
  • 最初は自力でとか思ったけど、リファラルないと面接すら出来ないことに気づいてリファラルもらったところ(10社前後?)を受験
  • 最終まで行ったのもあるけど、英語が壊滅してたのでダメだった。
  • コーディング試験もコーディングというより私には常に英語の試験という感じ
  • 最終的にPhD決まったあと、ボスが夏に給料くれるということで、夏は研究に専念することに。どのみち修士だと研究インターンは厳しい

出願に向けて

  • ボスになんか1年で卒業出来そうだから、Ph.D.出願して良いかと相談
  • ボスは乗り気でなく、「今年無理に出さなくても、研究結果が出てから来年で良いのでは?」「着任したばかりでUCIの入試制度がわからないので何の保証も出来ない」などなどを言われた。
  • 「引き続きボスの元で研究したいけど、お金が最大2年目の秋学期までしか持たない」旨を伝えて、
  • J-1ビザに切り替えて卒業後も残るとか(F-1->J-1って出来るのか?)、OPTで残るとか(制度上無理だった)、Graduate Counselorに「私の口からそれが可能とは言えない」という超裏道的な方法までボスに色々伝えて議論した
  • 結局、受験してもデメリットはないでしょと説得して、推薦状は貰えることに。
    • この時既に研究プロジェクトで結果が出始めてたのが大きかったと思う
    • 最適化と機械学習がガッツリ関わってたので私以外を探すのは無理だったと思う
  • なんの保証は出来ないということで、ほかのUCI教授に連絡を取る旨と他大学(GaTechとUT Austin)も受けることを伝える
  • ただこの時既に12月になっており、出願締切が12/15の中、インターン応募&面接しつつ秋学期の期末試験対策しつつPhD出願書類を用意した自分を褒めてあげたい

冬学期スタート(2019年1月〜3月)

  • 3授業+研究の大変さは身にしみており学期の最初に恐れおののいていたのをおぼえている。
  • 冬休み明け最初の研究MTGでボスから研究進捗が少ないことを言われる。「いや冬休みやん。。。」と思うものの、この頃から要求がとても高くなる。

授業

  • 今季は3授業履修+英語授業
  • CS265: Graph Algorithms
    • ラボのPh.D学生の勧めで履修
    • 成績はほぼ中間と期末で決まる仕様
    • 週に1時間×3コマの授業で集中が続きやすくてよかった
    • 内容もグラフの初歩から復習出来て満足
    • 完全な板書スタイルで私好みだった。(人間は板書よりも速いスピードで理解は出来ないと思っている)
  • CS230: Distributed Computing Systems
    • 選択必修なので履修
    • かなりふわっとした分散コンピューティングの話
    • 行列積の分散計算はためになったけど、微妙な授業だった
  • CS 272: Statistical NLP
    • PhD受験するにあたって連絡した教授の授業
    • ウチ入りたいならこの授業とってと言われたので履修
    • 宿題+プロジェクトで成績が決まる
      • プロジェクトはワークショップレベルと言われて、ACLのフォーマットで最大6ページ
      • 過去にプロジェクトをそのまま論文投稿した人もいるとのこと
    • 履修が遅れたせいで余っていた学部生と組むことに
    • 最初色々気を使っていたが、まったく進まないので力技で私がすべて実験+レポート執筆
      • 最初私が研究テーマを提示
      • チームメイトは出来る自信がないとのことで、泣く泣く既存論文を再現実装するプロジェクトに変更
      • 彼らがリードしてくれると思いきや何もせず教授に心配される事態に
      • 説明が面倒だったので気合の5日で実装を終わらせて、教授に初期結果を見せて事態を鎮火
        • かなり実装ヘビーな論文を選んでたのでまたチームメイトに殺意が湧いた
      • 論文に書いてあることと、著者実装のGithubコードが違うことに気づくのが遅れてクソ時間が掛かった上に、最終的に再現せず。
      • 再現しない愚痴とか論文間違ってるとかを最終レポートに記載
      • 再現実装した論文の第3著者が授業の教授で、多分これで私のことを覚えてくれたのだと思う。
      • 風のうわさで、私のPhD合格にあるML系の教授が賛成してくれたのが大きかったと聞いたので、プロジェクト大変だったけどやってよかった
    • いま思うとPhD受験で本気アピールしようとしている業務経験アリの機械学習エンジニアに学部生を付き合わせたのは申し訳なかったと思う。英語が堪能だったら導いてあげるとかも出来た気がするけど。。。
  • 英語授業
    • 自分の英語のあまりの酷さに気づいたので履修
    • 英語の授業を受けに来るレベルでも一番英語が出来ないという始末。。。
    • 週2回授業+メンターがついて毎週1時間個別にメンターがマンツーマンしてくれるので、コスパはいいとおもう
    • ただこの時既に研究がかなり忙しく、為にはなったけど身を入れて授業には参加していない

研究

  • この頃から本格的にボスの要求がかなり高くなる
  • 多分真剣にPhDを考え始めてくれてたのだと思う
  • MTG前にラボに泊まることも多くなってきた

就活

  • PhD落ちた時のことも考えて、就活を開始
  • といってもまだそんな本腰入れてないのでGAFAの辺りにだけ出願
  • GoogleのML EngineerとGoogle residency programだけ連絡がきた。
  • Googleはとりあえずコーディング面接までは他の企業より行きつける印象があるが、その分コーディング試験は厳し目と聞く
  • 冬学期の試験勉強しつつ就活しつつPhDの合格待ってるのは精神的にかなりキツかった

春休み

  • 3授業+英語授業+研究は相当つらく、このころから慢性的に頭がぼーっとして研究とかにも集中しきれなくなってきた。
  • 春休みになってもPhDの連絡どこからもなく、研究をしっかり終わらせるために秋学期までは大学にいることを決意
  • 春休みに兄の結婚式で帰国予定だったので、その前にボスに秋まではいることを伝えることに
  • そのことをボスに話したら「君を真剣にPhDに考えている」と言われる。
    • ボス曰く私の英語力が低すぎて、いきなりコミッティーに推薦できないので4月過ぎてからこそっと通すと言われる
    • あと裏でボスがオファー出した人が一杯断ってるのを聞いていた。UCIだとそうなるよな。。。
  • 半分PhDの内定が出た状態で日本に帰国、良い精神状態で楽しむことができた。
  • Googleのコーディング試験も無対策で受けて無事撃沈。もう就職考えてなかったし

春学期スタート(2019年4月〜6月)

  • 帰国して、すぐ合格のメールが届く。ボスには感謝しかない。
  • この時初めて、ボスに英語の上達を褒められて嬉しかった
  • ただボスは本格的に私のことをPhD学生と扱うようになり、研究の要求がより一層増加
  • 前述のとおり、慢性的な疲労で常に頭にモヤがかかってる感じで春学期が始まった。
  • 同じ大学のPhDということで修士は卒業せずに、退学->再入学という形にした。無理に卒業しようとすると授業が増えて多分死んでた
  • 修士は卒業しなくても履修した授業がPhDに持ち越せることを各所に何度も確認した

授業

  • 今季も3授業履修
  • CS295: Advanced Computer and Network Security
    • ボスの記念すべき最初のUCIでの授業
    • 週二回の授業ごとに論文がアサインされて全員でディスカッションする大学院ぽい授業
    • 授業前に500字程度の論文サマリを提出する必要があって英語的に結構大変だった
    • 期末プロジェクトはボスが今やってる研究をそのまま授業プロジェクトにしていいと言われたので問題なかった。いい感じの結果でてたし
  • CS295: Deep Generative Model
    • こちらも新任の教授の授業
    • 昨年ICMLに5本通しており、UCI待望のピュアなML系の教授
      • なんでUCIに来たのか謎だったけど、前の職場もLAだったので多分移動したくなかったと予想
      • 気候とか治安とかの環境面ではUCIマジで最強
    • 私もGANは雰囲気しか知らなかったので授業を興味持って楽しめた
    • 授業プロジェクトのディスカッションで共同研究をお願いしたら実現。いまボスも含めて一緒にやっている
  • CS230: Data Structures
    • 選択必修だったのと、データ構造好きなので履修
    • 楽勝かと思ったがさすが大学院の授業、フィボナッチヒープの計算量解析+実装詳細とかBalanced Binary treeの実装詳細とかが求められて、為になったけど大変だった
    • 中間試験で計算ミスやらかしまくって冷や汗をかいたけど、期末で挽回出来る仕様だったので事なきを得る

研究

  • 前学期よりは忙しさが緩和されたが、まだ忙しい上に頭にモヤがかかってる感じで集中できず
  • 結局集中出来ずに、MTG前日に徹夜して挽回する悪循環が生まれる。
  • 前期より時間あるのに集中出来ずに進捗が生まれないことに、逆に精神的に追い込まれる事態に。生活リズムもめちゃくちゃ
  • 何とかごまかしていたが、学期の最後の方に「朝起きたあと体が動かない」という鬱の症状で聞いたことが自分にも起こって驚く
  • 最終的にボスに正直に話して、試験のある学期最終週から3週間は研究で休みをもらった

夏休み(2019年7月〜現在)

  • 3週間の休みで頭リフレッシュ
  • もともと研究したいのに、授業に時間とられて出来なかったのがストレスだったので精神面も改善
  • ボスの要求が高いのも、逆にハードワークすれば怒られないと割り切れたので、何か生活にメリハリが出てきた
  • CVPR/ICMLにも派遣してもらって、そこで仕入れたネタが研究にも生きている
  • 今やってる2つのプロジェクトも第一著者確定で、かなり良い結果が出てるので超順調
  • 給料が出るのでSSNを取得したり、車買ったり運転免許をとったりと、9ヶ月目にしてやっと大学以外の生活に目が向くようになってきた

最後に

多分この9ヶ月間のことを一生忘れないと思う。

日本語だったら問題なくこなせた自信あるけど、英語で、PhD受験の為に高GPAを維持しつつ3授業受けて、2ヶ月で推薦状貰うレベルで研究してを9ヶ月間維持しつつ、インターン就活PhDの応募と神経使うことを並行するのは、もう二度とやりたくない。

ただ私の場合は報われたので良かった。論文なくても米国PhDにパワープレイで入学出来ることを示せたと思う。

(というか私の分野で修士で論文持ってるとかほぼ無かったし、分野と時代によるところが大きい気もする)

最大のファインプレーは勢いで決めたPhD出願。その時の自分を褒めてあげたい。

ただこれから留学を志す方々は、私みたいに泥臭いパワープレイをしないですむように、学部生and修士でしっかり論文を投稿したり、予めインターンで渡米して教授に自分の仕事ぶりを見てもらったりとかして苦労が少なくなる事を祈っています。