ニューラルネットワークはどのように機能するのでしょうか? | JDクラウド技術チーム

プログラマーとして、私たちは使用するツールやミドルウェアの基礎となる原理を理解することに慣れています。この記事は、AI モデルの基礎となるメカニズムを理解し、さまざまな大規模なモデルをより快適に、より適切に学習できるようにすることを目的としています。 . AIの基礎を持たない友人。

1. GPTとニューラルネットワークの関係

GPT については誰もがよく知っているはずです。GPT と話すとき、私たちは通常、自分が尋ねた質問 (入力) と GPT によって与えられた答え (出力) に注意を払うだけで済みます。出力コンテンツがどのように生成されるかについては何も知りません。まるで謎のブラックボックス。

GPT は、ニューラル ネットワークに基づく自然言語処理 (NLP) モデルです。大量のデータを使用してニューラル ネットワークに入力し、モデルの出力がある程度の期待を満たすまでモデルをトレーニングします。成熟したモデルは、次のことができます。ユーザー入力を受け取り、入力内の重要な情報に対して「考え抜かれた」回答を返します。GPT がどのように「考える」かを理解するには、おそらくニューラル ネットワークから始めることができます。

2. ニューラルネットワークとは何ですか?

では、ニューラル ネットワークとは一体何でしょうか? 言い換えれば、なぜニューラルネットワークなのか?

高校生物学では、人間の神経系は接続された数億個のニューロンで構成されていると教えられます。これらは、細胞体、樹状突起、軸索などの主要な構造を持つ生体細胞です。異なるニューロン間の接続は樹状突起であり、軸索は他のニューロンに接続されていますニューロンはシナプスを介して結合し、人間の脳内に複雑な神経ネットワークを形成します。

 

機械に人間に近い知能を獲得させるために、人工知能は人間の脳の思考プロセスを模倣しようとし、人間の脳のニューロン間の相互接続を模倣するコンピューティングモデル、つまりニューラルネットワークを作成します。これは複数のニューロン層で構成されており、各層が入力を受け取り、対応する出力を生成します。上記の定義に従って、図 1 のブラック ボックスの内部構造が形になり始めています。下図の各円はニューロンを表します。ニューロンは計算能力を持ち、計算結果を次のニューロンに渡すことができます。

 

生物学では、脳の構造が単純であればあるほど知能は低くなり、それに応じて神経系が複雑であればあるほど、処理できる問題が多くなり、知能は高くなります。人工ニューラルネットワークも同様で、ネットワーク構造が複雑になるほど計算能力が強力になるため、ディープニューラルネットワークが開発されてきました。複数の隠れ層 (つまり、上図の縦方向ニューロンの層の数) があるため、「深い」と呼ばれます。従来の浅いニューラル ネットワークと比較して、ディープ ニューラル ネットワークはより多くの階層構造を持っています。

ディープ ニューラル ネットワークをトレーニングするプロセスはディープ ラーニングと呼ばれます。ディープ ニューラル ネットワークを構築した後は、トレーニング データをニューラル ネットワークに入力するだけで、ニューラル ネットワークはデータ内の特徴を自発的に学習します。たとえば、猫を認識するようにディープ ニューラル ネットワークをトレーニングしたい場合、さまざまな種類、姿勢、外観の大量の猫の写真をニューラル ネットワークに入力して学習させるだけです。トレーニングが成功した後、任意の画像をニューラル ネットワークに入力すると、その中に猫がいるかどうかがわかります。

3. ニューラル ネットワークはどのように計算しますか?

ニューラル ネットワークとは何か、そしてその基本構造はわかったところで、ニューラル ネットワーク内のニューロンはどのようにして入力データを計算するのでしょうか?

その前に、「データはどのようにしてニューラル ネットワークに入力されるのでしょうか?」という疑問を解決する必要があります。以下では、例として画像タイプとテキストタイプのデータを使用します。

データがニューラル ネットワークに供給される仕組み

