タクリューが気まぐれで書くブログ

気まぐれで書評だったりお気持ちだったりを書いていこうと思います。

応用情報技術者になるまでにやったこと

久々の投稿です。

先日合格発表のあった応用情報技術者試験に合格していたので、それを記事にしていきたいと思います。

応用情報技術者試験とは

www.jitec.ipa.go.jp

応用情報技術者試験とはIPA(独立行政法人 情報処理推進機構)が実施している「高度IT人材となるために必要な応用的知識・技能をもち、高度IT人材としての方向性を確立した者」を対象とする国家試験のことです。


高度IT人材を謳っていてとても強そうですが、情報処理学会によるこちらの資料 http://www.ipsj.or.jp/event/sj/sj2013/kodo_it_asahi.pdf によると、応用情報技術者試験レベル3にあたり、レベル4以上とされる高度IT人材には一歩届かないみたいです

試験内容について

応用情報技術者試験ではIT(コンピュータアーキテクチャ、OS、ネットーワーク、セキュリティなど)の詳細や運用だけでなく、開発プロセスやプロジェクトマネジメント、経営戦略など、様々な立場で求められる力を測る試験となっています。


午前ではこれすべての範囲について選択式の問題、午後では選択したテーマについての記述式の問題が課されます。

午前は広く浅く、午後は狭く深くといったイメージです。


そして午前、午後の両方で60%以上の得点率を出すことで合格となります。

今回は午前75%、午後77%の成績で、無事合格することができました!

受験までにやったこと

試験対策という意味でやったのは午前対策用の参考書1冊と午後対策用の参考書1冊です。

(全文PDF・単語帳アプリ付) 徹底攻略 応用情報技術者教科書 平成30年度

(全文PDF・単語帳アプリ付) 徹底攻略 応用情報技術者教科書 平成30年度

午前対策用の応用情報技術者教科書は、コンパクトにまとまっていて参照しやすいのが特長なのですが、一つ一つの内容はかなり薄くなってしまっているので全く学習したことのない分野だとこれだけ読んで理解するのは難しいかもしれません。


僕もデータベースの正規化のところとかはよく分かりませんでした。。。

ただ、それでも600ページくらいあるので、試験の範囲がものすごく広いということですね。全部はやらなくても合格はできますが


この本のいいところは書籍を購入すると(しなくても本屋でパラパラめくってコードを探せば)pdfをダウンロードできることです。 600ページもある本を持ち運ぶのは厳しいのですが、これをiPad等に入れて持ち運べるのがとてもありがたかったです。電車とかで読んでました。


ただ、それでも全部読んで全部覚えるのは難しいので、過去問をやりつつ知らない言葉が出てきたらこの本で辞書のように引いてみるという使い方が良いような気がします。

2018 応用情報技術者 午後問題の重点対策 (午後問題対策シリーズ)

2018 応用情報技術者 午後問題の重点対策 (午後問題対策シリーズ)

次に午後対策です。

これも午前対策の本同様かなり分厚いです。

が、全てやる必要はなく自分が選択する問題のところだけやればいいです(当たり前ですね)。


過去問とその解説という形式で、解説はかなり丁寧で、読み込めば理解も深まるので午前の対策にも役立つと思います。 自分がとく分野を3回分ずつくらいやりました。本には5回分ずつくらい載っています(多い...!!)。


全部で5分野を選択することになるのですが(そのうち情報セキュリティは必須)、僕はプログラミング、システムアーキテクチャ、ネットワーク、組み込みシステム開発を選択しました。

アルゴリズムアーキテクチャ、そしてネットワークあたりは元々ある程度勉強していたので取り組みやすかったのと、組み込みシステム開発はIoTシステムの設計みたいな感じの問題設定で新しい知識が特に必要なさそうだったので学習コストはそれほど高くなかったというのが理由です。


セキュリティに関しては午後問題の対策を通してかなり理解が深まったみたいなところがあるので受験しようと思ってよかったなと思ってます。


以上のことは試験の1~2週間くらい前からやり始めました。ギリギリに詰め込んだ感じです(笑)

大学でアルゴリズム、ネットワーク、アーキテクチャ、OSあたりの講義を履修していたのでその分、対策は楽にできました。

この辺が一番重い内容だとは思うので、取り組んでいない分野があればもう少し早めに対策するのが良いかと思います。。

Deep Learning基礎講座のポスター発表で最優秀賞をいただきました!

こんにちは、タクリューです。 はてなブログを開設してみました。どれぐらいの更新頻度になるのか、どのような内容の投稿をしていくのか等々、何も考えてませんがぼちぼちやっていこうと思うので以後よろしくお願いします。


さて、3/30に東大・松尾研究室が主催するDeep Learning基礎講座の成果発表会であるDeep Learning Dayというイベントがあり、僕のチームがポスター発表部門で最優秀賞をいただくことができました!

f:id:ta9ryu:20190401135608j:plain
いただいた賞状と副賞

副賞の中身は現段階では空で後日連絡をいただけるとのことだったので、分かり次第お伝えできればと思います


Deep Learning基礎講座ってなんや??という方もおられると思うので、ポスター発表の内容について触れる前に、まずDeep Learning基礎講座について書いていこうと思います。

Deep Learning基礎講座とは

