DX(デジタルトランスフォーメーション)

Pythonでの機械学習を行いたい!学ぶべき知識まとめ【入門編】

Pythonでの機械学習を行いたい!学ぶべき知識まとめ【入門編】

最近では様々なデバイスやシステムにAI(人工知能)が利用され、私たちの生活には欠かせない技術になりつつありますよね。また、昨今、AI(人工知能)に興味を持ち、勉強してみたいと考えている方も増えています。一方で、AI(人工知能)を学習するにはPythonがよく使われているとは聞きますが、何をどのように学べばいいのかが分からない方も少なくないのではないでしょうか。

Pythonで機械学習を行うには、まずPythonの基礎的な知識や、機械学習とはなんなのか?等の基本的な知識が必要です。この記事では、そんな知識を身につけるための勉強法もお伝えしています。ぜひ、最後まで読んでいただき、Pythonでの機械学習を入門から行うために最初に学ぶべきことをおさえきましょう。

そこで今回は、Pythonでの機械学習を入門から行うために最初に学ぶべきことについてお伝えします。

機械学習とは

機械学習のイメージ
ニュースを見るとAI(人工知能)や機械学習、ディープラーニングというワードがよく出てきますよね。しかし、それらの言葉がどのような違いがあるのか分かりづらいですよね。どのような関係性があるのでしょうか。

結論からお伝えしますと、AI(人工知能)の一部として機械学習という分野が存在し、更に機械学習の中にディープラーニングという分野が存在します。

AI(人工知能)は厳密な定義は存在しないのですが、一般的にはAI(人工知能)は、コンピューターを用いて数式を計算させた知能のことを指します。

機械学習は、過去のデータを学習しデータ間の関係性や法則を見つける手法です。機械学習をやるためには、人間が分析させるデータのどの部分に着目してほしいのかを明確にし、機械に学習させる必要があります。機械学習は過去のデータを学習して予測した結果をアウトプットし、アウトプットを評価してフィードバックすることで最適な答えを導くようになります。

対して、機械学習を行わないロボットは予め人間がプログラムに記述した内容しかアウトプットを行わないため、機械が自ら学習して賢くなりません。機械が勝手に賢くなってくれるなら、機械学習を行わないロボットよりも、機械学習があるAI(人工知能)を使いたくなりますよね。

ディープラーニングは、機械学習の中でも人間の神経細胞の仕組みを模倣したニューラルネットワークというシステムを複数用いることで、データの分析を行う手法です。ディープラーニングを使うことで、データの着目すべき部分(特徴量)をシステムが自動で抽出できしてくれます。

機械学習の種類とは

機械学習の種類のイメージ
機械学習、ないしディープラーニングの学習方法の種類には大きく以下の3つがあります。

  • 教師あり学習
  • 教師なし学習
  • 強化学習

教師あり学習は、人が事前にラベル付けをしてデータの正解を機械に学習させる方法です。その正解データの内容に基づき、新しい未知のデータに対しての予測を行います。教師あり学習の手法として分類、回帰の2つが代表的です。例えば過去のイベント来場者のデータを学習し、次回のイベント来場者の予測を行う等には、回帰を使います。

教師なし学習は、教師あり学習とは異なり、事前にラベル付けをする必要はありません。教師なし学習では、データが持つ特徴や分布などを学習し、データの規則性や類似度に基づいてデータの分類を行います。教師なし学習の手法として、クラスタリングというデータのグループを分ける手法がよく使われます。過去の購入履歴から顧客をいくつかのグループに分け、それぞれのグループに対して施策を打つ時に有効です。

強化学習は、システム自身が試行錯誤を繰り返しながらより最適な行動を見つける学習の方法です。システムがとある行動をした際に、その行動の結果に応じて報酬を与えます。それを何度も繰り返して、一番報酬を多く獲得できる行動をシステムが学習します。強化学習はディープラーニングと組み合わせることで技術的に大きな進歩を遂げ、自動運転やロボットの自動制御などに活用されるようになりました。

Pythonが機械学習に適している理由

理由のイメージ

これまでは機械学習について概要をお伝えしましたが、ここからは機械学習のプログラミングについてお伝えします。

機械学習のプログラムを書く場合はPythonで書くことが多いです。ここでは、その理由を2つご説明しましょう。

