あなたの目の前に表示されている画像の人物は現実には存在しません。実は、機械学習モデルによって作成された仮想キャラクターなのです。この写真はWikipediaのGANのエントリから引用したものです。写真にはディテールが豊富で、色彩もリアルで印象的です。 生成的敵対的ネットワーク (GAN) は、広告、ゲーム、エンターテイメント、メディア、製薬などの業界で広く使用されている生成機械学習モデルです。架空のキャラクターやシーンの作成、顔の老化のシミュレーション、画像スタイルの変換、化学式の生成などに使用できます。次の 2 つの図は、画像から画像への変換の効果と、セマンティック レイアウトに基づいてシーンを合成する効果を示しています。 この記事では、エンジニアリングの実践の観点から、PyTorch 機械学習フレームワークに基づく AWS 機械学習関連のクラウドコンピューティングサービスを利用して、最初の生成的敵対ネットワークを構築し、新しい興味深い機械学習と人工知能の体験を切り開く方法を読者に紹介します。 何を待っていますか?今すぐ始めましょう! メインコンテンツ
トピックとプロジェクトの概要以下に示す 2 セットの手書きデジタル画像のうち、どちらがコンピューターで生成された「手書き」フォントであるかを識別できますか? この記事のトピックは、機械学習の手法を使用して「手書きを模倣する」ことです。このトピックを完了するには、生成的敵対ネットワークの設計と実装を実際に体験する必要があります。 「手書きフォントの模倣」と肖像画生成の基本原理とエンジニアリングプロセスは基本的に一致しています。複雑さと精度の要件には一定のギャップがありますが、「手書きフォントの模倣」の問題を解決することで、生成的敵対ネットワークの原理とエンジニアリングの実践の基礎を築き、徐々により複雑で高度なネットワークアーキテクチャとアプリケーションシナリオを試して探求することができます。 生成的敵対的ネットワーク (GAN) は、2014 年に Ian Goodfellow らによって提案されました。生成ネットワークと識別ネットワークで構成されるディープ ニューラル ネットワーク アーキテクチャです。生成ネットワークは「偽の」データを生成し、識別ネットワークを欺こうとします。識別ネットワークは生成されたデータを認証し、すべての「偽の」データを正しく識別しようとします。トレーニング反復プロセス中、2 つのネットワークは進化と競争を続け、均衡状態 (参照: ナッシュ均衡) に達し、判別ネットワークが「誤った」データを認識できなくなり、トレーニングが終了します。 2016 年、Alec Radford らは「Deep Convolutional Generative Adversarial Networks」(DCGAN) と題した論文を発表しました。この論文は、畳み込みニューラル ネットワークを生成的敵対ネットワークのモデル アルゴリズム設計に適用する先駆的な手法であり、完全接続層を置き換えて、画像シーンにおけるトレーニングの安定性を向上させました。 Amazon SageMaker は、AWS の完全マネージド型機械学習サービスです。Amazon SageMaker を使用すると、データ処理と機械学習のトレーニングを迅速かつ簡単に完了でき、トレーニング済みのモデルを完全マネージド型の本番環境に直接デプロイできます。 Amazon SageMaker は、ホストされた Jupyter Notebook インスタンスを提供し、SageMaker SDK を通じてさまざまな AWS クラウドサービスと統合し、探索や分析のためにデータソースに簡単にアクセスできるようにします。 SageMaker SDK は、Amazon SageMaker やその他の AWS クラウドサービスによって提供されるマネージドコンテナイメージ (コンピューティングリソースやストレージリソースなど) を有効に活用するのに役立つオープンソースの Amazon SageMaker 開発キットです。 上の図に示すように、トレーニング データは Amazon S3 ストレージ バケットから取得されます。トレーニング フレームワークと管理アルゴリズムはコンテナ イメージとして提供され、トレーニング中にコードと結合されます。モデル コードは Amazon SageMaker によってホストされるコンピューティング インスタンスで実行され、トレーニング中にデータと結合されます。トレーニング出力は専用の Amazon S3 ストレージ バケットに格納されます。以下の説明では、SageMaker SDK を通じてこれらのリソースを使用する方法を学習します。 Amazon SageMaker、Amazon S3、Amazon EC2 などの AWS サービスを使用するため、一定のクラウドリソース使用料が発生します。 モデル開発環境ノートブックインスタンスを作成するAmazon SageMaker ダッシュボードを開き (北京リージョン | 寧夏リージョンをクリック)、ノートブックインスタンスボタンをクリックしてノートブックインスタンスリストにアクセスします。 Amazon SageMaker を初めて使用する場合は、ノートブックインスタンスのリストは空になります。新しい Jupyter Notebook インスタンスを作成するには、 [ノートブックインスタンスの作成]ボタンをクリックする必要があります。 ノートブックインスタンスの作成ページに入ったら、ノートブックインスタンス名フィールドにインスタンス名を入力してください。この記事ではインスタンス名として MySageMakerInstance を使用します。適切と思われる任意の名前を選択できます。この記事ではデフォルトのインスタンス タイプを使用するため、ノートブック インスタンス タイプオプションは *ml.t2.medium* のままになります。 Amazon SageMaker を初めて使用する場合は、ノートブックインスタンスが Amazon S3 サービスにアクセスできるように IAM ロールを作成する必要があります。 IAM ロールセクションで、「新しいロールの作成」をクリックします。 Amazon SageMaker は必要な権限を持つロールを作成し、作成中のインスタンスにこのロールを割り当てます。また、実際の状況に応じて、既存のロールを選択することもできます。 「IAM ロールの作成」ポップアップ ウィンドウで、*任意の S3 バケット* を選択すると、ノートブック インスタンスがアカウント内のすべてのバケットにアクセスできるようになります。または、必要に応じて「特定の S3 バケット」を選択し、バケット名を入力することもできます。 「ロールの作成」ボタンをクリックすると、新しいロールが作成されます。 この時点で、Amazon SageMaker が * のような名前のファイルを作成したことがわかります。 ノートブックインスタンスページに戻ると、MySageMakerInstance ノートブックインスタンスが Pending 状態で表示されていることがわかります。この状態は、InService 状態に変わるまで約 2 分間続きます。 コードの最初の行を書く「Open JupyterLab」リンクをクリックします。新しいページに、使い慣れた Jupyter Notebook 読み込みインターフェースが表示されます。この記事では、エンジニアリング環境としてデフォルトで JupyterLab ノートブックを使用します。必要に応じて、従来の Jupyter ノートブックを使用することもできます。 ノートブックアイコンのconda_pytorch_p36をクリックすると、Untitled.ipynb というノートブックが作成されます。名前は後で変更できます。あるいは、[ファイル] > [新規] > [ノートブック] メニュー パスからこのノートブックを作成し、カーネルとして conda_pytorch_p36 を選択することもできます。 新しく作成されたUntitled.ipynbノートブックに、次の最初のコマンド行を入力します。
ソースコードのダウンロードインスタンスのローカル ファイル システムにコードをダウンロードするには、ノートブックに次のコマンドを入力してください。 ダウンロード後、ファイル ブラウザからソース コード構造を参照できます。 この記事のコードとノートブックは、Amazon SageMaker がホストする Python 3.6、PyTorch 1.4、および JupyterLab で検証されました。この記事のコードとノートブックはここから入手できます。 生成的敵対ネットワークモデルアルゴリズムの原理DCGAN モデルのジェネレーター ネットワークには 10 層が含まれます。ストライド転置畳み込み層を使用して、テンソルの解像度を高めます。入力形状は (batchsize, 100)、出力形状は (batchsize, 64, 64, 3) です。言い換えると、ジェネレーター ネットワークはノイズ ベクトルを受け取り、それを変換して最終的な画像を生成します。 判別ネットワークにも 10 層が含まれています。(64, 64, 3) 形式の画像を受け取り、2D 畳み込み層を使用してダウンサンプリングし、最終的に分類のために完全接続層に渡します。分類結果は 1 または 0、つまり true または false になります。 DCGAN モデルのトレーニング プロセスは、大まかに 3 つのサブプロセスに分けられます。 まず、ジェネレーター ネットワークは乱数を入力として受け取り、「偽の」画像を生成します。次に、ディスクリミネーター ネットワークはそれぞれ「実際の」画像と「偽の」画像でトレーニングされ、パラメータが更新されます。最後に、ジェネレーター ネットワークのパラメータが更新されます。 コード分析byos-pytorch-ganプロジェクトディレクトリのファイル構造は次のとおりです。 ファイル model.py には、ジェネレーター ネットワークとディスクリミネーター ネットワークという 3 つのクラスが含まれています。
ファイル train.py は、Generator と Discriminator の 2 つのニューラル ネットワークをトレーニングするために使用されます。主に次のメソッドが含まれています。
モデルのデバッグ開発およびデバッグフェーズでは、Linux コマンドラインから train.py スクリプトを直接実行できます。ハイパーパラメータ、入力データ チャネル、モデル、その他のトレーニング出力の保存ディレクトリは、コマンド ライン パラメータを使用して指定できます。
このトレーニング スクリプトのパラメータ設計は、優れたデバッグ方法を提供するだけでなく、SageMaker コンテナとの統合の仕様と必要条件としても機能し、モデル開発の自由度とトレーニング環境の移植性の間で適切なバランスを実現します。 モデルのトレーニングと検証dcgan.ipynb という名前のノートブック ファイルを見つけて開いてください。トレーニング プロセスはこのノートブックによって導入および実行されます。このセクションのコード部分は省略されています。ノートブック コードを参照してください。 インターネット上には、アルゴリズムの学習や効果の評価など、機械学習エンジニアリングや科学研究に非常に役立つ公開データセットが数多く存在します。 QMNIST 手書きフォント データセットを使用してモデルをトレーニングし、最終的にリアルな「手書き」フォント効果パターンを生成します。 データ準備PyTorch フレームワークの torchvision.datasets パッケージは、QMNIST データセットを提供します。次のコマンドを使用して、QMNIST データセットをバックアップ用にローカル コンピューターにダウンロードできます。
Amazon SageMaker は、機械学習ワークフローで必要になる可能性のあるさまざまなファイルとデータを保存および取得するためのデフォルトの Amazon S3 バケットを作成します。 このバケットの名前は、SageMaker SDK の sagemaker.session.Session クラスの default_bucket メソッドを通じて取得できます。
SageMaker SDK は、Amazon S3 サービスを操作するためのパッケージとクラスを提供します。S3Downloader クラスは S3 内のオブジェクトにアクセスしたりダウンロードしたりするために使用され、S3Uploader はローカル ファイルを S3 にアップロードするために使用されます。モデルのトレーニングのために、ダウンロードしたデータを Amazon S3 にアップロードします。インターネット経由でトレーニング データを取得することによるネットワーク遅延を回避するため、モデルのトレーニング プロセス中はインターネットからデータをダウンロードしないでください。これにより、モデルのトレーニングのためにインターネットに直接アクセスすることから生じる可能性のあるセキュリティ リスクも回避されます。
トレーニングの実行合格 モデルのトレーニングに使用されるハイパーパラメータは、ノートブックで定義してアルゴリズム コードから分離できます。トレーニング タスクを作成するときに、ハイパーパラメータを渡して、トレーニング タスクと動的に組み合わせることができます。
sagemaker.pytorch パッケージの PyTorch クラスは、PyTorch フレームワークに基づくモデル フィッターです。トレーニング タスクの作成と実行、およびトレーニング済みモデルのデプロイに使用できます。パラメータ リストでは、train_instance_type を使用して CPU または GPU インスタンス タイプを指定し、トレーニング スクリプトとモデル コードが配置されているディレクトリを source_dir で指定し、トレーニング スクリプト ファイル名を entry_point で明示的に定義する必要があります。これらのパラメータは他のパラメータとともにトレーニング タスクに渡され、トレーニング タスクの実行環境とモデル トレーニング中のパラメータを決定します。
train_use_spot_instances パラメータに特に注意してください。True 値は、SPOT インスタンスの使用を優先することを示します。機械学習のトレーニングには通常、長時間実行するために大量のコンピューティング リソースが必要になるため、SPOT をうまく活用することで効果的なコスト管理を実現できます。SPOT インスタンスの価格は、オンデマンド インスタンスの価格の 20% ~ 60% になる場合があります。実際の価格は、インスタンスの種類、リージョン、時間によって異なります。 PyTorch オブジェクトを作成したので、それを使用して Amazon S3 上の既存のデータを適合させることができます。次のコマンドはトレーニング タスクを実行し、トレーニング データがQMNISTという名前の入力チャネルとしてトレーニング環境にインポートされます。トレーニングが開始されると、Amazon S3 上のトレーニング データがモデル トレーニング環境のローカル ファイル システムにダウンロードされ、トレーニング スクリプト train.py によってローカル ディスクからデータがロードされてトレーニングが行われます。
選択したトレーニング インスタンスに応じて、トレーニング プロセスは数十分から数時間かかる場合があります。 wait パラメータを False に設定することをお勧めします。このオプションは、ノートブックをトレーニング タスクから分離します。トレーニング時間が長く、トレーニング ログが多いシナリオでは、ネットワークの中断やセッション タイムアウトによってノートブックのコンテキストが失われるのを回避できます。トレーニング タスクがノートブックから分離された後、出力は一時的に見えなくなります。次のコードを実行すると、ノートブックは以前のトレーニング セッションを取得して読み込みます。
モデル設計ではトレーニングを高速化する GPU の能力が考慮されているため、GPU インスタンスを使用したトレーニングは CPU インスタンスを使用したトレーニングよりも高速です。たとえば、p3.2xlarge インスタンスでは約 15 分かかりますが、c5.xlarge インスタンスでは 6 時間以上かかる場合があります。現在のモデルは分散および並列トレーニングをサポートしていないため、複数のインスタンスと複数の CPU/GPU を使用してもトレーニング速度は向上しません。 トレーニングが完了すると、モデルは Amazon S3 にアップロードされます。アップロード場所は、PyTorch オブジェクトの作成時に指定された output_path パラメータによって指定されます。 モデル検証トレーニング済みのモデルを Amazon S3 から、ノートブックが配置されているインスタンスのローカルファイルシステムにダウンロードします。次のコードは、モデルをロードし、乱数を入力して推論結果を取得し、それを画像の形式で表示します。次のコマンドを実行して、トレーニング済みのモデルを読み込み、このモデルを通じて「手書き」デジタル フォントのセットを生成します。
結論と要約近年急速に成長している PyTorch フレームワークは、幅広い認知度と応用を獲得しています。ますます多くの新しいモデルが PyTorch フレームワークを使用しており、一部のモデルは PyTorch に移行されているか、PyTorch に基づいて完全に再実装されています。エコシステムは充実し続け、応用分野も拡大し続けています。PyTorch は事実上の主流フレームワークの 1 つになりました。 Amazon SageMaker は、さまざまなタイプとサイズの Amazon EC2 コンピューティングインスタンス、Amazon S3、Amazon ECR などの複数の AWS サービスと緊密に統合されており、機械学習エンジニアリングの実践にエンドツーエンドの一貫したエクスペリエンスを提供します。 Amazon SageMaker は、PyTorch もその 1 つである主流の機械学習フレームワークを引き続きサポートします。 PyTorch で開発された機械学習アルゴリズムとモデルは、Amazon SageMaker のエンジニアリングおよびサービス環境に簡単に移植でき、Amazon SageMaker のフルマネージド Jupyter Notebook、トレーニングコンテナイメージ、サービスコンテナイメージ、トレーニングタスク管理、デプロイメント環境ホスティングなどの機能を使用することで、機械学習プロジェクトの複雑さを簡素化し、生産効率を向上させ、運用および保守コストを削減できます。 DCGAN は生成的敵対的ネットワークの分野におけるマイルストーンであり、今日の多くの複雑な生成的敵対的ネットワークの基礎となっています。冒頭で触れたStyleGAN、テキスト付き画像を合成するStackGAN、スケッチから画像を生成するPix2pix、そしてネット上で物議を醸したDeepFakesなどはいずれもDCGANの影を落としている。この記事の紹介とエンジニアリングの実践を通じて、生成的敵対的ネットワークの原理とエンジニアリング手法を理解するのに役立つと信じています。 |
>>: ロボットが宇宙飛行士に取って代わるでしょうか?この会社は『アバター』を宇宙に送りたい
[[358649]]従来のストレージとデータ構造が、クラウドネイティブ アプリケーションに必要な移植...
テキスト ロゴのデザインはデザイナーの創造性と経験に大きく依存しますが、その中でも各テキスト要素のレ...
この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...
最近、南極で初めて金色のペンギンが発見されました。このペンギンは「黄色いダイヤモンドを帯びている」と...
[[400942]]研究者にとって最も嬉しいことは、論文が「受理」されることです。論文が出版された後...
エネルギー産業はハイテク主導の産業です。石油・ガス業界では、過酷な条件下で大型機器を使用してさまざま...
機械学習アルゴリズムは、より広範で信頼性の高いデータをリアルタイムで提供することができ、インテリジェ...
最近、ストレンジという日本のロボットホテルが「ロボット従業員」の半数を解雇した。ロボットに仕事を奪わ...