AI (Artificial Intelligence) と 機械学習 (Machine Learning) の関係には諸説ありますが、すくなくとも Mathematica では AI、とくに深層学習 (Deep Learning) は機械学習に含まれる前提で扱われています。このことをよく表した本が "Introduction to Machine Learning, fourth edition, Etienne Bernard" 2021/12/20 です。(著者 Etienne Bernard は Mathematica (ver 12.0) コードを援用することで、原著にある数理的説明を簡潔かつ視覚的に実現し、直観的に理解できる形にしたものをネット上に公開しています。なお全章ノートブックの形で提供されています。)
機械学習の典型的な応用例「分類」に関し、Mathematica は Classify
と深層学習用関数 NetTrain
の2種類を用意しています。Classify
は想定するドメインに関し、要求精度が得られるのであれば簡便に使えて便利です。なお、学習データに応じ、LogisticRegression
や RandomForest
、Markov
など主要10個の学習メソッドが自動的に選択されるのも便利です。一方、Mathematica が提供する深層学習環境は精度および対データ量のいずれにおいても Python 版にひけをとりません。偶然ですが、多重スカラー宇宙模型に関する「ある種の制約条件」を予想するのに Mathematica の深層学習ツールを使った論文を見つけました:https://arxiv.org/html/2401.09130v1 。
また iPhone カメラ上でキャプチャしたキノコ画像から種類 (科目) を推定するアプリの学習部分を Mathematica で作ったという例もネットでは紹介されています:https://www.wolfram.com/wolfram-u/courses/machine-learning/neural-net-on-phone-train-deploy-ml017/ 。
ポイントは3つあります。Mathematica では学習モデルを MXNet という固有の形式に保存する、つまり他の言語との互換性がありませんが、ver 12.1 から他言語と共通の形式 ONNX に Export できるようになりました。ただし ONNX に変換できたとしても、iPhone が提供する CoreML を使うためには、いったん Python を経由しなければなりません。そのために Mathematica が提供する ExternalEvaluate を活用する必要があります。
紹介された動画を観ると高速に判別されています。Mathematica が裏で動いていないからです。Mathematica はあくまで学習済みデータを iPhone に提供するだけです。そこが深層学習モデル最大のメリットです。要はどの言語で生成しようと、生成された学習済みデータはどの環境でも動きます (推論に供されます) 。
Wolfram社 は Mathematica による深層学習モデル例をリポジトリという形で提供しています:
Mathematica でも LLM (Large Language Model )が使えます。ただし Mathematica にかぎらず LLM に対する最大の期待は自動プログラミングです。Wolfram Community に面白い例 (LLM を使い Pong Game のコードを生成) が載っていたので紹介させていただきます:"Free LLMs locally on your computer: the new way of programming in the Wolfram Language"。
LLM を活用するには試行錯誤が必要です。一度で完成することは稀だからです。その一方、LLM 側の支援を得られることもあります。ここでは著者自身、自ら書いたコードのバグを発見してもらうのに LLM を活用したとあります。ChatGPT をはじめとする LLM は一般的な知識に関して嘘をつくことも多いですが、ことプログラムコードに関しては、誤ることはあっても基本嘘はつきません。それでも完全はありえないので、対話的にコードを生成し、デバッグは欠かせません。かつて自動プログラングが流行りかけた時代に強調された点「対話的プログラミング」が、いまとてつもなくバージョンアップして復活した印象です。