かゆい所に手が届く機械学習ブログ

かゆい所に手が届く機械学習ブログ

# 奮闘記 # 画像認識・物体検出 # python # GoogleColab

MENU

【見本あり】ストレス・不安・やるべきことを記録して、人生を整える

f:id:Ich_mag_Schokolade:20201016014618p:plain

0.メンタリストDaiGo著「人生を変えある記録の力」を読んで

ストレスを可視化して、心の負担の傾向を分析

f:id:Ich_mag_Schokolade:20201016004851p:plain

やるべきことを点数をつけて可視化

漠然としたネガティブ思考による脳の汚染を防ぐ

大事なことから逃げたくなったら

f:id:Ich_mag_Schokolade:20201016010202p:plain

まとめ:筆者の記録管理方法

f:id:Ich_mag_Schokolade:20201016011111j:plain:w256  f:id:Ich_mag_Schokolade:20201016011103j:plain:w324

把握しておきたいPython関連のワードまとめ

f:id:Ich_mag_Schokolade:20201024113133p:plain

この記事はどんな記事?
  • 初心者の方がざっくりワードを把握するために使える
  • わからないワードがあったときに辞書的に使える

Python関連

IDE統合開発環境)関連

ワード ざっくり 詳細
IDE 統合開発環境(integrated development environment) ・ソフトウエア開発に必要な要素が統合して利用できる環境のこと。
・あるプログラミング言語に対応したエディター・コンパイラー・デバッガーなどをまとめたパッケージ製品のこと。
PyCharm Python専用高機能IDE
Anaconda Python+R言語+conda+1000以上の関連パッケージ実行環境+etc AnacondaをインストールするだけでPython本体とライブラリがインストールされる
minaconda Python+conda+最小限のパッケージ AnacondaとMinicondaの比較、どちらで環境構築するべきか
Jupyter Notebook ノートブックと呼ばれるファイルにプログラムや説明の文章、実行結果などをまとめて管理できるIDE統合開発環境
CPython C言語で書かれた Python 一言で Python といった時には、基本的に CPython を指す。
Jython Javaで書かれた Python ImageJ など、Java で書かれたプログラム・クラス・ライブラリを使用できる。
CPython のライブラリ(numpy、scipy、matplotlibなど)が使用できない。
PEP8 Python 標準コーディング規約 ・インデントはスペース4文字
・クラス名の頭文字は大文字
・クラスの中で関数を定義するとき、第一引数を self と名付ける
などがある

パッケージ管理関連

ワード ざっくり 詳細
モジュール 関数やクラスなどを別ファイルで利用できる状態で整理した Pythonソースコードのこと ・拡張子 .py を持った通常の Python ファイルとして作成すればモジュールとなる。
import (モジュール名) で使用できる。
・モジュール内の関数をインポートするときは、 from (モジュール名) import (関数名)
パッケージ 複数のモジュールを集約したディレクトリのこと モジュールとパッケージの関係はファイルシステムでいうところのファイルとディレクトリの関係に相当。
パッケージ管理システム
PyPI サードパーティ製パッケージの共有サイト Web サイト
標準ライブラリ
サードパーティパッケージ 標準ライブラリ以外のライブラリ/パッケージ。
PyPIに登録されている。
pipコマンドでインストールできる
NumPy, pandas, など
pip インターネットで公開されているPython パッケージを取得するためのパッケージ管理ツール pipを実行すると PyPI からパッケージがインストールされる。
conda AnacondaやMinicondaに標準で付属しているパッケージマネージャーであり、環境管理システム。 仮想環境を構築したり、Pythonのバージョンを3.7から2.7に切り替えたりできる。
Anacondaのcondaとpipのinstallコマンドを使い分ける方法
venv 仮想環境を作成するためのツール Python に標準で同梱されている。
pipenv pipvenv の両方の機能を兼ね備えたパッケージ管理ツール venv で仮想環境を作成してから pip でパッケージをインストールするまで異なるコマンドを実行する必要があるが、これを 1 つのコマンドで実行できるようにしたもの。
ワード ざっくり 詳細
イテラブル 繰り返し可能なオブジェクト for i in AAの部分に用いることができるオブジェクト。
例えばリストタプルrange関数で生成したオブジェクトなどがイテラブルに該当する。
Pythonのイテラブルとは何かを現役エンジニアが解説【初心者向け】
イテレータ イテラブルオブジェクトを使用した連続データ iter()という関数を用いて作成する Pythonのイテラブルとは何かを現役エンジニアが解説【初心者向け】
標準入力 キーボードによる入力

