見出し画像

非IT企業でAI開発プロジェクトを始めたら。 ~機械学習をどう学んだか編~

本記事は機械学習をどう学んだか by 日経 xTECH ビジネスAI② Advent Calendar 2019 、12/14の記事です。

突然上司に呼び出され、隣のチームへの異動を告げられて。

別のチームといえどほぼ同じような仕事をするんだろうと思ったら、
内容は、"AI開発"でした。

その時点でプログラミングの経験はほぼなく、理系卒ではあるもののITの知識はふつうよりちょっと疎いくらい。

それでもちょっとおもしろそうだなと思ってやってみたら、ほんとにおもしろくて、今、勢いあまってweb系企業でエンジニアをしています。

とはいえ、そのときのプロジェクトメンバーはベンダーさん除くとほぼひとりで、情報収集して、勉強して、モデルを使って分析して、考察をして、上司やベンダーさんと議論して、という形で、毎日とても必死でした。

最終的にプロジェクトの途中で転職のため抜けてしまうことになってしまったのですが、約1年半、非IT企業でほぼイチからAI開発プロジェクトを立ち上げる場面にいられたことは、自分の人生にとってとてもいい経験でした。


振り返るとたくさん話したいことは出てくるのですが、今回はアドベントカレンダーの趣旨である、「機械学習をどう学んだか」にフォーカスしてお話したいと思います。


ざっくりと勉強スタート時点のスキル


まず、勉強スタート時点でのわたしのスキルと環境についてまとめておきます。

・工学部修士卒(生物系)
・プログラミングは大学の授業でC++やJavaScriptを少し(理解はしていない)
・マクロ作成経験もなし(使ったことはある)
・Excelでグラフ作ったりはよくする
・数学レベルはふつう、統計学は大学の教養で少し(理解はしていない)
・工場つくったりする会社
・チームは上司とわたしの2名
・社内に機械学習、プログラミングの専門家はいない

今までコンピューターやプログラミングにはなんとなく苦手意識を感じていて、得意な人には敵わない、わたしには関係のない世界だと思っていました。
なので、異動の話はとてもびっくりした記憶があります。

大学の友人に聞くと、専門外からAIに関わる仕事にアサインされたり、会社で研修を受けている人が意外と多い気がします。

昨今のAI人材の不足を受けて、どの会社も自社内でのAI人材の育成に力を入れているのでしょうか。

AI開発プロジェクトで求められていたスキル


わたしが参画した時点で、上司とベンダー企業の間で分析課題は決まっており、プレPoCも終わっている状態でした。

プレPoCでいけそうだな、という感触を得た上で、社内からも分析に参加できる若手を、という場面での参画でした。

スクリーンショット 2019-12-14 18.44.01

AIの学習から予測までのプロセスは、大きく分けると、

①データの収集
②データの前処理
③モデリング
④予測

の4つに、分けられます。

この中の、モデリングから予測値を出すまではベンダー企業におまかせしていて、わたしの仕事は、主に必要なデータを収集して、データの前処理を行うこと、出てきた結果を実機の知識や経験をもとに解釈することでした。

また、半年後くらいからは、AIモデリングの部分のスクリプトをもらって、自分でもモデルの生成→予測を行うようになり、ベンダー企業と作業を分担して解析を行うようになりました。

その中で必要とされたスキルと使用したツールは次のようなものでした。

・実機データを見て、異常値や外れ値がないかチェックする
 →Excel、Python(グラフ化)、統計解析GUIソフト
・データの前処理(平均値化、フィルタリング、変数生成、データ分割 etc...)
 →VBA、Python、Jupyter Notebook
・クラウドサーバーでディープラーニングによる学習、予測の実行
 →Linuxコマンド(Tera Term)、Python、AIフレームワーク(商用)
・一連の作業のバッチ処理
 →シェルスクリプト

Excel以外のツールについては初めて使ったもので、プログラミングも初めてだったので、イチから勉強することになりました。

前置きが長くなりましたが、そろそろ、わたしがこのプロジェクトにおいてどのように機械学習を学んだかについてお話します。


学んだこと① Pythonの基本文法+α


PythonとAIの基本をセミナーで学ぶ

Pythonはデータ分析や機械学習の分野でメインで使われているプログラミング言語であり、これが読めないと前処理やモデリングのソースコードが読めないし、好きなようにカスタマイズできません。

そこで、会社がお金を出してくれて、Pythonと機械学習の初心者用セミナーを数日受講しました。

このとき、Pythonの基本的な文法(for文が書ける程度)、機械学習とは何なのかくらいまでは理解できました。

Pythonの基本文法をPyQで学ぶ

ただ、数日のセミナーだけでは身についた感覚がなかったので、自分でもPythonのオンライン学習サービス「PyQ」に登録し、並行してPythonの独学を始めました。

「未経験からのPython文法」というコースから始め、「実務で役立つPython」や「機械学習」のコースから少しずつつまみ食いするような形で、帰宅後や休日にぼちぼちと続けていました。

