【初心者必見!】機械学習が学べるサイトや言語の種類を解説!

今回は、毎日「機械学習」を学習していても、よくわからない単語の知識が増えるだけで、もうすぐ挫折しそうと考えているあなたのために用意しました。

この記事では、

「機械学習について詳しく知りたい」
「機械学習ができるプログラミング言語を知りたい」
「機械学習のアルゴリズムを解説しているおすすめのサイトを知りたい」

などについて解説いたします。

機械学習も、根本は普通のプログラムと同じです。この記事を読めば、機械学習をあなたのパソコンで実行するための最低限の知識がわかります。

機械学習は現時点でも研究が進んでいるほど、最先端の技術です。機械学習のすべてを一朝一夕に理解するのは困難です。

そこで、今回はこれから機械学習を勉強する方に向けて、おすすめのサイトを紹介します。

【こんな方に向けて書きました】
・人工知能の開発に携わりたい
・機械学習のおすすめ学習方法を知りたい
・機械学習に関する情報をいち早く集めたい

機械学習とは

機械学習は「人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術・手法のこと」と言われます。これですべて分かる方もいらっしゃるかもしれませんが、ピンと来ない方もいらっしゃると思います。

一口に「機械学習」と言われますが、実はいくつかの分類があり、それぞれに特徴があります。

そういった分類をすべてまとめて説明しようとすると上のようにピンと来ない言葉になってしまうのです。

まずは、機械学習への理解を進めるために、まずは代表的な3つを紹介しましょう。

機械学習の3つの分類

1つ目の機械学習は、「与えられた膨大な過去データを学習して、新しいデータの意味を発見すること」です。これは「教師あり学習」と呼ばれます。「意味を発見すること」と曖昧に書いているのは理由がありますが、それは後ほど説明しましょう。

2つ目は、「与えられた膨大なデータから規則性を発見すること」(教師なし学習)、3つ目は「適当な行動から報酬を計算することで、最も効率が良い行動を発見すること」(強化学習)です。

この記事では、分かりやすい例として1つ目の「教師あり学習」を取り上げます。

機械学習の分類については、以下の記事でも詳しく説明していますので、「教師あり学習」以外の用途について気になる方は参考にしてください。

教師あり学習を理解しよう!

「教師あり学習」をざっくり説明しましょう。

「教師あり学習」では、学習用プログラムで膨大な過去データを処理したあとで、推測用プログラムを使って新たなデータの意味を推測するという流れになります。

したがって、「教師あり学習」を行う際に必要なものは、以下の3つです。

  • 「写真Aは、リンゴの写真」「写真Bは、バナナの写真」のようにデータと意味を「人が」関連付けた「膨大な過去データ」
  • 膨大な過去データを使って機械学習のモデルを訓練する「学習用プログラム」
  • 新たなデータ(ここの例では写真)のラベルなどを推論する「推測用プログラム」

機械学習ができるプログラミング言語とは?

機械学習では、2つのプログラムを書く必要があることがわかったところで、次は、どのプログラミング言語を使用すればよいか検討しましょう。

まずは、プログラミング言語を選ぶ助けになるように、機械学習の別の側面を紹介します。

機械学習の本質は、ただの数値計算です。

計算量は膨大になりますが、機械に魔法のような頭脳を埋め込んでどうにかするという代物ではありません。これがホントのところです。

言いかえると、数値計算さえできるプログラミング言語であれば、何でも使用できることになります。

それでもPythonなど、一定のプログラミング言語が紹介されることが多いのはなぜでしょうか。

実はよく紹介されるプログラミング言語では、機械学習に必要なプログラムが、誰かによって準備されていて、簡単にインストールできるようになっているためです。

では、機械学習に使えるとして、よく紹介されるプログラミング言語を3つ紹介しましょう。

Python

Pythonはオブジェクト指向のスクリプト言語です。コンパイル不要で実行できることが特徴です。
見た目では、ブロックをタブ文字やスペースによるインデントで記述することが特徴的ですね。

Pythonを使用して機械学習を実装する場合は、以下のパッケージを別途インストールする必要があります。

