意外な組み合わせ!?
今日は、前回に引き続き、
機械学習に使われているプログラミング言語についてです。
今回は、ちょっと違った角度から、
- こんな場面で実は結構使われている
- この領域ではPythonよりも広く使われている
ということがある4つの言語について紹介します。
機械学習は、広く私たちの生活に関係してきていて、
プログラミング言語×機械学習
で考えると、色々な使用例が見つかります。
- おお、このプログラミング言語も機械学習に使われることがあるのか
- 実は気になっていたプログラミング言語だった、機械学習に使ってみよう
など、何かのきっかけになるかもしれません。
今日の4言語は、
- MATLAB (Octave)
- C++
- JavaScript
- Go
です。
MATLAB (Octave)
1つ目は
です。
MATLABは、MathWorks社が開発している数値解析ソフトウェアで、そこで使用するプログラミング言語のことも指します。
MATLABは主に数値計算やデータの可視化に使われます。
そのため、機械学習にもMATLABが使われることがあります。
有料のソフトウェアのため、大学の研究室や企業でとくに使われている印象です。
有料のソフトウェアを使用できない人向けに開発された、MATLABの代わりとなるプログラミング言語が
です。MATLABの代替言語は、OctaveやScilabなどいくつかあります。なかでもOctaveは、MATLABとの互換性を意識して開発されておりMATLABと同じことを同じように完全に実行できるとは言えないものの、多くの似た機能を備えています。
Octaveは無料で使えるため、機械学習を学び始める人には一つの選択になります。
実際に、世界中で評価されている機械学習の入門コース
Andrew Ng先生の機械学習
ではOctaveが使われています。
Andrew Ng先生は、機械学習を学ぶときに、Octave(MATLAB)が有用な理由を、
- C++やJavaなど他のプログラミング言語よりも、機械学習のアルゴリズムを素早く実装できる
- そのため、機械学習のプロトタイプのモデルを作るのが早くなる
- プログラミング言語の習得コストが他の言語よりも低い
などの面から説明しています。
これらの強みが、OctaveやMATLABの特徴です。
Pythonよりも簡単なコードで機械学習を試せることが、MATLAB(Octave)の強みです。
そのため、プログラミング言語にあまり慣れていないけれど、機械学習を学んでみたい、試してみたいという人にはOctaveやMATLABは、有力な候補の一つとなります。
C++
2つ目は
です。
C++は、C言語から派生したプログラミング言語で、長い歴史を持っています。汎用言語であるC++は、OSの開発からゲーム開発、家電製品に組み込まれているマイコンの取り扱い(マイクロコンピュータ=家電を制御するための小さなコンピュータ)まで広くプログラミング言語として浸透しています。
そんなC++にも、機械学習に使えるライブラリ(便利な機能をひとまとめにしたプログラム群)があります。
です。C++のライブラリDlibを使うことで、機械学習に取り組むことができます。
Dlibでは様々な種類の機械学習を試すことができます。
PythonやMATLABに比べると、敷居が高く感じるC++ですが、歴史が長いこともあり、
- Python
- Java
- PHP
など今でも広く用いられているプログラミング言語に影響を与えたと言われています。
- プログラミング言語を機械学習以外にも広く使っていきたい
- しっかし腰を据えてプログラミング言語を学びつつ、機械学習も試してみたい
という人は、C++が一つの選択肢になるのではないでしょうか。
JavaScript
3つ目は、
です。
JavaScriptは、Webアプリやスマートフォンアプリ開発などに広く使われています。
また、Webブラウザで見えるさまざまな動き(画像表示の切り替えやポップアップウインドウ表示など)をJavaScriptで制御できることからもWebサービスに無くてはならない存在であることが分かります。
実は、JavaScriptでも機械学習に取り組むことができます。
を使います。
TensorFlow.jsは、JavaScriptの機械学習用ライブラリです。
TensorFlowは、Pythonのディープラーニング用ライブラリとして広く知られていますが、それのJavaScript版といった形です。
JavaScriptの、アプリ開発に重宝されているという特徴から、機械学習だけではなく、
機械学習を活用したアプリを開発する
という時に、JavaScriptは有効です。
写真加工やゲーム、カメラ機能の拡張、イラストなど様々なことで
- 機械学習Webアプリ
- 機械学習を活用したスマートフォンのアプリ
を開発するという道が、JavaScriptでの機械学習で見えてきます。
- HTTP、CSSとともにJavaScriptを学び始めた。機械学習のアプリ開発にも興味がある
- アプリ開発のためにプログラミング学習を始めたが、機械学習も試してみたい
という人は、JavaScriptの機械学習ライブラリを使ってみると良いと思います。
Go
4つ目は、
です。
Go言語は、2009年に誕生した比較的新しいプログラミング言語です。
C言語に影響を受け、開発されたといわれているGo言語は、コンピュータでの処理速度、セキュリティの向上などの強みを持ちつつ比較的容易にコードを書くことができるため、人気が高まっている言語です。
有名なQ&AサイトStackOverflowの調査では、
2019年、開発者が学びたいプログラミング言語ランキングの3位を獲得しています。
(ちなみに、1位はPython、2位はJavaScriptです。)
Go言語で機械学習に取り組むためのライブラリがあります。
などです。
PythonやRに比べると使えるライブラリ(パッケージ)がまだまだ少ない印象ですが、
- Go言語を勉強中で、機械学習にも取り組みたい
- Pythonの機械学習ライブラリを使ってきた。Go言語のライブラリを使うことで、Pythonと比較しつつ、機械学習×Go言語の可能性を体験してみたい
という人などは、Go言語で機械学習、も一つの選択肢だと思います。
目的に合わせて、プログラミング言語を選ぶ
今日は、ユニークな側面を持つ
- MATLAB (Octave)
- C++
- JavaScript
- Go
の4つのプログラミング言語について、機械学習との関係を見てきました。
先日紹介した、Python、R、Juliaとは、違った特徴があります。
自分の興味や目的に合ったプログラミング言語で、機械学習を始めるのが良いと思います。
例えば、
- とにかく機械学習のアルゴリズムや数式を早くプログラミングでコードにして、動かしてみたい → MATLAB (Octave)
- 機械学習を活用したWebアプリを開発したい → JavaScript
- 普段からC++を使っていて機械学習に取り組んでみたい → C++
- 人気が出てきているGo言語での機械学習に取り組んでみたい → Go
など、いろいろなパターンが考えられます。
前回のPython、R、Julia3言語、今回の4言語と合わせて7言語、それぞれ機械学習との組み合わせで、違った相乗効果を生むことがわかります。
一度、
機械学習×プログラミング
で自分のモチベーションを考えると、使いたいプログラミング言語が見えてくのではないでしょうか。
コメント