1. 画像入力処理

写真を想像してください。写真をある程度拡大すると、小さな正方形が次々に見えます。この小さな正方形はピクセルと呼ばれ、画像のピクセル数が多いほど、ピクセル数が高く、画像が鮮明になります。各ピクセルは 1 つの色だけで構成されています。光学の 3 原色には赤、緑、青が含まれます。他のすべての色は、これら 3 つの色をさまざまな程度に混合することで生成できます。RGB モデルでは、各色の強度は通常 0 ~ 255 の数値で表すことができます。赤の強度値 0 は赤色光がないことを意味し、255 は赤色光の最大強度を意味します。緑と青の強度値は類似しています。

画像を保存するために、コンピューターは画像の赤、緑、青の色の強度に対応する 3 つの別々の行列を保存します。画像のサイズが 256 * 256 ピクセルの場合、コンピューターで画像を表すために 3 つの 256 * 256 行列 (2 次元配列) を使用できます。3 つのマトリックスで表される色が重なって積み重なり、画像の元の外観が現れると想像できます。

画像がコンピューター内でどのように表現されるかがわかったので、それをニューラル ネットワークにどのように入力すればよいでしょうか?

通常、上記の 3 つの行列をベクトルに変換します。これは、1 * n (行ベクトル) または n * 1 (列ベクトル) の配列として理解できます。このベクトルの合計次元は 256 * 256 * 3 となり、結果は 196608 になります。人工知能の分野では、ニューラルネットワークに入力される各データを特徴と呼びます。つまり、上の画像には 196608 個の特徴があります。この 196608 次元のベクトルは特徴ベクトルとも呼ばれます。ニューラル ネットワークは、この特徴ベクトルを入力として受け取り、予測を行って、対応する結果を返します。

2. 文字入力処理

テキストは一連の文字で構成されています。まず、テキストを意味のある単語に分割する必要があります。このプロセスは単語分割と呼ばれます。単語の分割後、出現するすべての単語または高頻度の単語から構成される語彙を構築します (既存の語彙を使用することもできます)。語彙内の各単語には一意のインデックスが割り当てられ、テキストがニューラル ネットワークで処理できる個別の記号シーケンスに変換されます。テキストのシンボルのシーケンスは通常、ニューラル ネットワークに入力される前に密なベクトル表現に変換されます。

「ニューラル ネットワークはどのように機能しますか?」というテキストを例として取り上げます。

  • 分词:[「どのように」、「何をする」、「ニューラル」、「ネットワーク」、「動作」]
  • 語彙の構築: {「方法」: 0、「実行」: 1、「ニューラル」: 2、「ネットワーク」: 3、「作品」: 4}
  • シリアル化されたテキスト データ: ["how"、"does"、"neural"、"network"、"works"] -->[0, 1, 2, 3, 4]
  • ベクトル化:
#此处以one-hot向量表示法为例:
[[1, 0, 0, 0, 0]
 [0, 1, 0, 0, 0]
 [0, 0, 1, 0, 0]
 [0, 0, 0, 1, 0]
 [0, 0, 0, 0, 1]]

最後に、ベクトル シーケンスはトレーニングまたは予測のためのニューラル ネットワークへの入力として使用されます。

これまでのところ、データがどのようにニューラル ネットワークに入力されるかはすでにわかっています。では、ニューラル ネットワークはこのデータに基づいてどのようにトレーニングされるのでしょうか?

ニューラルネットワークが予測を行う仕組み

まず、モデルのトレーニングと予測の違いを明確にします: トレーニングとは、入力と出力の関係を学習できるように、既知のデータ セットを使用してモデルのパラメーターを調整することを指します。予測とは、トレーニングされたモデルを使用して新しいデータを予測することを指します。予測を行うためのデータ。

ニューラル ネットワークの予測は、実際には非常に単純な線形変換式に基づいています。

 

