人工知能チュートリアル (V): Anaconda とさらなる確率理論

人工知能チュートリアル (V): Anaconda とさらなる確率理論

このシリーズの前回の記事では、まず TensorFlow の使い方を紹介しました。これは、人工知能および機械学習アプリケーションを開発するための非常に強力なライブラリです。次に、その後の議論の基礎を築くために、確率論の関連知識について議論しました。このシリーズの第 5 回の記事では、確率と統計の概念の紹介を続けます。

この記事ではまず、科学計算用の Python ディストリビューションである Anaconda を紹介します。これは、人工知能、機械学習、データサイエンスのプログラムの開発に特に役立ちます。後ほど、Theano という Python ライブラリを紹介します。しかしその前に、人工知能の将来について議論しましょう。

以前の記事を見直して修正する中で、人工知能の将来性について私が時折懐疑的な口調で述べたことや、いくつかのトピックについて非常に正直なアプローチをとったことが、一部の読者に意図せず否定的な印象を与えてしまったかもしれないことに気づきました。

これをきっかけに、私は金融の観点から人工知能と機械学習を勉強し始めました。 AI 市場に関与している企業の種類を特定したいのですが、深く関与している大手企業はありますか?それとも、これを推進しているスタートアップ企業はほんのわずかでしょうか?これらの企業は将来人工知能市場にどれくらいの資金を投資するのでしょうか?それは数百万ドル、数十億ドル、あるいは数兆ドルでしょうか?

私は、AI ベースの経済発展の背後にある複雑なダイナミクスを理解するために、著名な新聞の最近の予測とデータを使用しました。 2020年のフォーブスの記事では、企業による人工知能への投資は2020年に500億ドルに達すると予測されています。これは巨額の投資です。フォーチュン誌に掲載された記事によると、ベンチャー投資家は人工知能からWeb3や分散型金融(DeFi)などの新しい分野に関心を移しつつあるという。しかし、ウォール・ストリート・ジャーナルは2022年に「大手テクノロジー企業は人工知能の研究に数十億ドルを費やしている。投資家は細心の注意を払うべきだ」と自信を持って予測した。

インドのビジネススタンダードは2022年に、インド企業の87%が今後3年間でAI支出を10%増やすと報告した。全体的に、AI の将来は非常に安全で明るいように見えます。 驚くべきことに、Amazon、Meta(Facebookの親会社)、Alphabet(Googleの親会社)、Microsoft、IBMなどのトップテクノロジー企業に加えて、シェル、ジョンソン・エンド・ジョンソン、ユニリーバ、ウォルマートなどの非ITテクノロジー企業も人工知能に多額の投資を行っています。

世界最大手の企業の多くが、近い将来、人工知能が重要な役割を果たすと信じていることは明らかです。しかし、将来の変化や新しいトレンドは何でしょうか?ニュース記事やインタビューを通じていくつかの答えを見つけました。 AIの将来の動向という文脈でよく言及される用語には、責任あるAI、量子AI、AI IoT、AIと倫理、自動化された機械学習などがあります。これらはすべて、深く検討する必要があるトピックであると私は考えています。前回の記事では、人工知能と倫理について説明しました。次の記事では、他のトピックについて詳しく説明します。

Anacondaを使い始める

それでは、AIに必要な技術について説明しましょう。 Anaconda は、科学計算用の Python と R のディストリビューションです。パッケージ管理プロセスが大幅に簡素化されます。この記事以降では、必要に応じてAnacondaを使用します。最初のステップとして、Anaconda をインストールしましょう。インストーラー ダウンロード ページにアクセスして、Anaconda ディストリビューション インストーラーの最新バージョンをダウンロードしてください。この記事の執筆時点(2022 年 10 月)で、64 ビット プロセッサ用の最新の Anaconda インストーラーはAnaconda3-2022.05-Linux-x86_64.shです。別のバージョンのインストーラーをダウンロードした場合は、次のコマンドのファイル名を実際にダウンロードしたインストール ファイル名に置き換えてください。ダウンロードが完了したら、インストーラーの整合性を確認する必要があります。インストーラー ディレクトリでターミナルを開き、次のコマンドを実行します。

 shasum -a 256 Anaconda3-2022.05-Linux-x86_64.sh

ハッシュ値とファイル名がターミナルに出力されます。出力は次のようになります:

 a7c0afe862f6ea19a596801fc138bde0463abcbce1b753e8d5c474b506a2db2d Anaconda3-2022.05-Linux-x86_64.sh

次に、Anaconda インストーラー ハッシュ ページにアクセスし、ダウンロードしたインストール ファイルのハッシュを比較します。ハッシュ値が一致すればファイルのダウンロードは完了です。一致しない場合は再度ダウンロードしてください。次に、ターミナルで次のコマンドを実行してインストールを開始します。

 bash Anaconda3-2022.05-Linux-x86_64.sh

