テクノロジー

機械学習を始めるにはフレームワークTensorflowを学ぼう!【入門編】

プログラミングのイメージ

最近のトピックでは、AI(人工知能)に関するニュースをよくみますよね。

なぜここまでAI(人工知能)の開発やビジネス利用が熱くなっているのかというと、一つの要因としてAI(人工知能)の中の一つの技術である機械学習のフレームワークがここ最近で増えていることが挙げられます。

フレームワークとは、頭のいい人が作ったプログラムを一つにまとめて他の開発者が容易に開発できるようにしたもので、その中でも機械学習関連の有名なフレームワークとしてTensorflowというものがあります。

そこで、この記事では入門として、まずTensorflowというものがいったいどんなものなのかを解説し、そしてTensorflowに何ができて実際どんなシステムやアプリに使われているのかも入門者向けに解説しましょう。

オープンソースとは

オープンなイメージ

Tensorflowとは、2015年にGoogleが開発しオープンソースで公開している、機械学習に用いるためのソフトウェアライブラリです。機械学習の入門者から上級者まで幅広く使うことができます。

そしてこのオープンソース (英: open source) とは、言葉通りのソースコードへのアクセスが開かれている(ソースコードが公開されている)ことを意味するのではなく、ソースコードを商用、非商用の目的を問わず利用、修正、頒布することを許し、それを利用する個人や団体の努力や利益を遮ることがないソフトウェア開発の手法。

逆にオープンソースでないものは、商用利用したり、修正配布したりするにはライセンスの取得が必要なものもあります。

では、オープンソースのメリットとはなんでしょう。

このオープンソースのメリットは、開発者が自由に当該フレームワークを使用することができるので、開発が進みやすく技術の発展に寄与すること。開発者が何かしらの新たなシステムやアプリを開発しようとするときに、完全にオリジナルというものは少なく、他から拾ってきた情報を活用することが多いからです。

この手法は日進月歩のIT業界では重要視されていて、よくIT業界でよく言われているフレーズとして、「車輪の再発明はするな」というものがあります。

この言葉の意味は「すでに誰かが発明したものを自ら苦労して生み出すな」ということで、入門者によくありがちなのが、すでに存在していて、調べたり、他人に聞いたりすれば容易にわかる知識を、時間をかけて自分で生み出したと思い込み、結局蓋を開けてみればただの時間の無駄だったということがあります。

ということで、ここまでで閉鎖的なプログラムでなくフリーで皆に開かれているプログラムのメリットがお分かりいただけたでしょう。

Tensorflowとは何か

Tensorflowのイメージ

さて、オープンソースの重要性が分かったところで、Tensorflowの入門者向けの説明に戻ります。

Tensorflowは元々、Google内部での使用のためにGoogle BrAIn(英語版)チームによって開発されました。開発された目的は、人間が用いる学習や論理的思考と似たように、パターンや相関を検出し解釈するニューラルネットワークを構築、訓練することができるシステムの要求を満たすため。

利用は簡単で、公式サイトにもサンプルプログラムが載っていますから、機械学習始めたての入門者でも簡単な機械学習ならすぐに行うことができます。

実は機械学習の基本的な仕組み自体は、AI(人工知能)が空想物語ではなく実際に使われ始めた20世紀中旬には成立していましたが、ただ、技術上の制約で実務の使用に耐えうる状態ではありませんでした。しかし、2010年代に登場したディープラーニングが機械学習を実務に耐えうるものにした要因の一つになったのです。

機械学習の過程には大まかに分けて基となるデータの収集、モデルの構築、学習、学習結果のアウトプットに分かれていますが、Tensorflowを使えばデータの収集だけすればあとの工程の基本的なコードを書くだけで機械学習を実行できます。

やはりTensorflowが入門者にも優しいですよね。

Tensorflowを使ってできること

プログラミングするイメージ

それではTesorFlowを使ってできることをお話しましょう。

TesorFlowを使ってできる有名なこととして、手書き文字認識が挙げられます。この手書き文字認識はサンプルのMNISTというデータセットも用意されているため、TesorFlowを使って入門者でも手間をかけずに機械学習をすることができるのです。

ただ、用意されたデータセットを用意された手順通りでやるだけでは自分でやっている実感が持てませんよね。

そこで、Windows標準のペイントという大抵のPCに最初から付随している絵が描けるアプリを使って手書き文字を描き、それをテストデータとしてモデルに入力して、手書き文字認識をさせてみましょう。

Tensorflowの入門としては、ここまでできれば機械学習をした実感が持てるのではないでしょうか。あとはTensorflowの公式ホームページの入門者向けのドキュメントを確認していろいろ動作の確認をしてみるのも良いかもしれません。

以上からTensorflowについて簡潔にまとめると、Tensorflowを使って入門者でもできることは主に画像認識です。

Tensorflowの活用例

きゅうりのイメージ

Tensorflowは決して入門者のみを対象としたライブラリということではなく、入門者から上級者まで幅広く活用され、現にTensorflowを開発したGoogleでも、サービスの研究と生産に使用しています。

例えば、キュウリの選別(選果)作業の自動化。

これは、パンなど工場で画一的に作られた製品はパート労働者でも傷や不具合が比較的簡単に見分けられますが、きゅうりは自然に育った野菜のため、パート労働者にすぐ任せられるような仕事ではなく、会得するには数ヶ月かかると言われています。

そこで、Tensorflowを使った画像識別をしてみました。

ただ、学習用画像としてキュウリの画像7,000枚を使って過学習が発生し、新たなキュウリの画像では正解率が70%程度に落ちる事が課題とされています。ですから量だけではなく、ある程度質も兼ね備えていなければ良い学習ができません。

そのため現在の機械学習エンジニアのほとんどの作業が良質なデータ集めと言われています。

ただ、キュウリの選別作業のように農家のおばちゃんの長年のノウハウでしかできなかったことが、自動化されその負担が軽減される方向に向かっていくのはとても良いことですよね。これから技術が進歩していけば、ますます利便性は高まっていくでしょう。

 

プログラミングをするイメージ

ここまでtensorflowとは何かという入門編から、どういう用途で使われているかまで解説してきました。

機械学習関連のライブラリにはtensorflow以外にも多くあり、実務上ではいくつものライブラリを組み合わせながら開発を進めることになります。ですから開発を進めるうえで、プログラミング言語としてはPythonがオススメです。

それはなぜかというと、Pythonはライブラリ活用を前提として作られた言語であり、機械学習関連のライブラリが豊富だから。

そしてPythonの基礎をオンライン学習サイト等で学んだらさっそくググったり本を参照したりしながら実際に開発を進めていきます。

入門者がプログラミングを上達させるためにはやはり実際にコードを書いてみることがベターだからです。ですから、この記事を読み終わったらさっそく本を片手にコードを書いて手を動かしてみましょう。

コメントをどうぞ

トップへ戻る
タイトルとURLをコピーしました