このうち、xは特徴ベクトル、wは各入力特徴の重要性を示す特徴ベクトルの重み、bは予測結果に影響を与えるために使用されるしきい値を表します。式中の dot() 関数は、wとxのベクトル乗算を意味します。例: 入力データにi 個の特徴がある場合、式に代入した結果は次のようになります。

この式をどう理解すればいいでしょうか?週末に公園でボート遊びに行くかどうか決める必要があるとします。あなたは迷っているので、その決定を支援するニューラル ネットワークが必要です。ボート遊びに行くかどうかを決める要素は、天気が晴れて暖かいかどうか、場所が便利かどうか、そして旅行会社が​​適切かどうかの3つです。実際のところ、当日の天気は曇り時々突風、場所は20km離れた郊外、遊び相手はずっと憧れていたイケメンでした。これら 3 つの要素は、入力データの特徴ベクトル x=[x1, x2, x3] です。特徴が結果に与える影響に応じて特徴値を設定する必要があります。たとえば、「悪天候」と「」 「遠隔地」は結果にマイナスの影響を与えます。影響がある場合は、-1 に設定できます。「遊び相手は、私が長年憧れていたハンサムな男性です」は、明らかに結果に大きなプラスの影響を与えます。これを 1 に設定できます。 、つまり、特徴ベクトル x=[-1, -1, 1]。次に、好みに応じて 3 つの特徴の重み、つまり各要素が最終的な決定にどの程度影響するかを設定する必要があります。天気や場所を気にせず、イケメンと一緒に歩いていれば雨が降っても晴れても大丈夫という場合は、重みを w=[1, 1, 5] に設定できます。怠惰な犬の場合は、重みを w=[2, 6, 3] に設定できます; つまり、重みは対応する特徴の重要性に基づいて決定されます。

最初の重みセット w=[1, 1, 5] を選択し、特徴ベクトルは x=[-1, -1, 1] で、しきい値 b=1 を設定します。結果 z ≥ 0 が次を意味すると仮定します。 、z < 0 は、「行かない場合は、予測結果を計算する」という意味です z = (x1*w1 + x2*w2 + x3*w3) + b = 4 > 0 したがって、ニューラル ネットワークによって与えられる予測結果は次のようになります。公園でボート遊びに行きます。

上記で使用した式

 

本質的には、入力データをバイナリ分類確率出力にマッピングするために使用されるロジスティック回帰です。ロジスティック回帰では通常、特定の活性化関数を使用して、 z値から [0, 1] へのマッピング関係、つまりシグモイド関数を使用します。これは、線形変換の結果を非線形マッピングを通じて確率値に変換します。一般に、0.5 以上の確率値はポジティブ クラスとみなされ、0.5 未満の確率値はネガティブ クラスとみなされます。

シグモイド関数の計算式とイメージは以下のとおりです。

 

結果の出力範囲を 0 から 1 の間で制御することに加えて、シグモイド関数 (または他の活性化関数) のもう 1 つの重要な役割は、線形変換の結果に対して非線形マッピングを実行して、ニューラル ネットワークがより複雑な非線形を学習して表現できるようにすることです。人間関係。活性化関数がないと、ニューラル ネットワークは単純な線形問題しか解決できませんが、活性化関数を追加すると、十分な層がある限り、ニューラル ネットワークはすべての問題を解決できるため、活性化関数は不可欠です。

ニューラルネットワークが学習する仕組み

予測結果を取得した後、ニューラル ネットワークは損失関数を使用して予測結果が正しいかどうかを判断し、精度が十分でない場合はニューラル ネットワーク自身を調整する、これが学習プロセスです。

損失関数は、モデルの予測と真のラベル間の誤差を測定します。損失関数は、予測値を真の値と比較することにより、モデルの現在の予測パフォーマンスを反映する数値指標を提供します。損失値が小さいほどモデルの予測結果が真のラベルに近いことを示し、損失値が大きいほど予測誤差が大きいことを示します。以下に、バイナリ分類問題で一般的に使用される損失関数 (対数損失) を紹介します。

