経理マンによるG検定受験対策


この記事は主に以下の方に向けて書かれています。

この記事には以下の内容が書かれています。

  • 門外漢である経理マンによるAI関連知識の学習履歴やG検定受験対策、そしてG検定を受験する意義について紹介します
  • ディープラーニング G検定公式テキスト』『ゼロから作るDeep Learning』について、初学者が読んだ感想を記載しています

日本ディープラーニング協会(JDLA)が主催するG(ジェネラリスト)検定が来週7月4日に開催されます。次回の受験料は特別に半額になるとのことでしたので、試しに受験してみることにしました。そこで、G検定対策に限定せず、これまで私自身がAI(人工知能)・機械学習にどのように触れてきたか、簡単に振り返りたいと思います。

G検定について検索すると、たくさんの情報が出てくると思います。私自身は、AI関連の会社に勤務しているわけでもなく、もちろんエンジニアでもないただの経理マンですので、まったくの門外漢の人間がどのように学習してきたかの一つの例としてご参考になれば幸いです。

まずは入門書から

まずは、JDLA理事長でもある松岡豊先生による『人工知能は人間を超えるか ディープラーニングの先にあるもの』(角川EPUB選書)は外せません。JDLAの推薦図書にも挙げられていますが、おそらく日本においてディープラーニングを一般に広く紹介した最初の書籍であると思います。私自身もこの書籍によってAIの歴史や、ディープラーニングの大まかな技術的概要*1、そしてその潜在的インパクトの大きさについて学び、初めてディープラーニングの世界に触れることになりました。当書は入門書ながら、AIの全体像を俯瞰できる構成となっており、後ほど紹介する『ディープラーニング G検定公式テキスト』の前半の内容をかなり含んだものとなっています*2

2015年3月に刊行された書籍であり、発売当初は話題書ということでさらっと読んだだけでしたが、ディープラーニングが社会的にも大きな話題(≒バズワード)となったこともあり、AIに興味をもって当書をしっかりと再読したのは2017年に入った頃でした。改めてディープラーニングの将来の可能性にとてもワクワクしたのを覚えています*3

その後、AIについてさらに興味を抱き、その他の入門書や一般向けの関連書籍を数冊読みました。当時読んだ中で、特に興味深かった書籍を一冊挙げるとすると、井上智洋著『人工知能と経済の未来』(文春新書)になります*4。AIの入門書は今では山のようにありますので選ぶのが難しいですが、興味のありそうなものを直観的に何冊か選んで読んでみると良いと思います。

Python機械学習の世界へ

AIに関する入門書を数冊読んで、ディープラーニングを含む機械学習全般に興味を持つと、今度は実際に自分で手を動かしてみたくなりました。機械学習ではPythonというプログラミング言語がよく使用されますが、私はPythonの知識が全くなく、なかなか一歩を踏み出せずにいましたが、2019年に入ってから、ProgatePyQといったオンライン学習サービスを活用してPythonの基礎を勉強してみました。なんだかんだでPyQには合計半年くらいはお世話になっていたと思います。詳しくは以下のブログ記事をご参照ください。

keiri.hatenablog.jp

PyQでは、機械学習やその周辺のライブラリ(scikit-learnやpandas、NumPyなど)の使い方についても学び、データサイエンスの初歩の初歩についても感覚をつかむことが出来ました。これらのライブラリを使うと、誰でも簡単に機械学習を体験することができます。おかげで、機械学習の主要な手法については(ただ入門書を読むだけ以上には)身に付いたように思います。

G検定対策:公式テキストと問題集

G検定の存在は以前から知っており、興味はありましたが、次回に限って受験料が半額になるということを知り、先月(2020年5月)のGW明けから対策を始めました。

G検定対策として、早速以下の2冊を購入しました。問題集は何冊か出ていますが、いわゆる「黒本」と呼ばれるものを選びました。

公式テキストは、G検定の試験範囲に沿う形で、それぞれの内容がコンパクトにまとめられています。AIに関する入門書ではあるものの、かなり高度な単語まで網羅されています。これを読んでから、専門的な書籍を読むと、理解が早いように思います。

