人工知能(AI)は、近年かなりの人気を得ています。
あなたがソフトウェアエンジニア、コンピュータサイエンティスト、またはデータサイエンスの愛好家であるなら、おそらくこの分野で提供される画像処理、パターン認識、オブジェクト検出の驚くべきアプリケーションに興味をそそられるでしょう。
おそらく聞いたことがあるAIの最も重要なサブフィールドは、ディープラーニングです。 この分野は、人間の脳の機能をモデルにした強力なアルゴリズム(コンピュータープログラム命令)に焦点を当てています。 ニューラルネットワーク.
この記事では、ニューラルネットワークの概念と、これらのモデルを使用して構築、コンパイル、適合、評価する方法について説明します。 Python .
ニューラルネットワーク
ニューラルネットワーク(NN)は、人間の脳の生物学的活動をモデルにした一連のアルゴリズムです。 ニューラルネットワークは、ニューロンとも呼ばれるノードで構成されます。
垂直ノードの集合は、レイヤーと呼ばれます。 モデルは、XNUMXつの入力、XNUMXつの出力、およびいくつかの非表示レイヤーで構成されます。 各層は、計算が行われるニューロンとも呼ばれるノードで構成されています。
次の図では、円はノードを表し、ノードの垂直方向のコレクションはレイヤーを表します。 このモデルにはXNUMXつのレイヤーがあります。
ある層のノードは、以下に示すように、伝送線路を介して次の層に接続されています。
私たちのデータセットは、ラベル付けされたデータで構成されています。 これは、各データエンティティに特定の名前の値が割り当てられていることを意味します。
したがって、動物分類データセットの場合、データとして猫と犬の画像を使用し、ラベルとして「猫」と「犬」を使用します。
モデルでラベルを理解するには、ラベルを数値に変換する必要があることに注意してください。そのため、動物のラベルは、猫の場合は「0」、犬の場合は「1」になります。 データとラベルの両方がモデルを通過します。
学習
データは一度にXNUMXつのエンティティでモデルに送られます。 このデータはチャンクに分割され、モデルの各ノードを通過します。 ノードは、これらのチャンクに対して数学演算を実行します。
このチュートリアルでは、数学関数や計算について知る必要はありませんが、これらのモデルがどのように機能するかについての一般的な知識を持っていることが重要です。 XNUMXつのレイヤーで一連の計算を行った後、データは次のレイヤーに渡されます。
完了すると、モデルは出力レイヤーでデータラベルを予測します(たとえば、動物の分類問題では、猫の予測「0」を取得します)。
次に、モデルはこの予測値を実際のラベル値の予測値と比較します。
値が一致する場合、モデルは次の入力を受け取りますが、値が異なる場合、モデルは損失と呼ばれる両方の値の差を計算し、ノード計算を調整して次回一致するラベルを生成します。
ディープラーニングフレームワーク
コードでニューラルネットワークを構築するには、インポートする必要があります ディープラーニングフレームワーク 統合開発環境(IDE)を使用するライブラリとして知られています。
これらのフレームワークは、このチュートリアルで役立つ事前に作成された関数のコレクションです。 Kerasフレームワークを使用してモデルを構築します。
Kerasは、ディープラーニングと人工知能のバックエンドを使用するPythonライブラリです。 テンソルフロー 単純なシーケンシャルモデルの形式でNNを簡単に作成できます。
Kerasには、同様に使用できる独自の既存のモデルも付属しています。 このチュートリアルでは、Kerasを使用して独自のモデルを作成します。
このディープラーニングフレームワークの詳細については、 KerasのWebサイト.
ニューラルネットワークの構築(チュートリアル)
Pythonを使用したニューラルネットワークの構築に移りましょう。
問題提起
ニューラルネットワークは、AIベースの問題に対するソリューションの一種です。 このチュートリアルでは、利用可能なピマインディアン糖尿病データについて説明します。 こちら.
UCI 機械学習はこのデータセットをコンパイルしました インドの患者の医療記録が含まれています。 私たちのモデルは、患者が5年以内に糖尿病を発症するかどうかを予測する必要があります。
データセットの読み込み
私たちのデータセットは、MicrosoftExcelを使用して簡単に操作できる「diabetes.csv」と呼ばれる単一のCSVファイルです。
モデルを作成する前に、データセットをインポートする必要があります。 次のコードを使用して、これを行うことができます。
パンダをpdとしてインポート
data = pd.read_csv('diabetes.csv')
x = data.drop( "結果")
y = data [“ Outcome”]
ここでは、 パンダ CSVファイルデータを操作できるライブラリであるread_csv()は、Pandasの組み込み関数であり、ファイル内の値を「data」という変数に格納できます。
変数xには、結果(ラベル)データのないデータセットが含まれています。 これは、xのラベルを削除するdata.drop()関数を使用して実現しますが、yには結果(ラベル)データのみが含まれます。
シーケンシャルモデルの構築
ステップ1:ライブラリをインポートする
まず、モデルに必要な特定のパラメーターとともに、TensorFlowとKerasをインポートする必要があります。 次のコードを使用すると、これを実行できます。
tensorflowをtfとしてインポートする
tensorflowからインポートケラス
tensorflow.keras.modelsからインポートシーケンシャル
tensorflow.keras.layersからActivation、Denseをインポートします
tensorflow.keras.optimizersからAdamをインポートします
tensorflow.keras.metricsからimportcategorical_crossentropy
このモデルでは、密なレイヤーをインポートしています。 これらは完全に接続されたレイヤーです。 つまり、レイヤー内の各ノードは、次のレイヤー内の別のノードと完全に接続されています。
輸入も行っております アクティベーション ノードに送信されるデータをスケーリングするために必要な機能。 オプティマイザ 損失を最小限に抑えるために輸入されています。
Adamは、モデル更新ノードの計算をより効率的にする有名なオプティマイザーです。 categorical_crossentropyは 使用する損失関数のタイプ(実際のラベル値と予測されたラベル値の差を計算します)。
ステップ2:モデルの設計
私が作成しているモデルには、16つの入力(32ユニット)、2つの非表示(XNUMXユニット)、およびXNUMXつの出力(XNUMXユニット)のレイヤーがあります。 これらの数値は固定されておらず、特定の問題に完全に依存します。
ユニットとレイヤーの適切な数を設定することは、練習を通じて時間の経過とともに改善できるプロセスです。 アクティベーションは、データをノードに渡す前にデータに対して実行するスケーリングのタイプに対応します。
ReluとSoftmaxは、このタスクの有名な活性化関数です。
モデル=シーケンシャル([
Dense(units = 16、input_shape =(1、)、activation ='relu')、
Dense(units = 32、activation ='relu')、
Dense(units = 2、activation ='softmax')
])
モデルの概要は次のようになります。
モデルのトレーニング
モデルはXNUMXつのステップでトレーニングされます。最初のステップはモデルのコンパイル(モデルをまとめる)であり、次のステップは特定のデータセットにモデルを適合させることです。
これは、model.compile()関数の後にmodel.fit()関数を使用して実行できます。
model.compile(optimizer = Adam(learning_rate = 0.0001)、loss ='binary_crossentropy'、metrics = ['accuracy'])
model.fit(x、y、エポック= 30、batch_size = 10)
'accuracy'メトリックを指定すると、トレーニング中にモデルの精度を観察できます。
ラベルは1と0の形式であるため、バイナリ損失関数を使用して、実際のラベルと予測されたラベルの差を計算します。
データセットも10のバッチ(batch_size)に分割されており、モデルを30回(エポック)通過します。 特定のデータセットの場合、xはデータであり、yはデータに対応するラベルです。
予測を使用したモデルのテスト
モデルを評価するために、predict()関数を使用してテストデータの予測を行います。
予測=model.predict(x)
以上です!
これで、 深層学習 アプリケーション、ニューラルネットワーク、それらが一般的にどのように機能するか、Pythonコードでモデルを構築、トレーニング、テストする方法。
このチュートリアルが、独自のディープラーニングモデルを作成してデプロイするためのキックスタートになることを願っています。
記事が役に立ったかどうかコメントでお知らせください。
コメントを残す