大学院受験奮闘記

f:id:Ich_mag_Schokolade:20201013191654p:plain

この記事を読むと…

  • 内部/外部に関わらず、他学部への大学院進学の過程がわかる

  • 研究室見学の方法がわかる(大学院説明会/メールでアポ)

  • 具体的な勉強方法の一例を見れる

自分のモチベの変遷なども含む、大学院進学を決めるまでの詳細な過程は、下の記事で紹介しています。 こちらの記事では、大学院受験にフォーカスして、勉強などを紹介しています。

huntouki.hatenablog.jp

結論からいうと、私は最終的に受けたのが、

  • 第一志望:情報系学科の研究室(外部)
  • 第二志望:自分の所属する生物系学科(内部)

の2つです。そして両者合格しました。ここからは、その経緯やポイントを説明していきます。



1.第一志望の研究室に出会うまでの経緯

f:id:Ich_mag_Schokolade:20201008191432j:plain:w600

大学院説明会で2つの研究室を訪問(2年生夏)

何となく、大学院進学に興味があったので、興味があった情報系の学部(他大)の大学院説明会に参加しました。そこで2つの研究室を見ました。

全体で、各研究室の教授が約10分ずつプレゼンし、そのあとの個別に分かれて、各々興味のある研究室を見学する流れでしたので、自分からアポをとるなどしなくていい分、すごく訪問のハードルが低くてよかったです。 私は、事前にホームページで見た印象や、当日の説明会での教授のプレゼンでいいなと思った研究室を訪問しました。

しかし、実際の研究室の雰囲気を見ると、「何となく雰囲気が暗い」、「先生が放任主義」、「先輩とコミュニケーションが取りづらそう」など、想像とは違った様子で、2年という時間とお金をかけてまで、ここに進学したいとは思えませんでした。
(もちろん、これらの判断軸はあくまで私の個人的なのものです。)

自分でメールで見学のアポをとって、研究室を訪問(2年生秋)

そこで、説明会の機会は逃しましたが、ウェブで検索していいなと思った研究室(のちの第一志望)に、メールで研究室見学のアポをとりました。
普段の研究会を見学させていただいたあと、先生方に話を聞いてもらう時間を設けていただき、2週間に1度ゼミに通うことになりました。
ゼミに参加することで、知識が豊かになったのはもちろん、実際に受験前から名前と顔を覚えてもらい、「大学院でこの研究室に進学する意欲がある」ことも知ってもらえました。

2.研究室を訪問について

f:id:Ich_mag_Schokolade:20201008191442j:plain:w512

まとめると、私は合計3つ研究室見学しました。コロナで難しいかもしれませんが、研究室は本当に行きたいなと思うところは実際に行くことをおすすめします。そのメリットは次の通りです。

  • 先生-学生間の距離感がわかる。
    積極的か放任主義かなど。

  • 学生-学生間の距離感がわかる。
    ゼミが盛んかなど。

  • 先輩や教授から過去問や参考資料がもらえる。
    事務でもらえるところも多いと思うが、先輩が研究室に長年ストックされた答えやまとめがある可能性あり。
    (事務でもらう過去問などは答えがないことが多い)

研究室訪問ポイント

  • 説明会がある4月-6月に、気になるところは極力参加。
    そのあとの個別に分かれて研究室見学という流れで、自分でアポを取らずに研究室をみれる。

  • 自分でアポを取って訪問する場合でも、(ちょっと緊張するが)一旦メールしてしまえばなんとかなる。



3.私がやった勉強方法

f:id:Ich_mag_Schokolade:20201008191436j:plain:w512
大学受験を乗り越えた皆様にこれを説明するのは、少しおこがましいかもしれませんが、一応書き残しておきます。