PyQはそこから年末くらいまでだらだらと続けました。月額課金なので月2980円×9か月で約3万円弱と決して安くない金額になってしまいました。

ほぼ触らない月もあったので今思えばとてももったいなかったです。

教材自体はとても充実していて、環境構築なしにブラウザ上でコードを写経しながらPythonを学べるのでよかったです。

今もしやりなおせるなら、1~3か月くらいで、必要なコースを集中してやり切った方がコスパがよかったなと思います。

業務の中でPythonやVBA、シェルスクリプトなど、使いながら覚える。わからないときはとにかくググる。

ついに、実際のデータを使った分析が始まりました。

といいつつも、データベースの操作といった高尚なことではなく、ExcelやCSVのデータを加工したり、グラフを作ったりして可視化する程度ではありましたが、あまりにもファイルが大きくて数も多いので、VBAやPythonで動くバッチ処理プログラムを書くようになりました。

(今でもそうですが)書いては試し、エラーが出たり思ったようにできず、原因を探して修正して、を延々繰り返していて、はじめのうちは行一行挿入するのに数日かかっていました。

マクロの得意な先輩に聞いたりして書き方を覚えていき、ゆっくりですが自分のしたい操作ができるようになっていきました。

このとき、VBAやPythonについて体系的に学んだというよりは、作ってみて足りないところはひたすらググってという形だったのでかなり自己流の書き方をしていたと思います。

しかし、AIのモデリングや機械学習用の前処理のスクリプトについては、ベンダー企業側で土台になるものをつくっていただいていたので、みようみまねでなんとかAIフレームワークを使ってモデリングまでできるようになりました。

すでにできあがったもの、かつ業務で実際に使われているものを参考にできたことは、教材で学ぶよりもやりたいことが手っ取り早く実現できる、という意味でとてもよかったです。いつ使うかわからない知識を詰め込むやり方は、モチベーション続かないし。。。

これまでセミナーやPyQで覚えた知識が使ううちに身についてきて、書き方を知らない処理についてもあたりをつけてググることができるようになりました。

Pythonだけでなく、これ自動化したいな、と思ったら調べてみて、シェルスクリプト使ってみたり、Pythonインストールできない端末ではさくっとbashファイル書いたり。

プログラミングって勉強する壁をちょっと超えたら、こんなに便利に使えるんだなぁと感動しました。

 ◇

学んだこと② AI・機械学習の基本知識と最新情報


JDLA G検定(ジェネラリスト検定)受検を通してディープラーニングの基本を学ぶ

世間のAIへの関心が高まってきた頃で、日本ディープラーニング協会(JDLA)が、G検定(ジェネラリスト検定)という検定を実施し始めました。

JDLAの資格はG検定とE資格に分かれており、それぞれ、事業活用する人材(ジェネラリスト)と、ディープラーニングを実装する人材(エンジニア)を育成することを目的としています。

一度基礎知識を体系的に身に着けたいと思い、G検定を受検することにしました。

勉強の中で、特にためになったと思う書籍はこちら↓の2冊です。


人工知能は人間を超えるか / 松尾豊

人工知能プログラミングのための数学がわかる本 / 石川聡彦

1冊目の、「人工知能は人間を超えるか」は、ディープラーニング界でとても有名な東京大学松尾先生の著書です。

ディープラーニングがどのように生まれ、技術が磨かれていったかについて、アルゴリズムについても簡単に触れながらさらっと読める本です。

2冊目の「人工知能プログラミングのための数学がわかる本」は、文字通りAIモデルの作成やアルゴリズムの理解に必要な基礎的な数学の知識をざっとおさらいするための本です。

微分や線形代数、確率・統計など、高校や大学で習った内容の数学を一通り思い出せます。
さらに、実践編として、回帰モデルや自然言語処理、画像認識についてもわかりやすく解説されており、スムーズに理解できました。

誤差逆伝播法や損失関数など、専門用語や数学にギクッとした方は、こちらの本が読みやすくておすすめです。

G検定を通して、基本的なアルゴリズムを始め、社会においてどのように使われるのかなど、一般常識として知っておいた方がいいであろう知識がある程度は身についたと思います。

当時受験料が一般 12,960円 (税込) 学生 5,400円 (税込)と少し高いのがネックですが、目標がある方がやる気がでる、知識に自信をつけたい、という方にはおすすめします。

セミナーや展示会があれば参加して、最新情報や企業の動向を知る

AIやIoTと名のつくセミナーや展示会は、進んで参加しました。

特に展示会は、最近の技術のトレンドがわかるいい機会でした。

しかし、自分のいた業界ではAI導入事例が少なく、あまり参考になるような情報は得られなかった反面、ほぼ事例のない分野に挑戦できていることはある意味幸運だといえるかもしれません。

学んだこと③ 大学で学んだ確率・統計をやり直し


統計検定2級を取得

機械学習の中にも多くの手法があり、ひとつの手法の中にも多くのパラメータを持っています。

そういったアルゴリズムの部分まで理解して、解釈やモデルの最適化に活かしたいと考えて、避けては通れない数学について勉強をし直しました。