公式テキストの章立ては以下の通りです(内容についてはシラバスを参考に記載しています)。

項目 内容
第1章 人工知能(AI)とは  
第2章 人工知能をめぐる動向 探索・推論、知識表現、機械学習、深層学習
第3章 人工知能分野の問題 トイプロブレム、フレーム問題、弱いAI、強いAI、身体性、シンボルグラウンディング問題、特徴量設計、チューリングテスト、シンギュラリティ
第4章 機械学習の具体的手法 代表的な手法、データの扱い、応用
第5章 ディープラーニングの概要 ニューラルネットワークディープラーニング、既存のニューラルネットワークにおける問題、ディープラーニングのアプローチ、CPU と GPUディープラーニングにおけるデータ量
第6章 ディープラーニングの手法 活性化関数、学習率の最適化、更なるテクニック、CNN、RNN、深層強化学習、深層生成モデル
第7章 ディープラーニングの研究分野 画像認識、自然言語処理、音声処理、ロボティクス (強化学習)、マルチモーダル
第8章 ディープラーニングの応用に向けて(1)産業への応用  
第9章 ディープラーニングの応用に向けて(2)法律・倫理・現行の議論  

第1章~第3章は『人工知能は人間を超えるか』とほぼ内容的に重なる、AIおよびディープラーニングに関する一般教養的な話になります。『人工知能は人間を超えるか』を読んだ人にとっては、試験対策のための復習、といった位置づけになると思います。

第4章は機械学習の簡単な入門となります。機械学習が以下の3つのカテゴリーに分けられることを示した上で、強化学習を除く各項目の主な手法について簡単に説明を行っています。

教師あり学習教師なし学習は、Pythonのライブラリであるscikit-learnを用いると、簡単に試してみることができます(詳細はこちらの記事などをご参照ください)。私自身、上で記載した通り、PyQのオンライン学習で機械学習の概要を学んでいたため、復習の位置づけとなりました*5

第5章、第6章ではディープラーニングのある程度専門的な内容を含む説明がなされています。第5章ではニューラルネットワークからディープラーニングへの発展、誤差逆伝播勾配消失問題、そして勾配消失問題を突破するブレークスルーとなったオートエンコーダによる事前学習などが紹介されており、『人工知能は人間を超えるか』を読んでいれば復習となる内容です*6

続く第6章では、活性化関数としてシグモイド関数に代わり現在はReLU(Rectified Linear Unit)関数が良く使われること*7、関数の最小化問題を解くアルゴリズムである勾配降下法とその改善法(AdagradAdadeltaRMSpropAdam)、更なるテクニック(ドロップアウトearly stopping標準化白色化重みの初期値の設定バッチ正規化)、そして画像処理に用いられるCNNや、時系列処理に用いられるRNN、さらに深層強化学習、と専門用語が次々と出てきます。非常にコンパクトに分かりやすく説明がなされていますが、初学者にとっては一番の難所になると思います。私も最初はほとんど頭に入ってきませんでしたが、後述する『ゼロから作るDeep Learning』の第6章を読むことでようやく理解が進みました*8

第7章では現在のディープラーニングの研究分野(画像認識や自然言語処理など)が簡単に紹介され、続く第8章、第9章は、おそらく非エンジニアがAIを用いる際にもっとも重要となる、AIの実社会への適用事例や法的な課題などが論じられています。これらの内容はすさまじいスピードで陳腐化していくため、AIに関する体系的な知識がまとめられた『AI白書』などで知識をアップデートしていく必要がありそうです*9

以上の通り、公式テキストを一通り読破してから、問題集を解いてみました。感触としては、あまり時間をかけずに7~8割程度は正答できました。Amazonの書評などにもあるように、確かに公式テキストだけで確実に合格するのは難しいかもしれませんが、しかしG検定のシラバスに沿って知識がコンパクトにまとめられているため、公式テキストをベースに、問題集や関連書籍を読むことで、効率的にG検定に合格できる知識を十分に身につけられるように思いました。

『ゼロから作るDeep Learning』を読む