行列計算などや、機械学習で使用する代表的なアルゴリズムは、これらのパッケージに任せられます。

  • Numpy
  • Pandas
  • TensorFlow
  • Keras
  • Scikit-learn
  • Chainer
  • Theano

Java

Javaもオブジェクト指向の言語ですが、実行する前にコンパイルが必要です。

見た目では、ブロックを{と}(中括弧、波括弧)を使って記述すること、それからほとんどの行の最後に;(セミコロン)が必要なことが特徴的ですね。

Javaを使用して機械学習を実装する場合は、以下のライブラリを別途インストールする必要があります。

行列計算などや、機械学習で使用する代表的なアルゴリズムは、これらのライブラリに任せられます。

  • Deeplearning4j
  • TensorFlow
  • Encog

R

Rは、統計解析向けに開発されたプログラミング言語です。機械学習で使用する計算方法は、統計学で使用する計算方法に非常に近く、そのため統計解析向けの機能があらかじめ用意されているRは、機械学習向けと言えるのです。見た目では、「<-」や「->」を使用して、方向付きの代入を表現するところが面白いですね。

Rを使用して機械学習を実装する場合は、以下のパッケージを別途インストールする必要があります。

  • caret
  • TensorFlow

機械学習のアルゴリズムを解説しているおすすめサイト

「教師あり学習」では、「与えられた膨大な過去データを分析して、新しいデータの意味を発見すること」が目的になりますが、そのために使用するアルゴリズムも様々です。

名前だけですが、少しあげてみましょう。

  • サポートベクターマシン(Support Vector Machine、SVM)
  • 単純パーセプトロン(Simple Perceptron)
  • ニューラルネットワーク(Neural Network、NN)、深層学習(Deep Learning)
  • 決定木(Decision Tree:DT)
  • ナイーブベイズ(Naive Bayes)

このようなアルゴリズムの中から、目的にあったモノを選ぶ必要があります。

ところで「教師あり学習」の目的を覚えていますか。

「教師あり学習」では「与えられた膨大な過去データを分析して、新しいデータの意味を発見すること」を目的としていましたね。

目的を達成する為には、アルゴリズムの仕組みを理解して、どのアルゴリズムを使うと、新しいデータの意味を(適切に)発見できるかを考えて、アルゴリズムを選ぶ必要があります。

アルゴリズムの特徴をとらえ、適切なアルゴリズムを選択できれば、作成したプログラムが「新しいデータの意味を発見」できるでしょう。

(教師あり学習にこだわらず)機械学習のアルゴリズムを紹介している以下のサイトをオススメします!

機械学習を始めたくなる!機械学習アルゴリズム解説スライドまとめ

001-2
出典:https://freelance.levtech.jp/guide/detail/41/

機械学習のアルゴリズムを紹介しているスライドをピックアップしています。

各アルゴリズムの説明を書いているのはすべて別の方ですので、記載の統一感はありません。

それでも、それぞれの特徴を丁寧に説明していあるスライドが多いので、参考になると思います。

Microsoft Azure Machine Learning のアルゴリズムの選択方法

002-2
出典:https://docs.microsoft.com/ja-jp/azure/machine-learning/studio/algorithm-choice

Microsoftが提供するAzure Machine Learning Studioは、モジュールをドラッグアンドドロップしたり、接続したりして、機械学習を利用できるサービスです。

Azure Machine Learningのドキュメントの中にアルゴリズムを紹介しているページがあります。

多くのアルゴリズムが紹介されているため、非常に参考になります!

機械学習アルゴリズム選択ガイド

003-2
出典:http://www.sascom.jp/blog/2017/11/21/machine-learning-algorithm-use/

2択の質問に答えていくことで、「最初に試すべきアルゴリズム」を紹介してくれるチートシートがあります。

このチートシートを参照しながら、各アルゴリズムを体系的に理解できるでしょう。

まとめ

機械学習に挑戦することになったものの、どこから手を付けてよいかわからなかった方に向けて、使用するプログラミング言語と、使用するアルゴリズムを選ぶための最低限の情報を紹介しました。

この記事が機械学習のプログラムを作成するスタート地点になることを願っています。

機械学習については私も勉強中です。お互いに頑張りましょう!

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

侍テック編集部

侍テック編集部

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説