まず1つ目の理由は、Pythonは他の言語よりもシンプルにコードを記述でき、他の人が読んでもわかりやすい点です。そのため短時間でコードを書くことができ、読んでもわかりやすいので、すぐにコードの修正できます。これだけでも、Pythonが便利なプログラム言語な感じがしてきますよね。実際に、Pythonで機械学習を入門で学ぶハードルも下がり、多くの人が機械学習を学び始めています。

そして2つ目の理由は、Pythonは科学技術計算を行うためのライブラリが豊富である点です。AI(人工知能)は微分や積分、行列などを用いて複雑な計算式を解くことで知能を取得しているものが多いです。そのような科学技術の計算を行うライブラリが豊富なため、研究者が日々色々な研究を手軽に試してみるには非常に便利に違いありません。

もちろん、科学技術や数式などと聞くとAI(人工知能)の学習は難易度がとても高そうに思えてしまいますよね。しかし科学計算の数式を理解しなくても使えるようなライブラリも用意され、実際にプロダクトを作成する場合にも使われています。それでは、ここからは、どのようなライブラリが使われることが多いかについてお伝えします。

初心者でも使いやすいPythonの機械学習ライブラリ

ライブラリのイメージ
初心者でも使いやすいPythonの機械学習ライブラリとして以下の3つがあります。なお、ここでご紹介するライブラリはオープンソースのため、無料で使えます。

  • scikit-learn
  • Pytorch
  • TensorFlow

scikit-learn(サイキット・ラーン)は複数の分類、回帰、クラスタリングのアルゴリズムをシンプルにプログラミングできるようなモジュールが用意され、ディープラーニング以外の機械学習のアルゴリズムのソースコード記述をする際に便利なライブラリです。公式サイトには学習に用いるデータによってどのアルゴリズムを用いればよいかを記述したscikit-learn algorithm cheat-sheetという図が用意され、またそれぞれのアルゴリズムのサンプルコードも紹介されているため、これからPythonで機械学習を始めてみようと考えている入門者にも学びやすいでしょう。

Pytorch(パイトーチ)はfacebookのAI研究所が提供しているライブラリ。もともとは、tensoflowの方が人気でよく使われていましたが、近年Pytorchが使われる機会が増えています。Pytorchにはdefined by runというフレームワークが用いられ、データ構造によってモデルを変えるのが容易というメリットがあります。例えば文章を学習させる場合を考えてみましょう。文章は長かったり短かったり長さは一定ではないですよね。その場合、データ構造が変わるのですが、defined by runというフレームワークを用いることでデータ構造によってモデルを簡単に変えられます。

TensorFlow(テンソルフロー)はGoogleが提供しているライブラリ。TensorFlowは単体であまり使わずkerasというライブラリと合わせて使うことで、より簡易的にディープラーニングを記載できるようになりました。一方で、データ構造が変わるデータを用いる場合には使いづらいというデメリットもあったため、主に画像などのデータサイズを予め固定できるデータを用いる際によく使われていました。

2019年からはTensorFlow 2系が発表され、kerasをTensoFlow内に取り込んだり、Pytorchで用いられているdefined by runというフレームワークを用いてソースコードを記述できるようになりました。そのため、画像などのデータ構造が変わらないモデルの作成だけでなく、自然言語処理などの分野でも最近は使われることが増えています。

Pytorch、TensorFlowともに主にディープラーニングで使われるライブラリですが、ネットにはPytorchやTensorFlowの使い方を優しく記載してくれているサイトも数多く存在し、Pythonで機械学習の入門時に大きな助けになるに違いありません。

Python・機械学習を学ぶのにおすすめの本

ほんのイメージ
Pythonや機械学習を学ぶためにおすすめな本を紹介します。

Pythonを初めて学習する方にご紹介するのは「詳細! Python 3 入門ノート」です。この本は、Pythonについて非常にわかりやすく説明され、Pythonの機械学習の入門のために最適な1冊です。データをグラフ描画する方法など、機械学習を行うにあたり必要になってくるスキルも習得できます。

