近年、ニューラル ネットワークは幅広いタスクに非常に優れていることが示されているため、人気が高まっています。
それらは、画像と音声の認識、自然言語処理、さらには囲碁やチェスのような複雑なゲームをプレイするための優れた選択肢であることが示されています.
この投稿では、ニューラル ネットワークをトレーニングするプロセス全体について説明します。 ニューラル ネットワークをトレーニングするためのすべての手順について言及し、説明します。
手順を説明しますが、簡単な例を追加して、実用的な例も確実にあるようにしたいと思います。
それでは、ニューラル ネットワークの処理方法を学びましょう。
簡単に始めて、何が何であるかを尋ねましょう ニューラルネットワーク 最初の場所インチ
ニューラル ネットワークとは正確には何ですか?
ニューラル ネットワークは、人間の脳の動作をシミュレートするコンピューター ソフトウェアです。 膨大な量のデータから学習し、人々が検出するのが難しいと思われるパターンを見つけることができます。
ニューラル ネットワークは、画像や音声の認識、自然言語処理、予測モデリングなどのタスクで多用途に使用できるため、近年人気が高まっています。
全体として、ニューラル ネットワークは幅広いアプリケーションに対応する強力なツールであり、さまざまな仕事への取り組み方を変えるチャンスがあります。
それらについて知っておくべき理由
ニューラル ネットワークは、コンピューター ビジョン、音声認識、自然言語処理など、さまざまな分野での発見につながっているため、理解することは非常に重要です。
たとえば、ニューラル ネットワークは、自動運転車、自動翻訳サービス、さらには医療診断における最近の開発の中心となっています。
ニューラル ネットワークがどのように機能し、どのように設計するかを理解することは、新しく独創的なアプリケーションを構築するのに役立ちます。 そして、ひょっとしたら将来、さらに大きな発見につながるかもしれません。
チュートリアルに関する注意
上で述べたように、例を挙げてニューラル ネットワークのトレーニング手順を説明したいと思います。 これを行うには、MNIST データセットについて説明する必要があります。 これは、ニューラル ネットワークを始めたい初心者に人気のある選択肢です。
MNIST は、Modified National Institute of Standards and Technology の頭字語です。 これは、機械学習モデル、特にニューラル ネットワークのトレーニングとテストに一般的に使用される手書きの数字データセットです。
このコレクションには、70,000 から 0 までの手書き数字のグレースケール写真が 9 枚含まれています。
MNIST データセットは、一般的なベンチマークです。 画像分類 タスク。 コンパクトで扱いやすいため、教育や学習によく使用されますが、機械学習アルゴリズムが答えるのが難しい課題があります。
MNIST データセットは、TensorFlow、Keras、PyTorch など、いくつかの機械学習フレームワークとライブラリでサポートされています。
MNIST データセットについて理解したところで、ニューラル ネットワークのトレーニング手順を開始しましょう。
ニューラル ネットワークをトレーニングするための基本的な手順
必要なライブラリをインポートする
ニューラル ネットワークのトレーニングを初めて開始するときは、モデルの設計とトレーニングに必要なツールを用意することが重要です。 ニューラル ネットワークを作成する最初のステップは、TensorFlow、Keras、NumPy などの必要なライブラリをインポートすることです。
これらのライブラリは、ニューラル ネットワークの開発のビルディング ブロックとして機能し、重要な機能を提供します。 これらのライブラリを組み合わせることで、高度なニューラル ネットワーク設計と高速トレーニングを作成できます。
例を始めます。 TensorFlow、Keras、および NumPy を含む必要なライブラリをインポートします。 TensorFlow はオープンソースの機械学習フレームワーク、Keras は高レベルのニューラル ネットワーク API、NumPy は数値計算 Python ライブラリです。
import tensorflow as tf
from tensorflow import keras
import numpy as np
データセットをロードする
データセットをロードする必要があります。 データセットは、ニューラル ネットワークがトレーニングされるデータのセットです。 これは、写真、音声、テキストなど、あらゆる種類のデータである可能性があります。
データセットを XNUMX つの部分に分割することが重要です。XNUMX つはニューラル ネットワークのトレーニング用で、もう XNUMX つはトレーニング済みモデルの正確性を評価するためです。 データセットのインポートには、TensorFlow、Keras、PyTorch などのいくつかのライブラリを使用できます。
この例では、Keras を使用して MNIST データセットを読み込みます。 データセットには 60,000 枚のトレーニング写真と 10,000 枚のテスト画像があります。
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
データの前処理
データの前処理は、ニューラル ネットワークのトレーニングにおける重要な段階です。 データをニューラル ネットワークに入力する前に、データの準備とクリーニングを行う必要があります。
ピクセル値のスケーリング、データの正規化、ワンホット エンコーディングへのラベルの変換は、前処理手順の例です。 これらのプロセスは、ニューラル ネットワークがより効果的かつ正確に学習するのを支援します。
データの前処理は、過剰適合を最小限に抑え、ニューラル ネットワークのパフォーマンスを向上させるのにも役立ちます。
ニューラル ネットワークをトレーニングする前に、データを前処理する必要があります。 これには、ラベルをワンホット エンコーディングに変更し、ピクセル値を 0 から 1 の間にスケーリングすることが含まれます。
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = keras.utils.to_categorical(train_labels, 10)
test_labels = keras.utils.to_categorical(test_labels, 10)
モデルを定義する
ニューラル ネットワーク モデルを定義するプロセスには、層の数、層ごとのニューロンの数、活性化関数、およびネットワークの種類 (フィードフォワード、再帰、または畳み込み) などのアーキテクチャの確立が含まれます。
使用するニューラル ネットワークの設計は、解決しようとしている問題の種類によって決まります。 明確に定義されたニューラル ネットワークの設計は、ニューラル ネットワークの学習をより効率的かつ正確にすることで支援できます。
この時点で、ニューラル ネットワーク モデルについて説明します。 この例では、それぞれが 128 個のニューロンを持つ 10 つの隠れ層と、XNUMX 個のニューロンを持つソフトマックス出力層を持つ単純なモデルを使用します。
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
モデルをコンパイルする
損失関数、オプティマイザー、およびメトリックは、ニューラル ネットワーク モデルのコンパイル中に指定する必要があります。 出力を正しく予測するニューラル ネットワークの能力は、損失関数によって測定されます。
トレーニング中のニューラル ネットワークの精度を高めるために、オプティマイザーはその重みを変更します。 トレーニング中のニューラル ネットワークの有効性は、メトリックを使用して測定されます。 ニューラル ネットワークをトレーニングする前に、モデルを作成する必要があります。
この例では、モデルを構築する必要があります。
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
モデルをトレーニングする
準備されたデータセットをニューラル ネットワークに渡しながら、ネットワークの重みを変更して損失関数を最小化することを、ニューラル ネットワークのトレーニングと呼びます。
検証データセットは、トレーニング中にニューラル ネットワークをテストして、その有効性を追跡し、過剰適合を防ぐために使用されます。 トレーニング プロセスには時間がかかる場合があるため、ニューラル ネットワークが適切にトレーニングされ、適合不足を防ぐことが重要です。
トレーニング データを使用して、モデルをトレーニングできるようになりました。 これを行うには、バッチ サイズ (モデルが更新される前に処理されるサンプルの数) とエポックの数 (完全なデータセット全体での繰り返しの数) を定義する必要があります。
model.fit(train_images, train_labels, epochs=10, batch_size=32)
モデルの評価
テスト データセットでニューラル ネットワークのパフォーマンスをテストすることは、それを評価するプロセスです。 この段階では、トレーニング済みのニューラル ネットワークを使用してテスト データセットを処理し、精度を評価します。
ニューラル ネットワークが真新しい未試行のデータから適切な結果をどれだけ効果的に予測できるかが、その精度の尺度になります。 モデルを分析すると、ニューラル ネットワークがどの程度うまく機能しているかを判断し、さらに改善する方法を提案するのに役立ちます。
最終的に、トレーニング後のテスト データを使用して、モデルのパフォーマンスを評価できます。
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
それで全部です! MNIST データセットで数字を検出するようにニューラル ネットワークをトレーニングしました。
データの準備からトレーニング済みモデルの有効性の評価まで、ニューラル ネットワークのトレーニングにはいくつかのプロセスが含まれます。 これらの手順は、初心者がニューラル ネットワークを効率的に構築およびトレーニングするのに役立ちます。
ニューラル ネットワークを使用してさまざまな問題に取り組みたい初心者は、次の手順に従ってください。
例の視覚化
理解を深めるために、この例で行ったことを視覚化してみましょう。
このコード スニペットでは、Matplotlib パッケージを使用して、トレーニング データセットからランダムに選択した写真をプロットします。 まず、Matplotlib の「pyplot」モジュールをインポートし、「plt」としてエイリアスします。 次に、合計 10 x 10 インチの寸法で、5 行 5 列のサブプロットを含む図を作成します。
次に、for ループを使用してサブプロットを反復処理し、トレーニング データセットの画像をそれぞれに表示します。 画像を表示するには、「imshow」関数を使用し、「cmap」オプションを「gray」に設定して写真をグレースケールで表示します。 各サブプロットのタイトルも、コレクション内の関連する画像のラベルに設定されます。
最後に、「show」関数を使用して、図にプロットされた画像を表示します。 この機能により、データセットからの写真のサンプルを視覚的に評価できます。これは、データの理解と考えられる懸念の特定に役立ちます。
import matplotlib.pyplot as plt
# Plot a random sample of images
fig, axes = plt.subplots(nrows=5, ncols=5, figsize=(10,10))
for i, ax in enumerate(axes.flat):
ax.imshow(train_images[i], cmap='gray')
ax.set_title(f"Label: {train_labels[i].argmax()}")
ax.axis('off')
plt.show()
重要なニューラル ネットワーク モデル
- フィードフォワード ニューラル ネットワーク (FFNN): 入力層から XNUMX つまたは複数の隠れ層を経由して出力層へ一方向に情報が移動する単純なタイプのニューラル ネットワーク。
- 畳み込みニューラル ネットワーク (CNN): 画像の検出と処理で一般的に使用されるニューラル ネットワーク。 CNN は、画像から特徴を自動的に認識して抽出することを目的としています。
- リカレント ニューラル ネットワーク (RNN): 画像の検出と処理で一般的に使用されるニューラル ネットワーク。 CNN は、画像から特徴を自動的に認識して抽出することを目的としています。
- 長短期記憶 (LSTM) ネットワーク: 標準 RNN で勾配が消失する問題を克服するために作成された RNN の形式。 シーケンシャル データの長期的な依存関係は、LSTM でより適切にキャプチャできます。
- オートエンコーダー: 出力層で入力データを再現するようにネットワークに学習させる教師なし学習ニューラル ネットワーク。 データ圧縮、異常検出、および画像のノイズ除去はすべて、オートエンコーダーで実現できます。
- 敵対的生成ネットワーク (GAN): ジェネレーティブ ニューラル ネットワークは、トレーニング データセットに匹敵する新しいデータを生成するように教えられるニューラル ネットワークの形式です。 GAN は、新しいデータを作成する生成ネットワークと、作成されたデータの品質を評価する識別ネットワークの XNUMX つのネットワークで構成されています。
まとめ、次のステップは何ですか?
ニューラル ネットワークのトレーニングの詳細については、いくつかのオンライン リソースとコースを参照してください。 プロジェクトや例に取り組むことは、ニューラル ネットワークをよりよく理解するための XNUMX つの方法です。
バイナリ分類問題や画像分類タスクなどの簡単な例から始めて、自然言語処理や画像分類などのより難しいタスクに進みます。 強化学習.
プロジェクトに取り組むことで、実際の経験を積み、ニューラル ネットワークのトレーニング スキルを向上させることができます。
オンラインの機械学習やニューラル ネットワークのグループやフォーラムに参加して、他の学習者や専門家と交流したり、作品を共有したり、コメントやヘルプを受け取ったりすることもできます。
LSRS モンラッド クローン
⁶ĵエラーを最小限に抑えるための Python プログラムを見たかったです。次のレイヤーへのウェイト変更のための特別な選択ノード