Enter キーを押した後、下にスクロールしてユーザー契約を確認して同意します。最後に、 yesと入力してインストールを開始します。ユーザー対話プロンプトが表示されたら、通常は Anaconda のデフォルト オプションを使用するだけで十分です。これでAnacondaがインストールされました。

デフォルトでは、Anaconda は Conda をインストールします。これはパッケージ マネージャーおよび環境管理システムです。 Anaconda ディストリビューションは、250 を超えるパッケージを自動的にインストールし、さらに 7,500 を超えるオープン ソース パッケージをインストールするオプションがあります。また、Anaconda を使用してインストールされたパッケージやライブラリはすべて、Jupyter Notebook で使用できます。新しいパッケージのインストール中に、Anaconda は依存関係の更新を自動的に処理します。

これからはパッケージやライブラリのインストールを心配する必要がなくなり、人工知能や機械学習のプログラムの開発を継続できるようになります。 Anaconda にはコマンド ライン インターフェイスしかないことに注意してください。幸いなことに、私たちのインストールには Anaconda Navigator が含まれています。これは Anaconda のグラフィカル ユーザー インターフェイスです。ターミナルでanaconda-navigatorコマンドを実行します (図 1)。すぐに例を通してその威力を実際に見てみましょう。

図 1: Anaconda ナビゲーター

Theano の紹介

Theano は、数式を評価するための最適化されたコンパイル済み Python ライブラリです。 Anaconda Navigator に Theano をインストールするのは非常に簡単です。 Anaconda Navigator を開き、「Environments」ボタン (図 1 の赤いボックスでマークされています) をクリックします。開いたウィンドウに、現在インストールされているすべてのパッケージのリストが表示されます。上部のドロップダウン リストで [インストールされていません] オプションを選択します。下にスクロールして Theano を見つけ、左側のチェックボックスをオンにします。ウィンドウの右下隅にある緑色の「適用」ボタンをクリックします。 Anaconda は、Theano をインストールするためのすべての依存関係をポップアップ メニューに表示します。図 2 は、Theano をインストールしたときのポップアップ メニューを示しています。ご覧のとおり、Theano に加えて、新しいパッケージがインストールされ、8 つのパッケージが変更されました。

Theano を手動でインストールするとしたら、どれほど面倒になるか想像してみてください。 Anaconda を使用すると、いくつかのボタンをクリックするだけで済みます。 Theano がインストールされるまでしばらくお待ちください。これで、Jupyter Notebook で Theano を使用できるようになりました。

図2: Theanoのインストール

シンボリック計算用の Python ライブラリ SymPy はすでによく知られていますが、Theano はシンボリック計算を新たなレベルに引き上げます。図3はTheanoを使用した例です。 1 行目は Theano をインポートします。 2 行目はtheano.tensorをインポートし、 Tという名前を付けます。 TensorFlow を紹介するときに、すでにテンソルを紹介しました。

図3: Theanoを使用したコード例

数学的には、テンソルは多次元配列として考えることができます。テンソルは Theano の主要なデータ構造の 1 つで、スカラー (数値)、ベクトル (1 次元配列)、行列 (2 次元配列)、テンソル (多次元配列) などを格納および操作するために使用できます。 3 行目では、 function()関数が Theano からインポートされています。 4 行目は、印刷のフォーマットに使用されるpp()という Theano 関数をインポートします。 5 行目は、 double型のxという名前のスカラーシンボリック変数を作成します。シンボリック変数の概念を理解するのが難しいかもしれません。ここでは、特定の値がバインドされていないdouble型のオブジェクトと考えることができます。同様に、6 行目ではyという名前の別のスカラー シンボリック変数を作成します。 7 行目は、シンボリック変数xyに値が取得されると、それらの値を追加して にaするように Python インタープリターに指示します。

シンボリック操作をさらに説明するには、出力が(x+y)である 8 行目を注意深く見てください。これは、2 つの数値の実際の加算がまだ行われていないことを示します。 9 行目から 11 行目では、同様にそれぞれ符号付きの減算、乗算、除算を定義します。関数pp()自分で使用して、 bcdの値を見つけることができます。 12行目は重要です。 Theano のfunction()関数を使用して、 f()という新しい関数を定義します。 関数f()の入力はxyで、出力は[abcd]です。最後に、13 行目では、実際の値を指定して関数f()が呼び出されます。この操作の出力も図 3 に示されています。表示された出力が正しいかどうかは簡単に確認できます。

図4: Theanoによる行列の処理