大学では統計学の授業はあったものの、ほとんど理解できていなかったので、目標があったほうがいいだろうと思って統計検定2級を受験することにしました。

その際にお世話になった書籍はこちらです。

完全独習 統計学入門 / 小島寛之

統計学入門 / 東京大学教養学部統計学教室 編

1冊目は入門書として、用語や概念について理解するために役立ちました。

その後公式の過去問をする中で、解説が不十分な部分について、2冊めを辞書的にひいて、理解を深めました。

勉強期間は2ヶ月ほどあったものの思ったように進まず、直前にかなり詰め込んだ形でしたが、なんとか合格することができました。

ディープラーニングの勉強のためと思って始めた統計学の勉強でしたが、その後データ分析を行う場面でも統計的な考え方が求められたので、ここで勉強しておいてよかったなと思います。

学んだこと④ データサイエンティストの基本スキル


社内研修を通して、チームでのデータ分析と発表を経験する。データ分析や機械学習を勉強する目的を認識する。

最後に、機械学習の話から少し逸れますが、社内でのデータサイエンティスト育成研修に参加し、データサイエンティストのスキルについて学びました。

研修の内容は、自社の実際の課題に対して、実データを使って分析し、最後はチームをつくって発表するものでした。

分析にあたり、まずその現場のビジネスの概要の説明を受け、実際に現場を見学させてもらったり質問をして、課題の背景を理解するところから始まりました。

その後は、外部講師から統計分析の手法や、論理的思考法、フレームワークなどの講義を受けつつ、実データの分析と課題設定、解決策の提案内容についてチームでディスカッションを重ねました。


この過程で、何度も行き詰まり、データ分析についての本をたくさん読みました。

データ分析は、一見客観的に結果を出しているように見えて、人によって相手によって、見せ方によって、結果はいくらでも変えられてしまいます。

本を読んでも読んでも特に決まった型はなく、闇雲に分析しても、どんなに時間をかけても、納得のいく答えが見つからなくてとても苦しみました。

ひたすら実践を繰り返して、少しずつですが、考えるための枠や順番、軸を固めていきました。

その中でこちらの本↓は、様々なフレームワークや用語をわかりやすく説明してくれていて、教科書的にいつも傍らに置いていました。

14のフレームワークで考えるデータ分析の教科書 / 髙橋 威知郎

苦しみ抜いた結果、できる限り客観的に判断して(そのつもりで)導き出した課題設定が、現場の方に非常に共感していただけたことはとても嬉しかったです。

解決策の具体的な提案までは議論を詰められず、尻切れトンボな発表にはなってしまいましたが、苦しかったけどデータ分析について真剣に考える貴重な機会でした。

この研修を通して、データ分析を行う上でだいじなことは、「解決したい課題はなにか」であることを見失わないことだ、と考えるようになりました。

使う手法が、統計分析でも、決定木でも、ディープラーニングでも、お客様やエンドユーザーには関係ありません。

どんなに技術的に優れていても、お客様の本当の課題に寄り添えていない提案は胸を打たない。ビジネスは成り立たない。


機械学習を学ぶことの先には、必ず、それを活かして何をするか?を考えるときがくる。

だから、知識をつけたりプログラムを書けるようになるだけではあなくて、それをどう事業に活かすか、どんないいことがあるか、ということまで考えられるエンジニアになりたいなぁと思っています。

まとめ


夢中になって書いていたらとても長くなってしまいました。

この記事の内容、機械学習をどう学んだか、についてまとめます。

学んだこと① Pythonの基本文法+α
・PythonとAIの基本をセミナーで学ぶ
・Pythonの基本文法をPyQで学ぶ
・業務の中でPythonやVBA、シェルスクリプトなど、使いながら覚える。わからないときはとにかくググる。
学んだこと② AI・機械学習の基本知識と最新情報
・JDLA G検定(ジェネラリスト検定)受検を通してディープラーニングの基本を学ぶ
・セミナーや展示会があれば参加して、最新情報や企業の動向を知る
学んだこと③ 大学で学んだ確率・統計をやり直し
・統計検定2級を取得
学んだこと④ データサイエンティストの基本スキル
・社内研修を通して、チームでのデータ分析と発表を経験する。データ分析や機械学習を勉強する目的を認識する。


そして、一番伝えたかったことは、機械学習を勉強する上でも使う上でも、だいじなことは「解決したい課題はなにか」について考え、議論することだった、ということです。

勉強を始めたころの自分は、AIという最先端の技術について学ぶことに少しうかれていたような気がします。

ただ知っているだけでなく、その技術を本当に社会において意味のあるものにできる、価値をつけられるエンジニアになりたい、と、思えるようになったことが一番の収穫だったと感じています。

最後まで読んでいただきありがとうございました!

クリスマスまであと10日あまりになりましたね。
このあとの 機械学習をどう学んだか by 日経 xTECH ビジネスAI② Advent Calendar 2019 についても更新を楽しみにしています!

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