blog

テクノロジー|人工知能チュートリアル:基礎編

今日、コンピュータ・サイエンスの分野の学生や実務家にとって、 , , , の基礎を理解することは絶対に必要です。しかし、何から始めればいいのでしょうか?\nその答えを見つけるために、私は人工知能に関す...

Oct 20, 2025 · 11 min. read
シェア

今日、コンピュータ・サイエンスの分野の学生や実務家にとって、 , , , , の基礎を理解することは絶対に必要です。しかし、どこから始めるべきでしょうか?

その答えを見つけるために、私は人工知能に関するたくさんの教科書やチュートリアルに目を通しました。その中には、多くの数学的理論から始まるもの、プログラミング言語にとらわれない方法で説明するもの、線形代数、確率論、統計学の専門家であることを前提とするものなどがあります。かなりの程度、それらは有用です。しかし、真の初心者はどこからAIを学び始めるべきなのかという、最も重要な問いに答えてくれるものはありません。

AIについて学び始めるにはさまざまな方法がありますが、私はそれぞれに懸念があります。数学が多すぎると気が散ってしまいますが、数学が少なすぎると、車のエンジンがどこにあるのかわからない運転手のようなものです。将来のAIエンジニアやデータサイエンティストにとっては、線形代数、確率論、統計学に精通しているので、高度な概念から始めるのが最も効率的なカバーの仕方です。また、学習者がそこで学習を終わらせたいと思う限り、基礎から始めて、どこかで終わっても構いません。これらの事実を考慮すると、初心者のためのAIチュートリアルは、基礎から始まり、実際のAIプロジェクトで終わるべきだと思います。このプロジェクトは小さいかもしれませんが、同じタスクに関する従来のプロジェクトを凌ぐものになるでしょう。

AIに関しては、事実とフィクションを区別する必要もあります。数年前、あるAIの専門家の話を聞いたことがあります。彼は、シベリアそり犬とシベリアオオカミのイメージをほぼ絶対的な精度で区別できるAIのイメージ認識システムについて話していました。インターネットで検索すれば、この2つの動物がいかに似ているかがわかるでしょう。もしこのシステムが本当にそこまで正確であれば、人工知能の驚異と言えるでしょう。しかし、残念ながらそうではありません。このイメージ認識システムは、単にイメージの背景を分類しているだけなのです。シベリアそり犬は家畜化された動物なので、イメージの背景には必ずといっていいほど長方形か円形の物体が写っています。そして、シベリアのスノーウルフは野生動物で、その背景には雪があります。このような例から、近年AIには精度保証が求められています。

実際、人工知能は近年、大きな力を発揮しています。例えば、YouTubeやAmazonのようなサイトの推薦システム。まるで心を読んでいるかのようなレコメンド結果に驚かされることもしばしば。しかし、こうしたレコメンデーションの質はともかく、"AIは良いのか悪いのか?" という問いは非常にホットな話題です。は非常にホットな話題です。私は、『ターミネーター』のように機械が意識的に人間を攻撃するような未来は、まだまだ先の話だと思っています。しかし、前文の「意識的に」という言葉は非常に重要です。現在のAIシステムは誤作動を起こし、誤って人間に危害を加えることがあります。しかし、AI能力を持つと主張するシステムの多くは、実際には分岐やループの多い普通のソフトウェアに過ぎません。したがって、現在のところ、AIの真の力は日常生活ではまだ見えていないと言っていいでしょう。その効果が吉と出るか凶と出るかは、見守るしかありません。個人的には、AIは恵みであり、今後何世代にもわたって生活の質を大きく向上させるだろうと信じています。

人工知能とは?

AI、機械学習、ディープラーニング、データサイエンスなどの関連性と違いを理解しましょう。これらの用語はしばしば同義語として誤用されます。図1は、人工知能、機械学習、ディープラーニング、データサイエンスの関係を表しています。もちろん、これだけが唯一の分け方ではないので、他の分け方を目にすることもあるでしょう。しかし、私の意見では、図1が最も適切であり、これらの分野の関係を最も概観できます。

