今日、コンピュータサイエンスの分野の学生や実務家にとって、人工知能、データサイエンス、機械学習、ディープラーニングの基礎を理解することは絶対に必要です。しかし、どこから始めればよいのでしょうか? その答えを見つけるために、私は人工知能に関する教科書やチュートリアルをたくさん読みました。いくつかのコースでは、多くの数学理論から始まり、プログラミング言語に依存しない方法で説明されるもの(特定のプログラミング言語を知る必要はありません)、また、受講者が線形代数、確率論、統計の専門家であることを前提としているものもあります。ほとんどの場合、それらは役に立ちます。しかし、そのどれもが最も重要な質問に答えていません。「真の初心者は AI についてどこから学び始めるべきでしょうか?」 AI を学び始めるにはさまざまな方法がありますが、それぞれの方法に対して私なりの懸念があります。数学を多用しすぎると気が散ることがあります。しかし、数学を少なすぎると、車のエンジンがどこにあるか分からない運転手のようなものです。線形代数、確率論、統計に精通した将来の AI エンジニアやデータ サイエンティストにとって、高度な概念から始めるのが最も効率的なアプローチです。生徒が学習をそこで終わらせたいのであれば、基礎から始めて途中で終わらせても問題ありません。これらすべての事実を考慮すると、初心者向けの AI チュートリアルは基礎から始めて、実用的な AI プロジェクトで終わるべきだと思います。このプロジェクトは小規模かもしれませんが、同じタスクに対する従来のプロジェクトを上回るものとなるでしょう。 このシリーズでは、最も基本的な知識から中級レベルのコンテンツまでをカバーします。 AI について議論するだけでなく、AI、機械学習、データ サイエンスなどの用語については多くの混乱があるため、関連するトピックについても明確に説明したいと考えています。私たちは毎日膨大な量のデータを生成するため、人工知能プログラムが必要になります。インターネットで見つかった結果によると、私たちは毎日約 2.5x10 18バイトのデータを生成します。しかし、このデータのほとんどは私たちにとってまったく無関係であり、価値のない YouTube 動画、思いやりのない電子メール、取るに足らないニュース レポートなどが大量に含まれています。しかし、この膨大なデータの海には貴重な知識も含まれています。従来のソフトウェアでは、このデータを処理するという困難なタスクに対応できません。人工知能は、この情報過多に対処できる数少ない技術の 1 つです。 人工知能に関しては、事実とフィクションを区別する必要もあります。数年前、人工知能の専門家の講演を聞いたことを覚えています。彼は、シベリアン・ハスキーとシベリア・ユキオオカミの画像をほぼ絶対的な精度で区別できる AI 画像認識システムについて語ります。インターネットで検索すると、この2匹の動物がいかに似ているかが分かります。もしこのシステムが本当にそれほど正確であれば、それは人工知能の驚異となるだろう。残念ながら、そうではありません。画像認識システムは画像の背景のみを分類します。シベリアン ハスキーは家畜であり、その画像の背景にはほぼ必ず長方形または円形の物体が描かれています。シベリアオオカミは野生動物で、背景には雪が積もっています。こうした例から、近年では AI の精度保証を求める声が高まっています。 実際、AI は近年、かなりの実力を発揮しています。簡単な例としては、YouTube や Amazon などの Web サイトの推奨システムがあります。彼らが提案する内容に驚かされることが何度もあります。まるで私の心を読んでいるかのようです。しかし、これらの推奨事項の質に関係なく、「人工知能は良いのか悪いのか」はホットな話題です。映画「ターミネーター」のように、機械が意識的に人間を攻撃する未来は、まだ遠い未来だと思います。しかし、前の文の「意識的に」という言葉は非常に重要です。現在の AI システムは誤動作し、誤って人間に危害を加える可能性があります。しかし、AI 機能を備えていると主張するシステムの多くは、実際には分岐やループを多用した従来のソフトウェアにすぎません。したがって、現時点では、私たちの日常生活における AI の真の力をまだ目にしていないと言っても過言ではありません。その影響が良いもの(例えば、ガンの治療)になるか悪いもの(世界の指導者の合成ビデオが暴動や戦争を引き起こす)になるかは、ただ待って見守るしかない。個人的には、AI は恵みであり、将来の世代の生活の質を大幅に向上させると信じています。 人工知能とは何ですか?先に進む前に、人工知能 (AI)、機械学習 (ML)、ディープラーニング (DL)、データサイエンス (DS) などのつながりと違いを理解してみましょう。これらの用語は同義語として誤用されることがよくあります。図 1 は、人工知能、機械学習、ディープラーニング、データサイエンスの関係を示しています。もちろん、これが唯一の分割方法ではありません。他の分割図も見られます。しかし、私の意見では、図 1 が最も適切であり、これらの領域間の関係を最もよく要約できます。 図1: AIアーキテクチャとデータサイエンス このシリーズの最初の記事では、各用語の正確な定義については説明しません。現段階でそれらを正確に定義するのは逆効果であり、時間の無駄になると思います。しかし、以降の記事では、これらの用語を再度取り上げ、正式に定義します。今のところ、人工知能は人間の知能をある程度模倣できるプログラムであると暫定的に考えることができます。では、人間の知能とは何でしょうか? AI プログラムが 1 歳の赤ちゃんだと想像してください。この赤ちゃんは、周りの人が話しているのを聞くことで母国語を学びます。彼/彼女は、形、色、物体などを何の困難もなくすぐに認識できるようになります。さらに、周囲の人々の感情に反応できるようになります。たとえば、3 歳の赤ちゃんなら誰でも、甘い言葉を使って両親にチョコレートやロリポップをもらう方法を知っています。同様に、AI プログラムは赤ちゃんのように環境を感知し、適応できるようになります。しかし、このような真の人工知能は遠い将来にしか実現できません。 図 1 は、機械学習が人工知能の真のサブセットであり、人工知能システムを実装するための技術の 1 つでもあることを示しています。機械学習は、必要なタスクを効率的に実行するために、大量のデータを使用してプログラムをトレーニングする技術です。トレーニング セットのサイズが大きくなるにつれて、精度が向上します。 AI システムの開発には、ブール論理に基づくシステム、ファジー論理に基づくシステム、遺伝的プログラミングに基づくシステムなど、他の技術も使用されることに注意してください。しかし、今日では機械学習は人工知能システムを実装するための最も主流の技術です。図 1 は、ディープラーニングが機械学習の真のサブセットであり、多くの機械学習手法の 1 つにすぎないことも示しています。しかし、実際には、今日の本格的な機械学習技術のほとんどはディープラーニングを使用しています。この時点では、ディープラーニングを定義しようとすることすら避けることにします。ディープラーニングには大規模な人工ニューラル ネットワークの使用が含まれることに注意してください。 では、データ サイエンス (図 1 の赤い円) は何を行うのでしょうか?データ サイエンスは、大量のデータを処理および解釈するコンピューター サイエンス/数学の分野です。 「大きい」というのは、どれくらい大きいのでしょうか? 2010年にはすでに、Facebookなどの大企業は自社のサーバーが数ペタバイトのデータを処理できると主張していた。ビッグデータについて話すとき、通常はギガバイト単位ではなく、テラバイト単位やペタバイト単位のデータ規模を意味します。多くのデータ サイエンス アプリケーションでは、人工知能、機械学習、ディープラーニング技術が使用されます。したがって、人工知能について議論するときに、データサイエンスについて言及しないわけにはいきません。データ サイエンスでは、ビッグ データ分析に Apache Hadoop を使用するなど、従来のプログラミングおよびデータベース管理手法も数多く使用されます。 このシリーズの議論は主に人工知能と機械学習に焦点を当て、データサイエンスについても少し触れます。 教育環境の構築このシリーズの記事のテーマを述べた後、このチュートリアルの前提条件について説明しましょう。 Linux コンピューター (もちろん Windows または macOS マシンでも動作しますが、インストール手順の一部で追加の支援が必要になる場合があります) と、数学とコンピューター プログラミングに関する基本的な知識が必要です。この連載記事をじっくり読んで、人工知能の威力を実感していただければ幸いです。 プログラミング言語に依存しない方法で AI を学ぶことは可能ですが、このシリーズでは単一のプログラミング言語に基づいて、多くのプログラミングを扱います。どのプログラミング言語を使用するかを決める前に、人工知能、機械学習、ディープラーニング、データサイエンスの分野で人気のあるプログラミング言語を確認しましょう。 Lisp は、人工知能プログラムの開発に使用された最初の言語の 1 つである関数型プログラミング言語です。 Prolog は、1970 年代に同じ目的で使用されていた論理プログラミング言語です。 LispとPrologについては、人工知能の歴史を紹介する以下の記事でさらに詳しく紹介します。 現在では、Java、C、C++、Scala、Haskell、MATLAB、R、Juliaなどのプログラミング言語もAIプログラムの開発に使用されています。 Python は人工知能プログラムの開発に広く使用されているため、このチュートリアルのプログラミング言語として選択しました。しかし、これから私が行う選択(より正確には、皆さんのために行う選択)は、主に使いやすさ、人気、(いくつかのケースでは)ソフトウェア/テクノロジーに対する私自身の快適さと慣れ、そしてこのチュートリアルの効率性の向上に基づいていることを明言しておかなければなりません。しかし同時に、他のプログラミング言語、ソフトウェア、ツールも試してみることをお勧めします。長期的には、それらはあなたにとってより良い選択肢となるかもしれません。 ここで、もう一つの即時選択が必要です。Python 2 と Python 3 のどちらを使用するべきでしょうか?このシリーズには、将来長いキャリアを積む若い読者が多くいることを考慮して、Python 3 を使用することを選択します。 Ubuntu システム ターミナルでコマンド 以降のチュートリアルでは、多くの Python パッケージをインストールする必要があるため、パッケージ マネージャーが必要になります。現在主流のパッケージ マネージャーには、pip、Conda、Mamba などがあります。このチュートリアルでは、パッケージ マネージャーとして pip を選択しました。比較的シンプルで、Python に推奨されるインストーラーです。 Conda と Mamba は pip よりも強力なツールだと思いますので、ぜひ試してみてください。 ここで、Python 統合開発環境 (IDE) が必要になります。 IDE は、プログラマーがコードをより簡単に記述、コンパイル、デバッグ、実行するのに役立ちます。 PyCharm、IDLE、Spyder などは人気のある Python IDE です。ただし、私たちの主な目的は AI とデータ サイエンス プログラムを開発することであるため、ここでは JupyterLab と Google Colab という 2 つの強力な候補を検討します。厳密に言えば、これらは単なる IDE ではなく、非常に強力な Web ベースのインタラクティブな開発環境です。どちらも Web ブラウザ上で動作し、強力な機能を提供します。 JupyterLab は、非営利団体 Project Jupyter によってサポートされている無料のオープンソース ソフトウェアです。 Google Colab フォロー フリーミアム
Anaconda は、Python および R プログラミング言語の非常に人気のあるディストリビューションであり、主に機械学習とデータ サイエンスの分野で使用されています。将来の人工知能エンジニアやデータサイエンティストとしては、Anaconda の使い方に精通しておくことも良い選択です。 ここで最も重要なこと、つまりこのチュートリアルのスタイルを決定する必要があります。 NumPy、SciPy、Pandas、Matplotlib、Seaborn、TensorFlow、Keras、Scikit-learn、PyTorch など、AI 開発に関連する Python ライブラリは多数あります。 AI、機械学習、データサイエンスに関する多くの教科書やチュートリアルは、これらのライブラリの 1 つ以上についての完全な説明に基づいています。これは特定のパッケージの機能をカバーする効率的な方法ですが、私のチュートリアルはより数学指向です。まず、人工知能プログラムの開発に必要な数学的概念について説明し、次に必要な Python の基礎と Python ライブラリを紹介します。これらの数学的概念を実装するために必要な機能を調査するために、これらの Python ライブラリを引き続きレビューします。場合によっては、Python と数学の基本的な概念を自分で学習するように依頼することもあります。 ここまで準備してきたのに、コードや数学の概念を一切説明せずにここで終わってしまうのは罪でしょう。したがって、私たちは人工知能と機械学習における最も重要な数学的概念であるベクトルと行列を学び続けます。 ベクトルと行列行列は、行と列に配置された数字、記号、または数式の長方形の配列です。図 2 は、2 行 3 列の 2 × 3 行列を示しています。プログラミングに精通している場合、この行列は多くの一般的なプログラミング言語で 2 次元配列として表現できます。 1 行のみの行列は行ベクトルと呼ばれ、1 列のみの行列は列ベクトルと呼ばれます。 行ベクトルです。 図2: 2×3行列 人工知能と機械学習において、行列とベクトルがなぜそれほど重要なのか?線形代数は人工知能や機械学習で広く使用されており、行列とベクトルは線形代数の中核をなしています。数学者は何世紀にもわたって行列とベクトルの特性と応用を研究してきました。ガウス、オイラー、ライプニッツ、ケリー、クレイマー、ハミルトンなどの数学者には、線形代数や行列理論の分野で彼らの名にちなんで名付けられた定理があります。長年にわたり、線形代数では行列とベクトルの特性を分析するための多くの手法が開発されてきました。 複雑なデータは、多くの場合、ベクトルや行列を使用して簡単に表現できます。簡単な例を挙げると、個人の医療記録からは、年齢、身長(cm)、体重(kg)、収縮期血圧、拡張期血圧、空腹時血糖値(mg/dL)などの詳細な情報が得られます。この情報は行ベクトルで簡単に表現できます。 。ここで、人工知能と機械学習の最初の課題が生まれます。医療記録が 10 億件あったらどうなるでしょうか?たとえ何千人もの専門家を動員して手作業でデータを抽出したとしても、その作業は不可能でしょう。そのため、AIや機械学習ではプログラムを使用してデータを抽出します。 人工知能と機械学習の2番目の課題はデータの解釈です。これは探求する価値のある多くの技術が存在する広大な分野です。これについては、後続の記事で取り上げます。 AI および機械学習アプリケーションは、数学的/計算上の課題に加えて、ハードウェア上の課題にも直面します。処理されるデータの量が増加するにつれて、データストレージ、プロセッサ速度、電力消費なども人工知能アプリケーションが直面する重要な課題となっています。しかし、今はこれらの課題を脇に置いて、AI コードの最初の行を書き始めましょう。 2 つのベクトルを追加する簡単な Python スクリプトを作成します。多次元行列 (配列) に対する数学演算をサポートする NumPy という Python ライブラリを使用します。 図3: 2つのベクトルを合計するPythonコード まず、コードを1行ずつ理解してみましょう。このチュートリアルではプログラミング経験がほとんどないことを前提としているため、コード行を [Basic] または [AI] としてマークしています。 [Basic] でマークされた行は古典的な Python コードであり、[AI] でマークされた行は人工知能プログラムを開発するためのコードです。基本的な Python コードと高度な Python コードを区別することで、基本的な知識と中級レベルのプログラミング スキルの両方を持つプログラマーがこのチュートリアルを効果的に活用できるようになることを願っています。 この記事を締めくくる前に、2 つの免責事項を述べておきたいと思います。まず、上で説明した例では、2 つの行ベクトル (正確には 1 x 3 行列) の加算のみを扱っていますが、実際の機械学習アプリケーションでは 1000000 X 1000000 の行列を扱う場合があります。しかし、心配しないでください。練習と忍耐があれば、これらの問題に対処できるようになります。第二に、この論文で示されている定義の多くには、極度に単純化されたものや不十分な説明が含まれています。しかし、前にも言ったように、このシリーズを終える前に、これらの曖昧な用語に正式な定義を与えたいと思います。 さて、この記事はこれで終わりにします。この記事に記載されている必要なソフトウェアをインストールし、この記事のコードを実行していただければ幸いです。次の記事では、まず人工知能の歴史、範囲、将来について説明し、次に線形代数のバックボーンである行列理論について詳しく説明します。 |
<<: G7、先進的なAIシステムを開発する企業の行動規範に合意へ
>>: GPT-4P がマルチモーダルプロンプトインジェクションイメージ攻撃に対して脆弱なのはなぜですか?
時代の発展とともに、掃除ロボットは多くの家庭にとって必需品となりました。掃除ロボットは、ベッドの下を...
人工知能の急速な発展に伴い、音声認識は多くのデバイスの標準機能になり始めています。音声認識はますます...
ノアが編集海外メディアのザ・ヴァージは北京時間今朝未明、生成AIをめぐる熾烈な競争の中で、バイトダン...
長年にわたり、クラウド コンピューティングは現代のビジネスに欠かせないツールとなり、2020 年には...
1956 年のダートマス会議で AI が提案されて以来、AI 研究はいくつかの浮き沈みを経験してきま...
「人工知能は急速に発展し、10年以内に人間の仕事の50%がAIに置き換えられるだろう」。シノベーショ...
ダイナミック ルーティング プロトコルには多くの種類があります。ここでは主に、RIP、OSPF、EI...
自然言語処理とは、自然言語を使用して人間とコンピューターが効果的にコミュニケーションするためのさまざ...
人間が日常のコミュニケーションで話す自然言語の指示を使用して、ロボットアームにタスクを実行するよう指...
人工知能(AI)は、人間の知能をシミュレート、拡張、拡大するための理論、方法、技術、アプリケーション...
[[248486]]グーグルの自動運転車開発会社ウェイモはすでに試験的な移動サービスの一部を有料化...
現実には、あらゆる種類の印刷されたテキストや、周囲のあらゆるものを何の障害もなく簡単に読むことができ...
2023年の科学技術の世界は、(偽の室温超伝導を除いて)大型モデルが主流であると言えます。私たちは...
2010 年以前は、トレーニング コンピューティングの開発はムーアの法則に沿って 2 年ごとに 2 ...