ただ大学受験と異なる点を上げるならば、「より目的を意識して勉強できる」ということかなと思います。

大学受験と違って、古文や歴史など直接研究に関わりがない分野は勉強する必要がないのが、院試のいいところだと思います。

多かれ少なかれ、遅かれ早かれ研究にかかわる内容だと思うので、

「これって実はこういうことだったんだ!」
「これ1年生のときはわからなかったけど、この分野につながってたんだ!」

など、 自分で自分を盛り上げながら、知識の点と点をつなげて「」にしていき、さらには「」にしていき、さらには「空間」をつくりあげていくと、面白いと思います!


私が踏んだステップ

  1. 早めに過去問を入手する。

  2. 過去問を少し解いてみる。
    理想と現実のギャップを把握。

  3. 過去問の出題傾向を整理する。
    100点を取る必要はないので、自分が注力する分野を決める。

  4. やるべきことを全部書き出し、試験日から逆算して計画表をつくる。
    その際、卒論や他のやるべきことも考慮にいれて、計画倒れを防ぐ。

  5. 自分が注力すると決めた分野でわからないことは、徹底的に調べる。それでもわからない場合は聞く。

  6. 手を抜く分野でわからないことは、潔く捨てる。

  7. インプットの割合が大きくなりすぎないよう、適宜学んだことを自分で自分に説明してみたり、自分で問題をつくって、それを解く。

ちなみに、私は内部(生物系)と外部(情報系)と内容が全く違ったので、 第一志望の外部のための勉強に多くの時間を割き、内部は2週間で詰め込みました。

あと忘れてはいけないのがTOEICTOEFL、IELTSなど)です。2年間点数は有効なので、早めに安心できるくらいの点数をとっておきましょう。

4.まとめ

CHECK
  • 先手必勝
  • 研究室はできるだけ訪問する
  • 先輩から、過去問やまとめをもらえたらもらう
  • 過去問の傾向を把握して、自分が注力する分野を決め、そこを確実に取る
  • インプットだけでなく、アウトプットも大切に!
  • TOEIC忘れずに!

先生との相性や、学生主体のゼミが盛んなど、総じて時間とお金をかけても2年通いたい研究室を早めに見つけて、早めに勉強し、合格することができました。

私が生物系学科から情報系大学院進学を決めるまでの経緯

f:id:Ich_mag_Schokolade:20201013184839p:plain

この記事を読むと…

  • 生物系から情報系に転換した経緯と理由がわかる
  • このブログ運営してる人ってどんな人なのかちょっとわかる
  • 「とりあえず動いてみる」大切さがわかる

 

注:この記事では、「私の思考」を緑の枠に収めています。 

【高校生〜大学受験期】生物系学科を受験

私が大学受験時、生物系の学科を選んだモチベーションは主に次の2つです。

  • 山中伸弥先生のiPS細胞研究が話題になった頃で、それに触発されて)生物の再生能力についてもっと知りたい。

  • 高校での理科系科目「物理・化学・生物」の中では「生物」が一番好きだ。

 

単純ですね。高校生の狭い視野ではこれくらいのモチベーションしかありませんでした。

 

【大学1年生】プログラミング開始、バイオインフォマティクスをかじる

実際に生物系の学科に入って色々学んでいくうちに、次のように考えるようになりました。

  • 再生医療ってもう結構研究が進んでるんだな、こんなペーペーの私が入り込める余地なんてなさそう…。

  • 生物のことについて知るのは楽しいけど、この知識を活かして将来仕事するイメージが湧かない…。

  • せっかく4年間もあるんだから、大卒資格をとるためだけに時間を溶かすのではなく、将来に活かせることをやってみたい…!

  • そういえば昔「ブラッティマンデイ」っていうハッカーのドラマ面白かったな。PCひとつであそこまで世界が変わるなんて。
    よっしゃ、プログラミングやってみるか!
    これからは生物と情報を組み合わせてなんかやれるんじゃね!?(n回目の中二病発動)

というような、始まりはしょうもないノリでした。

そして、とりあえず分厚い本を買って色々いじってみて、今までGUIでやってたことをコマンドで操作できる面白みを感じ、最初はわりと楽しかったのです。