人工知能プログラムが1歳の赤ちゃんだと想像してみてください。この赤ちゃんは、周りの人の話を聞いて母国語を学びます。形、色、物などを難なく認識できるようになります。さらに、周りの人の感情に反応することもできるようになります。例えば、3歳の赤ちゃんは、親にチョコレートやロリポップをあげるように甘える方法を知っています。同じように、AIプログラムも赤ちゃんのように環境を認識し、適応することができるでしょう。しかし、そのような真のAIが実現するのは遠い未来のことです。

図1は、機械学習が人工知能の真のサブセットであり、人工知能システムの実装に使用される技術の1つであることを示しています。機械学習は、大量のデータを使用して、必要なタスクを効率的に実行するプログラムを訓練する技術です。その精度は、学習セットが増加するにつれて向上します。なお、人工知能システムの開発には、ブール論理ベースのシステム、ファジー論理ベースのシステム、遺伝的プログラミングベースのシステムなど、他の手法も使用されています。しかし現在では、機械学習が人工知能システムを実装するための最も主要な手法となっています。図1はまた、ディープラーニングが機械学習の真のサブセットであり、数ある機械学習技術の1つに過ぎないことを示しています。しかし、今日、ほとんどの本格的な機械学習技術は、実際にディープラーニングを使用しています。この際、ディープラーニングを定義することは避けたいと思います。ディープラーニングは、大規模な人工ニューラルネットワークの使用を伴うことを覚えておいてください。

では、データサイエンスとは何をする学問なのでしょうか?データサイエンスは、コンピュータサイエンス/数学の分野の中で、大規模データの処理と解釈を扱う学問です。大規模」と言っても、どの程度の規模なのでしょうか?2010年当時、フェイスブックのような大企業は、自社のサーバーで数ペタバイトのデータを処理できると主張していました。私たちがビッグデータと言う場合、通常はGbではなくTbやPbスケールのデータを意味します。データサイエンスのアプリケーションの多くは、人工知能、機械学習、ディープラーニングのテクニックを使用します。そのため、AIについて議論する際にデータサイエンスについて触れないのは難しいことです。データサイエンスはまた、Apache Hadoopを使用したビッグデータ分析など、多くの伝統的なプログラミングやデータベース管理技術も使用します。

このシリーズでは、主に人工知能と機械学習に焦点を当て、データサイエンスにも触れていきます。

教育環境セットアップ

プログラミング言語にとらわれない方法でAIを学ぶことは可能ですが、このシリーズでは1つのプログラミング言語をベースに、多くのプログラミングを行います。どのプログラミング言語を使うかを決める前に、AI、機械学習、ディープラーニング、データサイエンスの分野で人気のあるプログラミング言語をおさらいしましょう。Lispは関数型プログラミング言語で、AI用のプログラムを開発するために最初に使われた言語の1つです。LispとPrologについては、AIの歴史に関する次の記事で詳しく取り上げます。

今日では、Java、C、C++、Scala、Haskell、MATLAB、R、Juliaなどのプログラミング言語もAIプログラムの開発に使用されています。PythonはAIプログラムの開発に広く使用されているため、このチュートリアルのプログラミング言語としてPythonを選択しました。PythonはAIプログラムの開発に広く使われているため、このチュートリアルのプログラミング言語としてPythonを選択しました。しかし、Pythonを選択した主な理由は、使いやすさ、人気の高さ、私自身がそのソフトウェアや技術に慣れ親しんでいること、そしてこのチュートリアルの効率を上げることです。しかし同時に、他のプログラミング言語、ソフトウェア、ツールも試してみることをお勧めします。もしかしたら、長い目で見れば、それらの方が良い選択肢になるかもしれません。