ディープラーニング界隈で大変に有名な、斎藤康毅著『ゼロから作るDeep Learning』(オライリージャパン)。ディープラーニングを本格的に学ぶ際の入門書として確固たる地位を築いており、JDLAの推薦書籍としても上位に挙げられています。実はこの本、2017年にAIに興味を持った際にとりあえず買ってはいたのですが、その時点ではPythonに全く縁がなかったこともあり、なかなか手が付けられず3年近くも本棚の肥やしになっていました(苦笑)。

G検定受験を決めたことを機に、ディープラーニングを深く理解するため、最近ようやく取り組み始めました。結果として、決して簡単ではありませんでしたが、意外と時間がかからず最後まで読み通すことが出来ました。ベストセラーであり、多くの方がコメントを寄せていますが、経理マンというまったくの素人のコメントはあまりないと思いますので、少し詳しく感想を書いておきます。なお、PythonはローカルPCのJupyter Notebook上で操作を行いました。

当書では、まず第1章でPythonの初歩的な文法の説明を行い、第2章でパーセプトロン、第3章でニューラルネットワークの実装を行います。ここまでは、NumPy*10に馴染みがないと少し取っ付きにくいかもしれませんが、そんなに難しいことはありません。

第4章から、本格的なディープラーニングの世界に少しずつ足を踏み入れていきます。個人的には、第4章で扱う交差エントロピー誤差の実装のあたりから、難易度が上がってきたと感じました。プログラムも長くなり、非エンジニアにとってはゼロからプログラムを書くのが難しくなってきます。そのため、勉強のためには自分でゼロから書く(写経する)方が良いのでしょうが、時間も限られていたため、第4章の途中からGitHub*11に公開されているサンプルコードを(内容を一通り追いかけて理解したうえで)コピーしてJupyter Notebookで実行する、という方法に切り替えました。

なお、第4章では勾配降下法を用いる過程で数値微分を実装しますが、微分の定義式をプログラムで書いて数値微分を求める、という作業は新鮮でした。また、私は入門書を読んで、誤差逆伝播(Backpropagation)の発明によってはじめてニューラルネットワークの学習が可能になったと思っていたのですが、そうではなく、単純な数値微分でもニューラルネットワークの学習は可能だが、パラメータが大量にあると計算コストが高くなるので、効率的な計算のために誤差逆伝播法が必要になった、ということを理解できました*12。実際に、第4章では誤差逆伝播法を用いず、数値微分のみによるニューラルネットワークの学習を実装します。

続く第5章において、いよいよ誤差逆伝播を実装します。「計算グラフ」という他ではあまり見たことのない手法を用いて、加算レイヤ乗算レイヤReLUレイヤAffine(行列積)レイヤSoftmax-with-Lossレイヤなどを作成し、これを用いて「まるでレゴブロックを組み合わせて作るように、ニューラルネットワークを構築(p156)」します。ここが、当書のクライマックスであると思います*13。第4章で実装したプログラムと比較することで、誤差逆伝播法の威力(計算時間の大幅短縮)を実感することができます。

第6章では、学習に関するテクニックとして、勾配降下法の改善(MomentumAdaGradAdam)や重みの初期値設定(Xavierの初期値Heの初期値)、Batch Normalization過学習を抑制するための正則化Weight decayDropout)などが紹介されています。コードの解説はほとんどありませんが、GitHubにてサンプルコードが提供されており、これを実行することで、これらのテクニックの効果を実感することができます。G検定公式テキストの第6章で紹介されているテクニックと概ね内容は重なっており、公式テキストでは無味乾燥な専門用語の羅列であったところが、より良く理解できるようになりました。

そして第7章ではついに畳み込みニューラルネットワークCNN)を実装します。CNNの特徴は、畳み込み層プーリング層にありますが、ここでは第5章に続く形でPooling レイヤconvolutionレイヤを新たに作成して、これらを組み合わせてCNNを実装します。