図 4 のコードを見て、Theano を使用して行列を作成および操作する方法を確認しましょう。図ではインポート コードを省略していることに注意してください。図 4 のコードを直接実行したい場合は、これらのインポート行 (図 3 の最初の 3 行) を自分で追加する必要があります。 1 行目は 2 つのシンボリック行列xyを作成します。ここでは、複数の行列を同時に構築できる複数のコンストラクターimatrices使用しました。 2 行目から 4 行目では、それぞれシンボリック行列xyに対してシンボリック加算、減算、乗算を実行します。ここでprint(pp(a))print(pp(b))print(pp(c))を使用すると、記号操作の性質を理解するのに役立ちます。 5 行目は、入力が 2 つのシンボリック行列xyで、出力が[abc]である関数f()を作成します。これらはそれぞれシンボリック加算、減算、乗算を表します。最後に、6 行目では、実際の値を指定して関数f()が呼び出されます。この操作の出力も図 4 に示されています。表示されている 3 つの出力マトリックスが正しいかどうかは簡単に確認できます。スカラーと行列に加えて、Tensors はベクトル、行、列テンソルのコンストラクターも提供することに注意してください。これで Theano の紹介は終わりです。確率と統計の高度なトピックについて説明するときに、Theano に戻ります。

もう少し確率論

図5: 算術平均と標準偏差

次は確率論と統計学に移ります。前回の投稿では、Wikipedia の記事を 3 つ注意深く読むことをお勧めし、その後で正規分布を紹介しました。 AI および機械学習プログラムの開発を始める前に、確率と統計の基本的な概念をいくつか確認する必要があります。最初に紹介したいのは算術平均と標準偏差です。

算術平均は、一連の数値の平均と考えることができます。標準偏差は、一連の数値の分散度合いと考えることができます。標準偏差が小さい場合、コレクション内の要素が平均に近いことを意味します。逆に、標準偏差が大きい場合は、コレクション内の要素がより広い範囲に分散されていることを意味します。 Python を使用して算術平均と標準偏差を計算する方法は? Python には、平均と標準偏差を見つけるために使用できるstatisticsと呼ばれるモジュールがあります。しかし、熟練したユーザーはこのモジュールが遅すぎると考えたため、NumPy を選択しました。

図 5 に示すコードは、2 つのリストC1C2の平均と標準偏差を出力します (2 つのリストの実際の内容は一時的に非表示にしています)。これらの値から何がわかりますか?現時点では、それらはあなたにとって単なる数字です。さて、これらのリストには、学校 A と学校 B の生徒 6 名の数学のテストのスコアがそれぞれ含まれています (満点 50 点、合格点 20 点)。平均値から、両方の学校の生徒の平均成績は悪いが、学校 B の成績は学校 A よりわずかに良いことがわかります。標準偏差から何がわかるでしょうか?学校 B の非常に大きな標準偏差は、平均値の下に隠れているものの、学校 B の教育の失敗を明らかに反映しています。理解をさらに深めるために、2つのリストの値を示します。C1 C1 =[20,22,20,22,22,20]C2 =[18,16,17,16,15,48] 。この例は、問題の複雑さに対処するには、より複雑なパラメータが必要であることを明確に示しています。確率と統計は、複雑で乱雑なデータを記述するためのより洗練されたモデルを提供します。

乱数生成は確率論の重要な部分です。しかし、実際には疑似乱数しか生成できません。疑似乱数列は、真の乱数列に似た特性を持ちます。図 6 では、疑似乱数を生成するためのいくつかの関数を紹介します。 1行目はPythonのrandomパッケージをインポートします。 2 行目では 2 つの乱数を生成し、 new_listというリストに格納します。関数random.random()乱数を生成し、コードnew_list = [random.random() for i in range(2)] Python のリスト内包構文を使用します。 3行目はこのリストを印刷します。コードが実行されるたびに出力される 2 つの乱数は変化し、同じ数字が 2 回続けて出力される確率は理論上 0 であることに注意してください。 random.choice()関数は、図 6 の 2 番目のコード セルで使用されます。この関数は、指定されたオプションから等しい確率でデータを選択します。コード スニペットrandom.choice(["Heads", "Tails"]) "Heads" と "Tails" を同じ確率で選択します。このコード行では、3 つの選択操作を連続して実行するリスト内包表記も使用されていることに注意してください。図 6 の出力から、「Tails」が 3 回選択されていることがわかります。

図6: 疑似乱数生成