ニューラル ネットワーク学習の目的は、モデルのパラメーターを調整して損失関数を最小化し、それによってモデルの予測パフォーマンスを向上させることです。このプロセスはモデル トレーニングとも呼ばれます。勾配降下法アルゴリズムは、この問題を解決できます。このアルゴリズムを通じて、適切なw (特徴の重み) とb (しきい値) が見つかります。勾配降下法アルゴリズムは、 wbの値を段階的に変更します。は、損失関数の結果がますます大きくなり、小さいほど予測結果の精度が高くなります。

ここで注意する必要があるのは、学習率の設定が小さすぎると、最低点に到達するまでに複数回の勾配降下が必要となり、マシン実行リソースの無駄になることです。設定が大きすぎると、最低点が低くなる可能性があります。を見逃して図の左側の点に直接到達したため、実際の状況に基づいて正しい学習率を選択する必要があります。

ニューラル ネットワークの計算プロセスには、順伝播と逆伝播という 2 つの主なステップがあります。順伝播は、入力特徴の重み付き合計と活性化関数による非線形変換の前述のプロセスであるニューロンの出力を計算するために使用され、逆伝播は、モデル パラメーターに関する損失関数を計算することにより、最適化モデル パラメーターを更新するために使用されます。 . 出力層から入力層に勾配を逆伝播するプロセス (逆伝播には多くの数学的計算が含まれます。興味のある読者は詳細を学ぶことができます)。

4. 概要

要約すると、ニューラル ネットワークのトレーニングと学習のプロセスは、実際には、モデル パラメーターを継続的に最適化し、予測損失値を削減するプロセスです。十分なトレーニングの後、モデルは入力データから効果的な特徴表現と重みの割り当てを学習できるため、目に見えないデータに対して正確な予測を行うことができます。トレーニングされたニューラル ネットワーク モデルは、さまざまな実際的な問題に適用できます。たとえば、画像分類タスクでは、畳み込みニューラル ネットワークが入力画像の特性に基づいてオブジェクトやパターンを自動的に識別できます。自然言語処理タスクでは、リカレント ニューラル ネットワークがテキストを理解して生成できます。レコメンデーション システムでは、多層パーセプトロン ニューラル ネットワークが使用されます。ネットワークは、ユーザーの過去の行動に基づいてパーソナライズされた推奨事項を作成できます。

この記事ではニューラルネットワークの仕組みを浅く説明していますが、もし間違っているところがあれば、ぜひご指摘ください。

5. 引用

https://cloud.tencent.com/developer/article/1384762

http://zhangtielei.com/posts/blog-nn-visualization.html

https://blog.csdn.net/pingchangxin_6/article/details/79754384

ps: 専門用語の一部の定義は GPT-3.5-turbo から来ています

著者: JD Retail 欧陽周瑜

出典:JD Cloud Developer Community 転載の際は出典を明記してください

IntelliJ IDEA 2023.3 と JetBrains Family Bucket の年次メジャー バージョン アップデート 新しいコンセプト「防御型プログラミング」: 安定した仕事に就く GitHub.com では 1,200 を超える MySQL ホストが稼働していますが、8.0 にシームレスにアップグレードするにはどうすればよいですか? Stephen Chow の Web3 チームは来月、独立したアプリをリリースする予定ですが、 Firefox は廃止されるのでしょうか? Visual Studio Code 1.85 リリース、フローティング ウィンドウ Yu Chengdong: ファーウェイは来年破壊的な製品を発売し、業界の歴史を書き換えるだろう 米国 CISA はメモリ セキュリティの脆弱性を排除するために C/C++ の廃止を勧告 TIOBE 12 月: C# がプログラミングになると予想30年前 雷軍が書いた論文「コンピュータウイルス判定エキスパートシステムの原理と設計」
{{名前}}
{{名前}}

Supongo que te gusta

Origin my.oschina.net/u/4090830/blog/10320660
Recomendado
Clasificación