最後の第8章においては、当書の締めくくりとして、ディープラーニングの課題や今後の可能性等について触れられています。当書では、G検定公式テキストにおいてCNNと並んで説明のあるRNN(Recurrent Neural Network)には触れられていませんが、これは続編である斎藤康毅著『ゼロから作るDeep Learning② ―自然言語処理編』(オライリージャパン)において詳説されているようです。自然言語処理に用いられるディープラーニングの技術についても大変興味深いのですが、正直なところ1冊目だけで結構な満足感を味わえましたので(笑)、少し休んでから折を見て続編に取り組もうと思います。

さて、当書を振り返ってみると、途中からはかなり大きなプログラムとなり、非エンジニアにとっては自力で構築するのは厳しい内容になってきますが、コードの核となる部分を読んで一通り内容を理解するくらいであればなんとかなる、と思いました。初心者がディープラーニングの基本を理解する上で、非常に有益な書籍であることは間違いないと思います。もちろんG検定合格にも役に立つと思います。

門外漢がG検定を受験して合格できるか

私自身まだG検定を受験していない立場ではありますが、公式テキストや問題集、そして合格者のブログなどを見る限り、問題なく可能と思います。微分や行列計算についても多少の知識が問われるようですが、複雑な微分計算や、行列の固有値・対角化等が出てくるわけではありませんので、微分計算の意味(接線の傾き)や行列の掛け算の方法を知っておけば十分だと思います*14

(7/4追記)G検定を受験しての加筆

私がG検定のための購入した参考書は、上でも紹介した『ディープラーニング G検定(ジェネラリスト) 公式テキスト』『徹底攻略 ディープラーニングG検定 ジェネラリスト問題集』『AI白書』の3冊です。G検定対策として、試験直前までに実施したことは以下の3点(いずれも3~4時間程度)であり、試験対策に要した時間は合計で約10時間程度になると思います*15

  • 公式テキストを2~3回通読

  • 問題集を1周

  • AI白書をつまみ食い的に読む

実際にG検定を受験してみたところ、思った以上に未知の単語、すなわち参考書に載っていない最新の話題に関する出題が多く、苦労しました。問題集の問題は9割程度解けていたので、正直なところあまり心配していなかったのですが、実際には、しっかり解ける問題は全体(小問200問)の3分の1~半分弱程度しかなく、残りの大部分はGoogleで検索するか、参考書における記載を索引等から探して、分かる範囲で解答する、という感じになりました。G検定は自宅のPCで受験する方式のため、このように検索して解くことも想定されていると思われます。

結果的に、予想以上にGoogle検索を駆使する試験となりました(笑)。Google検索が利用できるとは言え、1問あたりに掛けられる時間は多くても1分程度ですので、1分以内にGoogle検索結果から答えを絞り込む必要があります。

また、参考書(上記の3冊)を参照することも多く、その点では、参考書に書いてあったかどうかを何となく覚えておくことも重要であるように思いました。公式テキストは試験中に何度も見返しましたし(特に第6章、第7章)、その他の2冊についても数回見返す機会がありました。なお、試験が終わって、問題集はもう見返すことはないかもしれませんが、AI白書はまだほんの一部しか読めていませんので、今後も継続的に眺めて知識を深めていきたいと思います。

(7/16追記)無事G検定に合格しました