この連載では、これから長いキャリアを歩む若い読者が多いことを考慮して、Python 3を選びます。最新バージョンのPython 3のインストールは、Ubuntuシステム上のターミナルでコマンド sudo apt install python3 実行するだけで簡単にできますし、他のLinuxディストリビューションやWindows、macOSマシンへのインストールも簡単です。他のLinuxディストリビューション、Windows、macOSマシンへのPython 3のインストールも非常に簡単です。インストールされているPython 3のバージョンを確認するには、次のコマンドを実行します。

  1. python3 --version
  2. Python 3.8.10

以降のチュートリアルでは、多くの Python パッケージをインストールする必要があるので、パッケージマネージャが必要になります。主なパッケージマネージャには pip, Conda, Mamba があります。このチュートリアルではpipをパッケージマネージャとして選択しました。比較的シンプルで、Pythonをインストールするための推奨ツールです。Conda と Mamba は pip よりも強力なツールだと思いますので、試してみてください。コマンド sudo apt install python3-pip 実行すると、Ubuntuシステムにpipがインストールされます。pip、Conda、MambaはLinux、Windows、macOSにインストールできるクロスプラットフォームのソフトウェアです。以下のように、pip3 --versionコマンドを実行すると、システムにインストールされているpipのバージョンを確認できます。

  1. pip from /usr/lib/python3/dist-packages/pip (python 3.8)

PyCharm、IDLE、Spyderは人気のあるPython IDEですが、主な目的はAIやデータサイエンスのプログラムを開発することなので、ここでは他の2つの強力な候補を紹介します -- JupyterLabとGoogle Colabです。-- JupyterLab と Google Colab 厳密に言えば、これらは単なるIDEではなく、非常に強力なウェブベースの対話型開発環境です。どちらもウェブブラウザ上で動作し、強力な機能を提供します。JupyterLabは非営利団体Project Jupyterが支援する無料のオープンソースソフトウェアです。JupyterLab は非営利のProject Jupyterに支えられた無料のオープンソースソフトウェアです。Google Colabは、基本的な機能は無料で、追加機能は有料というモデルに従っています。私はGoogle Colabの方がJupyterLabより強力だと思います。しかし、Google Colabのフリーミアムモデルと、Google Colabの使用経験が比較的少ないことから、このチュートリアルではJupyterLabを選びましたが、それでもGoogle Colabをチェックすることを強くお勧めします。

JupyterLabは、 pip3 install JupyterLab コマンドを使ってローカルにインストールできます。jupyter-labコマンドは、システムのデフォルトのウェブブラウザでJupyterLabを実行します。 project Jupyterは、Jupyter Notebookという古い類似品も提供しています。Notebookコマンドを使ってJupyter Notebookをローカルにインストールし、Jupyter Notebookで実行することができます。しかし、Jupyter NotebookはJupyterLabほど強力ではなく、最終的にはJupyterLabに取って代わられることが公式に発表されています。このチュートリアルでは、適切な段階でJupyterLabを使いますが、最初はLinuxターミナルを使ってPythonのプログラムを実行するので、パッケージマネージャのpipが緊急に必要になります。

Anacondaは、主に機械学習やデータサイエンスの分野で使用されている、非常に人気のあるPythonとRのプログラミング言語ディストリビューションです。将来のAIエンジニアやデータサイエンティストとして、Anacondaの使い方に慣れておくのも良いでしょう。

これらの準備を終えた後、何のコードも数学的概念もなく、ここで終わらせるのは罪です。そこで、AIや機械学習で最も重要な数学的概念である、ベクトルと行列について説明します。

ベクトルと行列

行列とは、数値、記号、または数式を行と列に並べた矩形の配列のことです。図2は2行3列の2×3行列です。プログラミングに慣れていれば、この行列は多くの一般的なプログラミング言語で2次元配列として表現できます。行が1つしかない行列を行ベクトル、列が1つしかない行列を列ベクトルと呼びます。 これは行ベクトルです。