次にご紹介するのは「scikit-learn、Keras、TensorFlowによる実践機械学習 第2版」です。機械学習の理論とプログラムの実装方法を体系的に身につけられるでしょう。機械学習の中でもシンプルな決定木というアルゴリズムの実装から始まり、最終的にはCNNやRNNというディープラーニングを使ったアルゴリズムを学べます。また、この本はTensorFlow 2系にも準拠しPythonの機械学習の入門には良い1冊です。

Python・機械学習を学ぶのにおすすめのサイト

サイトのイメージ
Pythonをネットで学習するのにおすすめのサイトは,オンラインプログラミング学習サービスProgateです。ProgateにはPythonを学習するためのコースがあり、このコースを受講することでこれからPythonの知識をより深めるための一番基本的なスキルを身につけることができます。

Pythonを学ぶコースはPython I〜Vの5コースで構成され、関数やクラス、ライブラリの使い方について学習できます。そのため、機械学習の知識を学ぶコースではありませんが、Pythonの入門用にまず受講することをおすすめします。

機械学習を学びたい方におすすめするサイトは、筑波大学の授業動画(OCW)。こちらは機械学習をより理論的に理解するための講義です。

OCWは全20回で、1回あたり約1時間の講義動画を無料で見ることができます。この講義を受けることで、機械学習がどのような計算や理論で成り立っているのかを知ることができます。微分や線形代数などの数学の知識が必要になるため、少し難易度は高く感じるかもしれませんが、その分かなりの知識を身につけられるでしょう。

Pythonで機械学習を行う上での注意点

注意点のイメージ
Pythonで機械学習を入門する時の注意点として、ネットに載っているコードをそのまま自分の実行環境に移してもプログラムエラーで動かないことがある点が挙げられます。学習を始めたばかりだと、エラーが出てしまうとどうやって解決したら良いのか分からないということはよくありますよね。そんな時は、

  • 利用しているライブラリのバージョンをネットに載っているコードが動作した環境と揃える
  • 同じエラーで詰まっている人は結構多いので、エラーの内容をネットで調べる

の2点を注意してみましょう。

機械学習の勉強をするためにgithubなどからソースコードをpullして自分の環境で動かそうとしても、プログラムが実行エラーになることがあります。ライブラリのバージョンの違いが原因でプログラムが動かないことがあるため、どのバージョンのライブラリを使っているのかは注意が必要です。

requirements.txtというソースコードを動かす際に必要なライブラリと、そのライブラリのバージョンが記載されてたテキストファイルを用意されていることもよくありますので、requirements.txtに記載された内容に従ってインストールを行いましょう。

また、OSによってもうまく動作しない場合があります。基本的に研究者はLinuxの環境で実験をしていることが多く、論文とともに公開しているソースコードもLinuxの環境で動かしていたソースコードが多いです。

Linuxでは問題なくインストールできたライブラリもWindowsだとうまくインストールできないこともあります。その場合は、インストールできないライブラリのgithubのissueのページで同じような事象が報告されていないか、どのように解決すれば良いのか書かれていないかを調べましょう。また、他の技術ブログにて解決方法が書いていることもよくあるため、エラー内容をネットで検索してみるのも解決の一助になることがあるでしょう。

まとめ
さて、今回はPythonでの機械学習の入門時に学ぶべきことについてお伝えしました。機械学習はAI(人工知能)の分野の1つで、教師あり学習・教師なし学習・強化学習の3つの学習方法があります。

Pythonは可読性が高くシンプルに記載できるため、AI(人工知能)の研究者の間でもよく使われており、便利なプログラミング言語です。また、Pythonにはscikit-learn、Pytorch、TensorFlowなどの簡単に機械学習プログラムを作成できる便利なライブラリも用意されています。

Pythonを初めて学習される方は、progateの受講や『詳細! Python 3 入門ノート』でPythonの基礎を身に着けると効率的に学習が可能です。機械学習は『scikit-learn、Keras、TensorFlowによる実践機械学習 第2版』を読んで実装したり、筑波大学の機械学習の講義動画を見ることで理解を深めることができます。

日々進歩している分野なので最新技術をキャッチアップするのが大変な分野ですが、身につければ身につけるほど興味が湧いてくるに違いありません。また、まだまだ日本でのAI(人工知能)技術者は少なく、活躍できる場が多く存在します。これを機に機械学習について学習しましょう。

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