しかし、徐々に目的を失いました 。

 

ちょっと大事な余談

最初の取っ掛かりとして、「方法」だけつらつら書いてある分厚い本を網羅的にやるのは、本当におすすめしません。
とりあえず網羅的に学びたい気持ちもわかりますが、そんなあなたは「受験病」もしくは「チャート病」かもしれません…。

「とりあえず手を動かして何かを作ってみる」→「その過程で必要な知識を埋めていく」という流れのほうが、モチベが続きやすいと思います。

 

そうして私は、こう思うようになります。

 

実際に研究でどのようにプログラミングが使われているか知りたい!

 

そしてなんとか相談できる教授にアポをとり、思いの丈を話したところ、その先生のラボの助教バイオインフォマティクス(遺伝子解析)をやっているということで、その先生のもとに通うことになりました!(相談してみるものですね!)

 

その教授のもとで、まず1台PCをお借りし、Linuxの操作から勉強しました(当時の私はWindowsしか使ったことがなかったので操作に慣れるのでも一苦労)。

 

そしてざっくりいうと、本やサイトを参考にしながら見よう見まねで約1年かけて、

「公開されているデータの中から、健常者とⅠ型糖尿病患者のCD4陽性T細胞のRNA-Seqデータをダウンロードし、クオリティコントロールマッピングを行い、発現量の変動を比較する」ということをなし遂げました。

1年も時間がかかったのは、

 

  • ひとつひとつライブラリをインストールするだけでもエラー三昧
  • 何かコマンドを打つごとにエラー
  • そのエラーを解決するために検索しまくる
  • そこで知らない用語が山ほど出てくるので、まずそれらを調べる…

 

という感じで、この記事の読者様はご存知かもしれませんが、思わぬところでエラーが山ほど出てくるのです…。

なおかつ、その先生の方針は「極力自分で考える、独学で習得せよ」というものでした。
もちろんその力も大切です。自分でろくに調べないで質問するのは、相手方にも迷惑だし、何よりエラーが出て奮闘しているときこそ得られる知識も多いと思うからです。

しかし、それまでターミナルにも触れたことがなかったレベルでしたので、検索してもわからないことや、そもそもその検索が的外れのこともあります。
そこで私はこう思うようになりました。

 

  • 検索して何時間考えてももわからないことは、さすがに質問したい。

  • 情報系寄りの研究室に行ったら、もっといい学習環境があるかもしれない!

 

このとき、夏休みのアメリカ留学(いうて1ヶ月だけ)から帰ってきたばかりで、「自分が動けばなんとか道は開ける」精神で溢れていていました(自分でも尊敬)。
そこで、調べて興味があった他大の見知らぬ研究室に「見学させてください」という旨のメールを送って訪問したのです!

【余談】「一発で自分にあった研究室を見つける必要はない」という話

実はこのメールを送る数か月前に、別の2つの研究室も訪問しました。
しかし、その2つはこのように能動的な訪問ではなく、学部全体の大学院説明会のときに訪問しました。それはこのように「通いたい」という動機ではなく、漠然と大学院に進学したいと思っていて、「興味のある研究室ないかな~」というくらいのモチベです。

その2つもよかったはよかったのですが、あまりピンとこず、結局3つ目の、自分で勇気を出してメールを送った研究室が一番いいなと思いました。
何が言いたかったのかというと、本文ではいかにも「一発でいい研究室を見つけた」かのように伺えますが、「実はそんなにうまく物事が進んだわけではないよ」ということです…。(余談終了)

 

 

【大学2年生秋】他大の情報系研究室に通い、画像認識を学ぶ

当初は1回見学させていただくだけのつもりが、なんと運良く隔週でゼミに参加できることに!(とりあえず動いてみるって大事)

そこではまず画像認識を勉強しました。

先生や先輩がパワポをくださったり、おすすめのサイトを教えて下さったりして、まず手書き文字データセットのMNISTを用いた基本的なCNNによる画像認識のプログラムを作りました。

ゼミを通して深層学習を数式で理解できたり、他にも論文の読み方を教えてもらったり、もう感謝しかありません。この時期からこの研究室に修士で行きたいなと思うようになりました。

 