東大・松尾研が社会人及び東大生を対象に開講している公開講座で、全15回の講義とチームプロジェクトという内容になっています。

募集は昨年の8月頃に

Deep Learning基礎講座 | Deep Learning JP

で行われ、抽選によって受講の可否が決まります。 受講は無料で、仮想GPU環境も貸し出されます。


この講座は数年続いているらしいので、今年もまた募集があるのではないでしょうか。 興味のある方はサイトをチェックしてみると良いと思います。

講座のカリキュラムについて

通常回のカリキュラム

まず通常回である全12回については、以下のようなカリキュラムでした

  1. 松尾先生の基調講演(Deep Learning人工知能)
  2. 機械学習の基礎(Numpy/Scipy、Logistic Reg)
  3. ニューラルネットワーク(MLP)
  4. Tensorflow&MLP(SGD、Optims)
  5. CNN1(CNN)
  6. CNN2(CNN、Trained Models)
  7. RNN(RNN&Series Data)
  8. RNN&NLP(Neural MT)
  9. 生成モデル(VAE、GAN)
  10. 強化学習(DQN、etc)
  11. 松尾先生の基調講演(最新動向と今後の展望)
  12. PyTorchの演習


毎回の講義は、講義+演習ということになっていたのですが演習の時間が短く駆け足になりがちな印象がありました。理論面ではそれほどむずかしいことはやっておらず、日本語ですでに出ている書籍等でもカバーできる内容でしたが、演習についてはライブラリに頼らずに自分で書くというのを重視されているようで、理解の手助けになったように思います。

毎回の講義にはコンペ形式の宿題が出され、他の受講者と精度等で競いランキングが公開されます。

特別講演

講義とは別で講演会が2回あり、Google Brainの方とNVIDIAの方のお話を聞くことができました。

CUDAの中でどういうアルゴリズムが動いているのか、といったようなお話が聞けて非常に面白かったです。

スプリングセミナー

そして最後にスプリングセミナーというものがあり、これは強化学習自然言語処理・生成モデルの3つのテーマから一つを選択し、全3回の講義を受けます。 選択しなかったテーマについても潜ることが許されているので3つ受けることもできました。


内容については

強化学習
  1. 強化学習の概要(ベルマン方程式やTD学習あたり)
  2. DQNなど
  3. Deep Learning Dayで行うゲーム大会について(?)

みたいな感じだと思います(めんどくさくなって行かなくなったのでスライドだけ見てテキトーに言ってます。間違ってたらすみません)。 多分そんなに最新のところまでは扱ってないと思います。


自然言語処理
  1. 前処理について(形態素解析やword2vec)
  2. Encoder-Decoderモデル
  3. Transformerモデル

みたいな感じです。こちらは2回目までは顔を出してましたが3回目は行ってません()


生成モデル
  1. VAEの基礎・発展
  2. GANの基礎・発展
  3. 自己回帰モデル(Pixel CNN、WaveNet)、flow-basedモデル(Real NVP、Glow)、深層生成モデルの応用・発展、世界モデル

生成モデルを選択していたのでこちらには全出席しました。内容は盛りだくさんでものすごく駆け足だったのですが、スライドが情報満載で式変形も詳しく書かれていたので、かなり充実した内容だったと思います。GQNなどかなり新しめのところまで扱っていました。

チームプロジェクトについて

最後にチームプロジェクトについてです。6名ずつのチームに割り振られてチームごとに何か成果物を出し、Deep Learning Dayで発表をするという流れです。 (強化学習を選択していると、発表の代わりにゲームの大会に参加するという選択肢もできます。)


僕のチームは学生が僕1人であと5人は社会人というチームだったのですが、仕事でバリバリやってるような強い人が多く、めちゃくちゃ頼ってしまいました笑

チームで開発というのはやったことがなく、Yahoo Logdeに集まって話し合ったりなど色々と新鮮な体験ができてとても楽しかったです。


チームで取り組んだ内容は、ざっくり言うと楽曲の自動生成というものです。

具体的にはMusic VAEやMelody RNNというモデルで生成したmidiファイル(楽譜だと思ってもらえれば良い)を、GANSynthというNeural Synthesizerのモデル(要するにシンセサイゼーです)に入力し音声を合成し、最後にDrums RNNというモデルでドラムの音を加えることでかなりいい感じの曲になりました。

MusicVAE: Creating a palette for musical scores with machine learning.

magenta/magenta/models/melody_rnn at master · tensorflow/magenta · GitHub

GANSynth: Making music with GANs

magenta/magenta/models/drums_rnn at master · tensorflow/magenta · GitHub


いずれも、Google AIのmagentaというプロジェクトですでに実装されたものが公開されています。

実際に完成した楽曲は以下のサイトで聞くことができます。

soundcloud.com

これで、冒頭にあるとおりポスター発表(口頭発表部門というものもあります)で最優秀賞をいただくことができました。

Colabの動かし方も最初はよく分からず、論文は読んだけど。。。みたいな状態で、チームの方に助けられた格好なので、ほんとうに感謝しかないです。

最後に

初投稿で、書き方など不慣れな部分はあったかと思いますが、最後までお読みいただきありがとうございます。

副賞は一体何がもらえるんだろう、、