見出し画像

放送大学からはじめるAI(が少しわかる)人材への道

はじめに

この記事は、文系出身の若手SIer社員が放送大学を活用してAI人材を目指した記録です。AI(機械学習・深層学習)を全く知らない状態からスタートして、2年間でJDLA E資格の取得と機械学習を使った論文の学会発表まで至りました。一旦AI(が少し分かる)人材のスタートラインには立てたかなと思っています。

そもそも誰?なぜ放送大学なの?というところは以前公開したこちらをご参照ください。いわゆる「文系SE」だと思っていただいて大丈夫です。

忙しい人のために:AI人材への4ステップ

1.まず放送大学に入学して以下の科目を履修します。
AIシステムと人・社会との関係(’20)
計算の科学と手引き(’19)
情報理論とデジタル表現(’19)
入門線型代数(’19)
線型代数学(’17)
入門微分積分(’16)
解析入門(’18)
自然言語処理(’19)
データの分析と知識発見(’20)
統計学(’19)
心理統計法(’17)
問題解決の数理(’17)
数値の処理と数値解析(’14)

2.次に以下の資格を取ります。
JDLA G検定
Pythonエンジニア認定基礎試験
Pythonエンジニア認定データ分析試験
統計検定2級

3.E資格の受験資格を得るために認定講座を受講し、本試験を受けます。ここまでで普通に合格できる水準に達しているはずなので、合格します。

4.余裕があれば卒業研究を履修し、それを元ネタにして学会に出します。

ゴール設定

IPAのIT人材白書では、AI人材を「AI研究者」・「AI開発者」・「AI事業企画」の3つに分類しています。「AI研究者」は実際にAIの中身である数理モデルを研究しているような超高度人材なのでいったん除外して、「AI開発者」「AI事業企画」ともに「AI モデルやその背景となる技術的な概念を理解した上で」ソフトウェア実装やサービス企画が行える人材であることが強調されています。SIer社員としてはここを目指したいところです。

何か客観的に技術水準を示せる方法はないかなと考えたところ、日本ディープラーニング協会という団体がE資格というディープラーニングの実装に関する資格試験を運営していることを知りました。社内でもそれなりに高評価がもらえる資格として提示されていたため、いったんこちらを目標にすることに決めました。

あまり長期戦になっても仕方ないので、2019年度と2020年度の2年間でJDLA E資格の取得+何かしら実装を伴うAI系の論文を学会に発表することをゴールに設定しました。学会発表をゴールに含めた理由は、ペーパーテストであるE資格の合格だけではAI(が少し分かる)人材として売っていくために説得力が足りないと思ったためです。

JDLA E資格は、日本ディープラーニング協会が主催するディープラーニングの認定資格であり、「ディープラーニングの理論を理解し、適切な手法を選択して実装する能力や知識を有しているかを認定する」ものとされています。ハードル高そうですね。

2021年版のシラバスは以下の通りです。

応用数学
線形代数
確率・統計
情報理論

機械学習
機械学習の基礎
実用的な方法論

深層学習
順伝播型ネットワーク
深層モデルのための正則化
深層モデルのための最適化
畳み込みネットワーク
回帰結合型ニューラルネットワークと再帰的ネットワーク
生成モデル
強化学習
深層学習の適応方法

開発・運用環境
ミドルウェア
軽量化・高速化技術

大変です。確率・統計以外は何も分かる気がしません。情報に理論ってあるんですね。線形代数は大昔に理系の友達から聞いた言葉な気がします。畳み込みネットワークは畳と関係あるんでしょうか。そんなレベルからのスタートでした。

放送大学でどこまでカバーできるか

シラバスを確認して、いきなりE資格に突っ込んでいくのはいささか無謀な予感がしたため、その前段階として使えそうな試験や放送大学の授業がないかどうか探すことにしました。E資格のシラバスを解体して、放送大学のシラバスと突合してみます。

※以降、「」付きで放送大学の科目名が出てきます。各科目の詳細は以前公開したこちらをご参照ください。

Python
「情報学へのとびら」と「計算の科学と手引き」に少し出てくるPythonです。放送大学にはPythonプログラミングだけを扱う授業は面接授業以外にはありません(C言語とJavaとRとVBAはオンライン授業がある)。

E資格はPythonによるコードレベルの実装まで問われる試験で、Pythonがある程度読み書きないとさすがに手も足も出ません。そこで第一歩としてPythonエンジニア認定基礎試験を受けました。これはPythonチュートリアルという公式ドキュメントから出題される試験で、基本的な文法と言語仕様が出題されます。

さほど面白い試験ではありませんが、普段Pythonを使っている人でも意外と知らない仕様が隠れていたりするので、Pythonチュートリアルを読むモチベーションとして受験するのもアリかもしれません。随時受験可能で、放送大学の学生なら学割で受験料が半額になります。合格体験記の寄稿でかわいいPythonちゃん(?)ぬいぐるみがもらえるキャンペーンなんかもやっているようです。