なぜ行列とベクトルは人工知能と機械学習で重要なのですか?線形代数は人工知能や機械学習で広く使われており、行列とベクトルは線形代数の中心にあります。数学者は何世紀にもわたって行列とベクトルの特性と応用を研究してきました。ガウス、オイラー、ライプニッツ、ケリー、クレム、ハミルトンなどの数学者は、線形代数と行列理論の分野で彼らの名前を冠した定理を持っています。長年にわたり、行列とベクトルの性質を分析するための多くの技法が線形代数学で開発されてきました。

複雑なデータは多くの場合、ベクトルや行列として簡単に表現できます。簡単な例として、ある人の医療記録から、年齢、身長、体重、収縮期血圧、拡張期血圧、空腹時血糖値などの詳細を得ることができます。 この情報は行ベクトルとして簡単に表現できます。人工知能と機械学習の最初の課題がここにあります。何千人もの専門家が手作業でデータを抽出したとしても、その作業は不可能です。そのため、AIと機械学習はデータを抽出するためにプログラムを利用します。

人工知能と機械学習は関連コンテンツで紹介しています。人工知能と機械学習アプリケーションは、数学的/計算上の課題に加えて、ハードウェアの課題にも直面しています。処理されるデータ量が増えるにつれ、データ・ストレージ、プロセッサ速度、消費電力などもAIアプリケーションにとって重要な課題となります。しかし今は、これらの課題はひとまず脇に置いておいて、AIコードの最初の行に手をつけてみましょう。

2つのベクトルを加算する簡単なPythonスクリプトを書きます。多次元行列の数学演算をサポートするNumPyというPythonライブラリを使用します。Python 3用のNumPyパッケージをpip3 install numpyコマンドでインストールします。JupyterLab、Google Colab、Anacondaを使っているのであれば、NumPyはすでにプリインストールされているはずです。しかし、このシリーズのこれまでの記事では、デモンストレーションのために、Linuxターミナル上で行います。Linuxターミナルでpython3コマンドを実行すると、Pythonコンソールにアクセスできます。このコンソールから、Pythonコードを一行ずつ実行することができます。図3は、コンソールでPythonコードを一行ずつ実行し、2つのベクトルを加算し、結果を出力しているところです。

まず、コードを一行ずつ理解していきましょう。このチュートリアルはほとんどプログラミングの経験がないことを前提にしているので、コードの行に基本かAIかのラベルを付けています。基本というラベルが付いた行は古典的なPythonのコードで、AIというラベルが付いた行は人工知能プログラムの開発に使われるコードです。基本的な Python コードと高度な Python コードを区別することで、基本的な知識と中級のプログラミングスキルの両方を持つプログラマがこのチュートリアルを効率的に使用できるようになることを願っています。

  1. import numpy as np #
  2. a = np.array([]) #AI
  3. b = np.array([]) #AI
  4. c = np.add(a, b) #AI
  5. print(c) #

Pythonのimport文は、C/C++の#includeでヘッダファイルをインクルードしたり、Javaのimportでパッケージを使用するのに似ています。

a = np.array([])と b = np.array([])  、それぞれaとbという名前の1次元配列を作成します。

c = np.add(a, b) ベクトルaとbを加算し、結果をcというベクトルに格納します。 もちろん、a, b, c を変数名として使うのは悪いプログラミング方法ですが、数学者はベクトルに , , , と名前をつける傾向があります。Pythonプログラミングの経験が全くない場合は、Pythonの変数について独学で勉強してください。

print(c) はオブジェクトの値、つまりベクトル [ ] をターミナルに表示します。とりあえずベクトル和をこのように理解することができます。ベクトルと行列の足し算を正式に理解したいが、教科書が手元にない場合は、Wikipediaの行列の足し算の記事を読むことをお勧めします。ウェブで検索してみると、古典的な C/C++ や Java プログラムを使ってベクトル加算を実装するには、より多くのコードが必要であることがわかります。これはPythonがベクトルや行列を扱うのに適していることを示唆しています。Pythonの威力は、複雑になっていくベクトル演算を実行するときにさらに発揮されます。

を経由して

Read next