7月16日に無事G検定(JDLA Deep Learning for GENERAL 2020#2)の合格通知が届きました。受験者数12,552名、合格者数8,656名ということで、合格率は69.0%と、例年通りの高い水準となりました。

個人的な手ごたえとしては、なかなか難しくて出来は芳しくないものの、もし例年通りの合格率であれば多分合格しているだろう、といった感触でした。得点や合格ラインは開示されていないため、どのくらいの得点で合格できるのか不明ですが、感覚的には50点も取れれば合格できるような試験だったのではないかと思います。

G検定は資格試験ではなくあくまで検定試験ですので、人をふるい落とす試験ではなく、一定水準をクリアすれば誰でも合格できる試験です。より多くの人に合格してもらい、実社会にその知見を還元してもらいたい、という趣旨の検定であると感じました。合格率も高く、この試験に合格したからと言って何かができるわけではありませんが、門外漢にとっては「AIに多少の興味を持っている」ことの証にはなると思います。私自身、現在はAIに関連する仕事をしているわけではありませんが、そう遠くない将来に、この知識を活用できるような業務にも携っていきたいと考えています。

G検定を受験する意義

G検定を受験する意義についてですが、G検定の受験勉強をすると、AIに関する基礎的な知識が身に付くことにより、世の中にあふれるAIに関する勘違い言説に惑わされず、地に足を付けてAI活用に取り組めるようになると思われるので、非常にメリットは大きいと思います。

JDLAの推薦図書にも挙がっている、韮原祐介著『いちばんやさしい機械学習プロジェクトの教本』(インプレス)において、著者は「AIを語る有識者風の方への取材記事には、眉をひそめたくなるような低質なものが含まれることがあることも事実です(p38)」と指摘しています。「AIが神になる」などの空想的な言説を「AIポエム」と呼ぶそうですが、G検定の勉強をすることでAIポエムに騙されることもなくなるでしょう。

たとえば、AIの難問としてフレーム問題シンボルグラウンディング問題(記号接地問題)がある、ということを知っているだけで、単に危機感を煽るだけのAIポエムに騙されることはないでしょう*16。もちろん、AI研究の進展によりAIが獲得できる「概念」の範囲が大きく拡張すれば、将来的にこれらの問題が解決される日が来るかもしれませんが、少なくとも短中期的には起こり得ないことのように思います。近い将来、私たちの仕事の全てがAIに奪われる、といった(有識者風の人が語る)言説をあまり真に受ける必要はないでしょう*17

以上、これまで私が触れてきたAI・機械学習に関する書籍と、その一環としてのG検定対策について簡単に説明してみました。少し長くなりましたが、お役に立てば幸いです。

*1:当書の言葉で端的に説明すると、「ディープラーニングは、主成分分析を非線形にし、多段にしただけ(p167)」です。

*2:当書はいまでもおススメできる内容の書籍ではありますが、刊行からすでに5年が経過し、内容が一部古くなっている箇所があります。たとえば、「囲碁は、将棋よりもさらに盤面の組み合わせが膨大になるので、人工知能が人間に追いつくにはまだしばらく時間がかかりそうだ(p80)」と記述されていますが、実際には当書刊行の1年後(2016年3月)にAlphaGo(アルファ碁)が囲碁のトップ棋士を五番勝負で破っています。これは、AIが専門家の予想を上回るスピードで成長していることの証左ですが、いずれにしてもG検定対策という観点では、別の書籍で知識をアップデートしておく必要があります。

*3:ディープラーニングの最大の特徴は、従来人間が設計していた特徴量を自ら学習できることですが、「特徴量抽出は人間の洞察力そのものではないか。ディープラーニングによる特徴量抽出が、より抽象的なもの、言語レベルにまで到達したときに、人工知能は人間にとって真に脅威となるかもしれない。」と私は当時の読書メモに記録していました。

*4:AIは人間同士にある「感覚の通有性」を持たず、自らの身体に問い合わせることができないのでヨガの指導ができない、といった指摘になるほどと思った記憶があります。また、「あとがき」において、バタイユケインズを参照しつつ、AIに仕事を奪われる結果、ほとんどの人間はいずれ存在価値を失うため、「有用性」を極度に重視する近代的な価値観の転換が必要になる、そして役に立つと否とに関わらず価値のある「至高性」が蘇る、という指摘は大変刺激的でした。

*5:もし機械学習に馴染みがないという方は、たとえば、有賀康顕・中山心・太西林孝著『仕事ではじめる機械学習』(オライリージャパン)の第1章~第3章を読んでみることをおススメします。当書はJDLAの推薦図書にも挙げられています。

*6:ただし、公式テキストにおいて、事前学習は現在ではほとんど使われていないことが述べられています。このあたり、『人工知能は人間を超えるか』から知識をアップデートする必要があると思います。

*7:これにより、勾配消失問題が大きく改善され、事前学習を行う必要がなくなりました。

*8:ただし、『ゼロから作るDeep Learning』は非エンジニアには少しハードルが高いため、純粋にG検定の合格を目指すのであれば、公式テキストの用語を丸暗記する方法でも良いかと思います。

*9:とは言え、『AI白書』は大きいうえに非常に分厚い書籍であり、通読するのはなかなか困難です。とりあえず2020年度版を買ってみましたが、全5章のうち「第2章 技術動向」「第3章 利用動向」「第4章 制度政策動向」が主要コンテンツであり、現時点では、各章を1~2時間程度かけてざっと流し読みするくらいしかできていません。非常に情報量が多い冊子ですので、(試験対策を考えなければ)基本的には目次などを眺めて興味のある所をつまみ読みすることで十分だと思います。

*10:Pythonにおける数値計算のライブラリ。私はPyQで軽く学習しました。

*11:エンジニアの間で広く利用されている、ソフトウェア開発プラットフォーム。

*12:入門書では、単純に損失関数(誤差)を各ノード間の重みで微分して勾配降下法を適用しようとすると、微分の連鎖規則が複雑に絡み合って計算が困難である、と書いてあると思います。確かに式変形による解析的な微分計算は困難ですが、数値微分を用いることで、力技ではあるものの一応計算することは可能です。

*13:なお、誤差逆伝播法では、いわゆるδ(ユニットの誤差)を用いた計算式による説明が一般的なように思いますが、当書ではその記載がなく、JDLAの推薦図書でもある、岡谷貴之著『深層学習』(講談社)という専門書で別途内容を確認しました。この本は、Amazonのレビューを見ると初心者でも分かりやすいと書いてありますが、そんなことはなく、行列計算にある程度習熟していないと非常に難しいと思います。

*14:実際に2020/7にG検定を受験したところ、数学の問題は数問程度でしたので、数学から完全に離れているような方であれば、効率性の観点から数学パートを全て捨ててしまっても問題ないと思います。なお、試験対策とはいえ、行列の積の計算を丸暗記することに意味があるのかどうかという点について言えば、たとえば長沼伸一郎著『物理数学の直観的方法』(講談社)のやや長めの後記が読めるようになる、といったメリットはあります(詳細は書籍をご覧いただくか、こちらの記事などをご参照ください)。

*15:これは2020年5月以降、純粋な試験対策に要した時間であり、『ゼロから作るDeep Learning』に費やした時間などは除いています。当書の通読だけで10時間程度は要していると思います。

*16:たとえば、AIは記憶力や論理的思考力で人間をはるかに凌駕しており、学校で学ぶような勉強(資格試験の勉強なども含む)はこれからの時代は無意味であり、知識に代わって創造力やコミュニケーション力を身につけなければならない、といったことがまことしやかに語られています。記憶力や単純な計算能力は大昔からコンピューターが人間を凌駕していますが、実際にはAIが記述式の入試問題を解くことすら難しい状況です。学校の勉強だけでは測れないような創造力やコミュニケーション力が社会で生きていくために重要であることは確かですが、それはAIに関係なく昔から重要な能力であり、AI脅威論を用いて危機感を煽るような方法は個人的には賛成できません。確かに表層的な知識を暗記するような勉強では不十分ですが、知識の背後にある抽象的な概念を咀嚼して理解するような勉強ができれば、それだけでAIに対抗できる有用な能力となるように思います。

*17:たとえば最近読んだ、世界でもトップクラスのAIスタートアップであるPreferred Networksの共同創業者による著書、西川徹・岡野原大輔著『Learn or Die 死ぬ気で学べ プリファードネットワークスの挑戦』(KADOKAWA)という本においても、以下のような記載がありました。「コンピュータ技術が進むと仕事が失われるという懸念を持っている人もいるが、我々に言わせれば、そんな心配は無用だ。ロボットを高度化しようとすればするほど「ここは人間にしかできないな」ということがいくつも見えてくるからだ。たとえば自動運転ができたとしても、人間とのギャップがそこまで埋まるかというと、そうでもないと思う。何しろ、物をつかむこと一つ、人間に劣るのだ。スピードも人間のほうが圧倒的に速い。(p208)」