続いて第二歩として、同じ運営元のPythonエンジニア認定データ分析試験を受けました。こちらはNumPy、pandas、MatplotlibといったE資格のコード問題で使われるライブラリに加え、ごく初歩の線形代数と解析学も出題されます。出題範囲の微妙な被り具合からして、E資格の前哨戦として受験して損はないように思います。こちらも随時受験可能で放送大学の学生なら学割で受験料が半額になります。お得ですね。

AI概論
E資格と同じ日本ディープラーニング協会が主催するもう一つの試験に、年3回実施されているJDLA G検定というものがあります。E資格のEはENGINEER、G検定のGはGENERALということで、AIエンジニアではなく広く一般向けにAIとは何か?を問う試験になっています。出題範囲としては重複している部分とそうではない部分がありますが、G検定では法律・倫理系の論点や歴史的な経緯が取り上げられており、AI(が少し分かる)人材を目指す身としてはG検定で概論を押さえておくことには意味があると思います。放送大学の学生なら受験料が12000円から5000円になります。お得すぎる。

放送大学では「AIシステムと人・社会との関係」がこのあたりの論点をカバーしています。仕事を奪ったり、宇宙船で乗組員を抹殺しようとしてくるだけの存在ではないことが分かります(恥ずかしながら当初は本当にそんな印象しかありませんでした)。

線形代数
放送大学の科目に「入門線型代数」「線型代数学」というものがあり、これをクリアすれば線形代数は少し分かったと言えそうです。頻出の固有値分解と特異値分解は「数値の処理と数値解析」の範囲に入っています。順番に履修してみました。計算方法もですが、線形代数がAIにおいてどういった役割を果たしているのかを理解するのが案外大変でした。

確率・統計
大学院生の時に統計分析をやっていたため、ここだけは何とかなりそうでした。忘れている部分もありそうなので、「統計学」を履修した上で統計検定2級を受けることにしました。出題範囲としては8割方カバーされているように思います。CBT方式でいつでも受けられるので楽でした。放送大学の学生なら学割で2000円引きになります。

ベイズ統計だけは統計検定の出題範囲外なように思えたので、「心理統計法(実態としてはベイズ統計法入門)」で補強しました。E資格では尤度関数やベイズの定理が頻出なので、これは非常に良い選択でした(残念ながら2020年度で閉講になってしまったようです)。

情報理論
「情報理論とデジタル表現」が完全に包含する部分だったので、これを履修しました。交差エントロピーやらKLダイバージェンスやらの定義が問われます。これだけで勝てること請け合いです。

機械学習
機械学習の基礎の小項目として、ロジスティック回帰や主成分分析、k近傍法、クロスバリデーションといった手法が出題されます。これらは放送大学の「データの分析と知識発見」や「統計学」の講義範囲です。

さらに線形回帰や最小二乗法は「統計学」「問題解決の数理」「数値の処理と数値解析」などで頻出です。非線形問題についても「数値の処理と数値解析」で触れられます。ややマニアックなところでは、SVMで出てくるスラック変数の概念が「問題解決の数理」で議論されます。ここは認定講座でも名前だけしか出てこなかったので、内実が学べて良かったです。

深層学習
深層学習のキモである誤差逆伝播法と連鎖律を理解するために最重要なのが微積分です。勾配ベクトルや偏微分の考え方が分からないと実装どころではないので、最低でも多変数関数の微分までは理解が必須です。すなわち放送大学では「入門微分積分」と「解析入門」の前半まで(解析入門の後半は複素解析なのでE資格的には範囲外)はきっちり理解する必要があります。人によってはこのプランで一番のヤマ場はここだと思います。高校で数IIIをやっていなかったり、数学にしばらく触れていないと普通に難しいです。場合によっては「初歩からの数学」から始めるのも選択肢かと思います。私はそうしました。

正則化で出題されるノルムの考え方や、最適化の二次近似で問われるニュートン法、スパース行列の演算は「数値の処理と数値解析」、貪欲法のアルゴリズムは「問題解決の数理」、RNN等の自然言語(系列データ)処理はそのものズバリ「自然言語処理」で取り上げられます。

開発・運用環境
ここはちょっとドンピシャで該当するものはなかったです。強いて言えばPythonエンジニアデータ分析試験で開発環境が少しだけカバーされているのと、「計算の科学と手引き」で量子化が、「数値の処理と数値解析」で分散処理が少し取り上げられています。ただ量子化や分散処理の考え方は一般的なものなので、それほど悩むところではない気がします。

この他、面接授業で「Python入門」や「機械学習入門」系の科目がちょくちょく開講されているようなので、そのあたりを履修してみるのもよいと思います(私の時はコロナで情勢が不透明だったので面接授業は履修していません)。