【注意】他大の研究室のゼミなどに参加することについて

「それってその大学に学費払ってないのにいいの??」と思う方もいる方もいるかもしれません。
しかし、その通う研究室の教授の許可(加えて、自分がすでに研究室に所属している場合は、自分の教授の許可)などがあれば大丈夫です。

「他大学の講義に潜る」などは学費が絡んでくるかもしれませんが、研究会やゼミに他大から参加しているひとは普通にいます。
しかし、自分がすでに研究室に所属している場合や、外部での研究活動が禁止されているところもあるかもしれないので、そのあたりは先生方に確認して、あとで大事にならないよう十分注意して行動することをお勧めします。
(ちなみに私は4年生から自大学の研究室に配属だったので、この時期はまだ研究室には所属していません。)

 

 

まとめとこれから 

これまでの経緯をまとめると、

CHECK
  1. 生物系の大学に入学

  2. 自分の学科の研究室に通い、遺伝子解析をやってみる→1年でやめる

  3.  他大の情報系の研究室に通って画像認識を勉強する

  4. 真剣に医療に貢献できる情報技術を学びたいと思う

  5. この研究室でそれができそうなので、大学院はここに進むと決意

という感じです。

大学院受験の攻略については下の記事で細かくまとめています。

huntouki.hatenablog.jp

 

ちなみに無事合格し、来年から大学院へ進むのですが、大学1年生のときにかじったバイオインフォマティクスもやっていきたいなと思っています。

情報学だけでは、学部4年間学んできた人と差別化できないかもしれないし、遺伝子情報と放射線画像を組み合わせて予後などを予測するRadiologyにすごく興味があるからです。

 

 最後に全体を通して学んだことをまとめておきます。

CHECK
  • 興味があったら動いてみる

  • 色々あがいても無理そうだったら環境を変えてみる

  • もちろん自分で検索して試行錯誤することも大事だが、聞ける人がいると圧倒的に効率が上がる

  • せっかくモチベーションをもって始めたのに、「ただわからないことが多い」だけで「私には無理だ」と思ってしまうのはもったいない

これからも、「点」をたくさん作って、それを「線」にして自分の知識やスキルを構築していきたいです!

 

私がこのブログを始めようと思った理由

f:id:Ich_mag_Schokolade:20201024112751p:plain

 

1.本当に初心者のためのロードマップが少なく、どう進めたらよいのかわからなかったから

私が大学1年生のとき、それまで気になっていたプログラミングを始めようと思って,
色んなサイトをネットサーフィンしたり、本を読みあさったりしたが、次のようなものがほとんどだった。

  • とりあえず基本の文法などひたすら書いてあるが、目的が見えず途中で飽きてくる。

  • 熟練者が初心者向けに書いているが、一語一句がいちいち難しくてその度につまづく。

  • ある事柄について(例えば「Pythonのインストール」など)についてはすごくわかりやすく説明してあるが、「習得するまでの流れ(つまりロードマップ)」などを示してくれているものはなかなか無い。

私はいろいろ遠回りや挫折をしたが、これからは小学生ぐらいからプログラミングを始めるような時代になるからこそ、
挫折したからこそわかるような、かゆい所に手が届く学習サイトにしたい。

 

2.ホリエモンのスピーチを聞いて危機感を感じたから 

上の項目で書いたような気持ちは漠然と持っていたが、「人に伝わるように色々気にしながら書くとなると、色々大変だよな…」という思いのほうが強く、「サイトを作る」という発想には至らなかった。そんななか、YouTubeでたまたま近畿大学卒業式でのホリエモンのスピーチを聞いた。 

その中で特に、

「今後、テクノロジーの発展によって世界中の人がインターネットを通じて教育を受け、ビジネスを展開しグローバル化が進んでいく。
そうした厳しい環境で生きていくには、自分で情報を集め、自分で考え、自分で発信する必要性がある」
という言葉に大きく心を揺さぶられた。これが大きなモチベーションとなった。
「平成26年度近畿大学卒業式」 堀江貴文氏メッセージ - YouTube