2020年11月17日火曜日

【参考書紹介】新火曜担当(原)

こんにちは! 
今年度からメディアセンターの学生スタッフを担当させていただいている原です。 
秋学期からは、火曜担当へと変更させていただくことになりました。引き続きよろしくお願いいたします! 

前回のブログでは、私の簡単な自己紹介と、研究分野であるAI(人工知能)の話などを少しさせていただきました。

今回は、私がこれまで読んできた中で、非常に勉強になったAIに関する参考書を紹介させていただきたいと思います。 AIなど事前知識がない方でも理解できるような基本的な内容の参考書から、実際にプログラムを組んでみたい人向けの実践的な参考書まで幅広く紹介できればと考えています。 

 【初級者(いままでAIの勉強をしたことない人)向け】  


 AI研究の第一人者である東京大学大学院工学系研究科准教授、松尾豊先生による人工知能の入門書です。この本ではAIと人類が歩んできた進化の歴史や、AIの将来について書かれています。難しい数式やプログラムに関する内容はほとんどなく、本質をとらえたわかりやすい構成になっているため、いままでAIを深く学んだことのない人でも、読むことができると思います。 私自身もAIの知識を身に着けるために、学部時代にまずこの本を読んだのを覚えています。 また、この本は機械学習や深層学習などある程度AIに馴染みのある人にもオススメです。特に、日本ディープラーニング協会主催のジェネラリスト検定(G検定)の推薦図書にもなっており、研究者や専門家がAIの全体像を改めて見直すきっかけにもなると思います。 


 AIを学ぶ上で大切なことは、AIの体系的な知識を身に着けることと、それを実装(プログラミング)する能力を磨くことです。特に、機械学習やディープラーニング(深層学習)などのAIの分野はPythonで実装されることが多いです。 Pythonは、無料でだれでも簡単に環境を構築できる、他のプログラミング言語に比べて理解しやすいなどの利点があり、現在最もホットなプログラミング言語となっています。そのため、Pythonの入門書は大変多く出版されており、どの参考書で勉強すべきか初学者の方には悩みどころでもあると思います。 今回紹介した本は、Pythonのプログラムを理解するために必要な最低限の知識を短時間で習得するという点に重点を置いており、非常に効率の良い本であると思います。この本よりも、内容が豊富かつ応用まで網羅した本も多々出版されていますが、私個人の意見としては、いきなりPythonの応用まで勉強する必要はなく、最重要事項だけ抑えた後は、実際に機械学習やディープラーニングのコードを実装していく中で、Pythonの使い方を学んでいけばいいと思います。 

 【中級者(AIの勉強をした経験はあるが、実装などには自信がない人)向け】 


 この本は、プログラミング言語Pythonを使って機械学習を実装することを目的とした本です。 レベルとしては機械学習やPythonを少しかじったことがあるけれども、実際にscikit-learnなど機械学習のモジュールの使い方に慣れたいといった読者を想定しています。 Pythonで機械学習を学べる本は、この本に限らずたくさんありますが、理論面と実装面どちらもバランスよく掲載されているという面では、この本が一番ではないかなと思います。 AIに関する参考書では、海外の文献を日本語訳して出版されているものが多いのですが、日本語版の欠点として、訳がぎこちない、学問的にしっくりこないなどの指摘がされることがよくあります。 ですが、この本は、AIに造詣が深い研究者による訳語本であるため、比較的理解しやすい日本語になっているとをいう点もオススメです。 ただ、機械学習の中でも特に注目を集めているディープラーニング(深層学習)に関する記述は少ないので、ディープラーニングを重点的に学びたい方は、他の本を読む必要がある事に注意してください。


 この本は、AIの中でも特にディープラーニングの理論と実装に重点を置いた本です。 Pythonによるディープラーニング実装に関する本は、これまで多数出版されていますが、それらの本の多くは、実装に重きをおいており、ディープラーニングの詳細な理論の説明(特にディープラーニングを理解するために必要な数学的背景)は省略されています。 ですが、この本では、ディープラーニングの数学的背景を詳細にかつ丁寧に説明しています。また、行列や微分など、導入のための数学的準備も丁寧にまとめられているため、数学に不安のある文系の方でも理解することができると思います。 そして、私がこの本をオススメする一番の点は、Pythonによるコードを一から書いていく点です。ほとんどの参考書では、ディープラーニングの実装は専用のモジュール(KerasやPytorch)を利用して書かれているため、プログラムの中で実際にどのような計算がされているか理解することができません。そのため、ディープラーニングの仕組みはわからないけど、とりあえず実装はできるといった状態に陥る危険性があります。 この本では、ディープラーニングの数学的背景を理解した上で一から自分の手でコードを書いていくので、完成までに時間はかかりますが、しっかりとした理解を身に着けることができると思います。 私の経験上、一度自分の手でディープラーニングを実装できるようになってから、専用のモジュールなどを使って実装することをオススメします。 

 【上級者向け(AIの理論・実装ともに自信があり、さらに奥深い内容まで学びたい人)向け】
 

 ディープラーニングの基本的な仕組み、実装の手順を理解したら、次段階としてディープラーニングの更なる応用を学びましょう。今回紹介する本では、ディープラーニングの中でも、画像認識に特化した畳み込みニューラルネットワーク(Convolutional Neural Network:CNN)や時系列分析に特化した再帰型ニューラルネットワーク(Recurrent Neural Network:RNN)など様々な応用分野が紹介されています。 またこの本では、Kerasと呼ばれるPythonのディープラーニング用のライブラリを用いて、ディープラーニングを実装しています。Kerasを用いることで、ディープラーニングを非常に簡単に実装することができます。中級者向けの項目で紹介した本などを参考にして、ディープラーニングのコードを一から実装できるようになった後には、Kerasなどの専用ライブラリを利用した実装法もマスターしておくといいでしょう。 唯一この本の欠点を挙げるとすれば、日本語訳が少しぎこちない点です。この本の著者は、Kerasの開発者でもあるので、英語に自信がある人は原文のまま読む方が理解しやすいかもしれません。 


 最後に紹介する本は、データ分析の技術に特化した本です。この本は、Kaggleと呼ばれるデータ分析コンペで高得点をたたき出すために必要な、前処理や検証方法など技術を一冊に網羅した本です。 Kaggleは世界中のデータサイエンティストたちがさまざまなテーマでデータ分析の技術を競い合うコンペで、上位入賞者は高額の賞金や就職先の紹介など様々な恩恵を得ることができます。 また、Kaggleにはデータサイエンティスト通しの交流の場が用意されていたり、上位入賞者のコードやデータ分析法が公開されているため、データサイエンスを学びたての人であっても気軽に参加することができます。機械学習やディープラーニングをある程度理解し、Pythonで実装できるようになった人は、Kaggleに積極的に参加し、実際のデータ分析に触れてみることを推奨します。 この本では、実際のデータサイエンティストたちによる、Kaggleで上位に入賞するためのさまざまなノウハウが紹介されているため、この本を参考にしてKaggleで上位入賞を目指してみましょう。 

 ここまで、初級者向けから上級者向けまでいくつか参考書を紹介させていただきました。 いきなり難しい本で勉強する必要はないと思うので、まずは自分が読みやすいと感じるレベルから始めるといいでしょう。 前にも少し触れましたが、AI系の勉強をこれから始めたい人は、是非、機械学習に関する(数学的)知識とそれを実装するプログラミング能力を同時に磨く必要があることを意識してください。