スケジュール

自分が所属していたSIerでは、ゴール(ないしシステムリリース)から逆算してスケジュールを決めることを「逆線表を書く」とか「ギャクセン引いてみる」と言っていました。ここは敢えて古典SIer語に倣ってギャクセンを引いてみます。

E資格は毎年2回、2月(#1)と8月(#2)に実施されています。難易度的にすぐには合格できなそうなので、2020#2を目標に設定しました。ここまでで大枠の「理論と実装」を理解して、最後の半年で新規性のある成果を出して論文にするのがよさそうです。

ギャクセンはこのような感じになりました。結構忙しい予感がします。

2019年度の後半から突如イタリア勤務を言い渡されて1学期分吹っ飛んだり、受験予定だったE資格2020#2がコロナで消滅したりといくつかトラブルはありましたが、おおよそ想定通りに進めることができました。E資格2021#1に合格し、電子情報通信学会の知能ソフトウェア工学研究会に卒研から発展させた論文を提出しました。

名刺に貼ろうとして前例がないとかでリジェクトされた合格認証ロゴをここに供養します。

各試験の所感

E資格そのものの受験レビューは他の記事に譲りますが、シラバス通り数学から始まり最近のモデルの実装まで満遍なく出題されて納得感のある試験でした。受験料は放送大学の学生だと11000円割引になります。とてもお得です。試験対策としては「ゼロから作るDeep Learning」がコードレベルで非常に参考になりました。おすすめです。合格率が高めに出ていますが、認定講座を修了した人でないとそもそも受験資格がないためで、試験が簡単かといわれるとそうではないです。

そのE資格認定講座ですが、こちらはどれもそこそこ費用が掛かり、個人で申し込むのは苦しい価格帯です(最近は値下がりしているようですが)。私は統計検定・Python試験・G検定を突き付けて受かりそうな雰囲気を出し、会社に費用負担してもらいました。私が受けた講座(STANDARD社のもの)はそれなりに完成度が高く、実装課題もきっちりこなすとまあまあ負荷がかかりました。特に強化学習の実装がつらかったですが、これぞAIという感じで楽しかったです。

統計検定2級は思ったより難しく、それなりに対策をしないと普通に落ちそうでした。ただE資格の出題範囲である確率分布は完全に抑えており、回帰分析系の機械学習もカバーしているので、受ける意味はあったと思います。

逆にPythonエンジニア認定試験は比較的簡単で、出題元の書籍をきっちり読めば難しくありません。E資格のコード問題(とE資格認定講座の実装課題)で苦しまないためにも、早めにPythonは読み書きできるようになるのが吉です。

G検定は「AIシステムと人・社会との関係」の内容に加えて、時事問題的な部分の占める割合が大きく、対策がしにくい内容でした。とはいえ合格基準は割と緩いので、新しすぎる内容は頭に入っていなくても合格は望めると思います。

論文について

2年後に学会に論文を出すことを考えて、上記の科目と並行して卒業研究を履修することにしました。大学院時代に学位論文の一部を学会に出しており、今回も踏襲しようと思ったためです。未知の分野で誰の指導も受けずに徒手空拳でアウトプットを出すことは無謀なので、やり方としては良かったと思います。

3年次編入の場合、卒研計画書の提出期限が入学年の8月になり、入学後すぐに(卒研履修許可が下りる品質での)テーマ選定を行う必要に駆られます。私はAIがやりたいのにAIが何なのかよくわからない状態でテーマを選定することになり、悩みました。対策として既存のAI系の学術論文を結構な数乱読してみて、研究分野としての概観を掴み、自分ができそうなテーマを選びました。特に卒業研究を学会発表につなげようとすると、卒業研究の期間(実質半年)で現実的に実施可能かつ一定の学術的新規性があるテーマを選ぶ必要があり、匙加減が難しかったです。最終的にはソフトウェア工学に対する機械学習の応用というテーマで執筆しました。

(E資格とはいえ)試験に受かっただけの人と、たとえ1本でもAI領域で学術的な業績がある人はそこそこ印象が違う気がするので(気がするだけかもしれませんが)、大変でしたがやり切ってよかったと思っています。

総括

定義通りのAI人材になれたかというと何とも言えないので、いったんAI(が少し分かる)人材を名乗ろうと思います。結論として、AI(が少し分かる)人材になるために放送大学は有用です。ここで紹介した科目をこなせば、最新の機械学習・深層学習を取り巻く議論に十分についていけるようになります。

あと単純に放送大学の学生だと資格試験が軒並み学割で安くなります。万が一不合格になってもお財布へのダメージが軽減されるので精神衛生上ありがたかったです。

本記事がどなたかのご参考になれば嬉しく思います。あわよくばこの国のAI人材不足の解消に繋がれば、これ以上の喜びはありません。

この記事が気に入ったらサポートをしてみませんか?