ここで、確率論における有名な大数の法則の定理 xxx を簡単な例を使って説明してみましょう。大数の法則によれば、多数の実験から得られた結果の平均は期待値に近くなるはずであり、この平均は実験の数が増えるにつれて期待値にどんどん近づいていきます。公平なサイコロを投げて 6 が出る確率は 1/6 だということは誰もが知っています。この実験をシミュレートするには、図 7 の Python コードを使用します。 1行目はPythonのrandomパッケージをインポートします。 2 行目では繰り返し回数を 1000 に設定します。 3行目はカウンターct 0に初期化します。 4 行目は 1000 回繰り返すループです。 5行目のrandom.randint(1, 6)は、1から6まで(両端を含む)のランダムな整数を生成します。次に、生成された数値が 6 に等しいかどうかを確認します。等しい場合は、7 行目に進み、カウンターctを 1 増やします。ループが 1000 回繰り返された後、8 行目に、試行回数の合計に対する数字 6 の出現回数の比率が出力されます。図 7 は、比率が 0.179 であり、予想値 1/6 = 0.1666 よりもわずかに高いことを示しています。これは期待値とはかなり異なります。 2 行目のnの値を 10000 に設定し、コードを再度実行して、出力結果を確認します。期待値に近い数値が得られる可能性が高くなります (期待値よりも小さい数値になる可能性もあります)。 2 行目のnの値を増やしていくと、出力が期待値にどんどん近づいていくことがわかります。

図7: 大数の法則

大数の法則の説明は単純で飾り気がありませんが、どの数学者が大数の法則を証明したか、あるいは元の証明を改良したかを知れば、驚かれることでしょう。これらには、カルダノ、ヤコブ・ベルヌーイ、ダニエル・ベルヌーイ、ポアソン、チェビシェフ、マルコフ、ボレル、カントレー、コルモゴロフ、チンチェンなどが含まれます。彼らはそれぞれの分野における数学の巨人です。

人工知能や機械学習プログラムの開発に不可欠な、確率におけるランダム変数や確率分布などのトピックについてはまだ取り上げていません。確率と統計についての議論はまだ初期段階にあり、次の記事でさらに詳しく説明します。同時に、Pandas と TensorFlow という 2 つの古い友人と再会します。また、TensorFlow と関連が深いライブラリである Keras も紹介します。

<<:  肖陽華:数千の産業に対応する大規模モデルに向けて

>>:  2024年のビッグデータの不完全な予測

ブログ    
ブログ    
ブログ    

推薦する

NLP タスクに最適な 6 つの Python ライブラリ

この記事では、自然言語処理タスクに最適な 6 つの Python ライブラリを紹介します。初心者でも...

人工知能は標的の照準を加速し、人間と機械の統合を支援して即時攻撃を可能にします。

米国の国防月報ウェブサイトは2020年9月23日、米陸軍当局者が、8月11日から9月23日まで行われ...

再ハッシュ: ブルームフィルタアルゴリズムの実装原理を理解する

[[385658]]この記事では、広く使用されているアルゴリズムである「ブルーム フィルター アルゴ...

...

機械翻訳と人工知能が融合すると、信頼性は高まるでしょうか?

機械翻訳というと、多くの人が戸惑うでしょう。10年以上も前には、英語の文章をKingsoft Pow...

AI プロジェクトの 85% が失敗します。何が悪かったのでしょうか?

[[441161]]最近のガートナー社の 2 つのレポートによると、AI および機械学習プロジェク...

PyGWalkerを使用して表形式のデータを視覚化および分析する

導入Jupyter Notebook に大量のデータがあり、それを分析して視覚化したいとします。 P...

メタは自社の弁護士の警告を無視し、海賊版書籍を使用してAIモデルを訓練したと報じられている。

ロイター通信は12月13日、著作権侵害訴訟の新たな文書によると、メタ・プラットフォームズは何千冊もの...

多くの場所でAI顔認識の使用が制限されており、監視は技術開発のペースに追いついています

最近、南京、江蘇省、天津などではAI顔認識技術の使用を禁止し始めている。 11月末、南京市のある男性...

2024年にワイヤレス技術が接続性、効率性、消費者体験をどのように向上させるか

2024 年には、ワイヤレス テクノロジーに多くの改善がもたらされ、接続性、効率性、消費者体験が向上...

Zoomに狂った外国人がビデオ会議ロボットを開発、同僚たちはすでに大笑い

[[321983]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...

Gym Anytradingに基づく強化学習の簡単な例

強化学習 (RL) は近年、アルゴリズム取引の分野で大きな注目を集めています。強化学習アルゴリズムは...

JavaScript による機械学習の例 10 選

機械学習ライブラリは時間の経過とともに高速化と使いやすさが向上しており、開発のペースが鈍化する兆候は...

ヒューマノイドロボットはマジックを披露することができます。春節祭のスタッフにその詳細をお伝えします。

一瞬のうちに、ロボットは魔法を使うことを覚えたのでしょうか?まず、テーブルの上の水のスプーンを手に取...