9月1日は知識の日です。 ニューラルネットワークについて必要なすべてを学ぶ

ともだち!



知識の日にすべての加入者を祝福し、より多くの知識があること、彼らの獲得が興味深いこと、そして知識自体がより有用であることを願っています。



これらの願いを実現するために、私たちは夏季に閉鎖された学校DevConの一環として実施したコース「 ニューラルネットワークへの1日浸漬 」のビデオを提供します。 このコースでは、数時間でニューラルネットワークのトピックに飛び込み、それらを画像認識、音声合成、その他の興味深いタスクにゼロから使用する方法を学びます。 コースのマスタリングを成功させるには、Pythonでプログラミングする能力と数学の基礎知識が役立ちます。 GitHubでコースの教材と練習問題を入手できます





警告:これらのビデオは、主に部屋にいる聴衆を対象とした強度の記録です。 したがって、ビデオはオンラインコースよりもやや動的でなく、より長く、主題の断片に切り分けられません。 それにも関わらず、多くの視聴者は自分自身にとって非常に有用だと感じたため、幅広い視聴者と共有することにしました。 何か新しいことを学ぶ機会が写真の娘と同じ真の喜びをもたらすことを願っています。


必要なもの



提示される資料は、2つの主要部分で構成されています: ビデオ(集中的な録画)講義(例付き)、およびAzure Notebooksの課題 。 したがって、デモを行うすべての例を同時に独立して検証するために、あるウィンドウでビデオを開き、別のウィンドウで講義または課題を開くことをお勧めします。



Azure NotebooksJupyterベースのテクノロジーであり、自然言語のテキストとコードを1つのドキュメント内の1つのプログラミング言語で組み合わせることができます。 Azureノートブックを使用するには、 Microsoftアカウントが必要です。 アカウントがない場合は、 Outlook.comで自分用の新しいメールボックスを作成します。



猫または犬を認識するようにニューラルネットワークをトレーニングする最後の例は、GPUを搭載した仮想マシンで行うのが最適です。そうしないと時間がかかりすぎます。 サブスクリプションをお持ちの場合、Microsoft Azureクラウドにそのようなマシンを作成できます (無料のAzure Trialサブスクリプションでは、GPUを備えたマシンを常に作成できるとは限らないことに注意してください)。



はじめに



ビデオを視聴するプロセスでは、例題を並行して試し、コースを視聴した後、知識を統合するための何らかのタスクを考え出すことが非常に重要です。 教材はオンラインコースではないため(まだ手がつけられていません)、あなたの仕事や知識を確認することはできません。 ただし、時間を無駄にする可能性があるため、ビデオを「そのように」見ないことを強くお勧めします。 例を実行して試してみるのは簡単です!



開始するには、 Azure Notebooksのコース資料ライブラリに移動し [クローン]ボタンをクリックします。 したがって、すべての資料のコピーを受け取り、その場でコードを変更し、何が起こるかを確認できます。 ライブラリを別のウィンドウで開き、ビデオの視聴を開始します。



映像



パートI





[0:00]一般的な人工知能の紹介、認知サービス、ボットフレームワーク、Azure Machine Learning。 これは、ニューラルネットワークに直接関連するものではありませんが、全体的な開発に役立ちます。

[0:27] Azure Notebookの紹介と、私たちにとって重要な基本的なPython機能。

[0:48]単層パーセプトロンと単純な「手動」ニューラルネットワークの実装。

[1:10] Microsoft Cognitive Toolkit(CNTK)での最も単純なニューラルネットワークの実装。 エラー逆伝播アルゴリズム。

[1:48]実験室作業:アイリスの分類。

[2:27]ラボ:手書きの数字を認識します。

すぐに仕事に取りかかるのが待ちきれない人のために、Cognitive Toolkitを使用して簡単な分類タスクを実装し始める1時10分から視聴することをお勧めします。 主なアイデアは次のとおりです。下図に模式的に示すニューラルネットワークは、シフトbを考慮して、入力値xによる重み行列Wの積として数学的に表すことができます。y= Wx + b。







CNTKタイプのニューラルネットワークフレームワークを使用すると、ネットワーク構成を「計算グラフ」の形式で指定でき、基本的に次の式を記述できます。

features = input_variable(input_dim, np.float32) label = input_variable(output_dim, np.float32) W = parameter(shape=(input_dim, output_dim)) b = parameter(shape=(output_dim)) z = times(features,W)+b
      
      





その後、フレームワークにより、トレーニングアルゴリズムの1つを適用し、行列Wの重みを調整して、ニューラルネットワークがトレーニングサンプルでより適切に機能するようになります。 さらに、与えられた式に従って、フレームワークは、エラー伝播法が機能するために必要な導関数を計算する際のすべての困難を引き受けます。



同様に、より複雑なネットワーク、たとえば、非表示層を持つ2層ネットワークの構成を指定できます。

 hidden_dim = 5 W1 = parameter(shape=(input_dim, hidden_dim),init=cntk.uniform(1)) b1 = parameter(shape=(hidden_dim),init=cntk.uniform(1)) y = cntk.sigmoid(times(features,W1)+b1) W2 = parameter(shape=(hidden_dim, output_dim),init=cntk.uniform(1)) b2 = parameter(shape=(output_dim),init=cntk.uniform(1)) z = times(y,W2)+b2
      
      





高レベルの構文を使用して、レイヤーの構成として同じことをよりコンパクトに記述できます。

 z = Sequential([ Dense(hidden_dim,init=glorot_uniform(),activation=sigmoid), Dense(output_dim,init=glorot_uniform(),activation=None) ])(features)
      
      







このパートでは、ネットワークの再トレーニングに関する重要な問題、および再トレーニングを回避するような方法でトレーニングデータの量に応じてネットワークの「容量」を選択する方法についても説明します。



パートII





[0:00]手書き認識。

[0:04]画像認識のための畳み込みニューラルネットワーク。

[0:49]ラボ:畳み込みネットワークを使用して認識精度を改善します。

[1:07]トレーニングの微妙さ:バッチの正規化、ドロップアウトなど。 特定のタスクのための高度なネットワークアーキテクチャ。 自動エンコーダー 実際のプロジェクトでのニューラルネットワークの使用。
このパートの主なアイデアは、画像解析の例を使用して、特定の問題を解決するために、より複雑なニューラルネットワークアーキテクチャを基本ブロック(ニューラルレイヤー、活性化関数など)から組み立てる方法を伝えることです。 ツールキット(Cognitive Toolkit / CNTK、Tensorflow、Caffeなど)は、互いに組み合わせることができる基本的な機能ブロックを提供します。



たとえば、画像解析に使用される畳み込みニューラルネットワーク(CNN)では、画像(3x3または5x5)を通る小さなウィンドウが使用されます。これは、画像フラグメントから重要な特徴を強調する小さなニューラルネットワークの入力に供給されるようです。 これらの兆候から、次のレイヤーの「イメージ」が取得され、同様の方法で処理されますが、このレイヤーはより高いレベルの兆候を担当します。 このように多数(数十および数百)のレイヤーを組み合わせることにより、画像内のオブジェクトを人間に劣らない精度で認識できるネットワークが得られます。 ここで、たとえば、多層畳み込みネットワークがどのように数字5を見るか:







ビデオの後半では、Yandex-CERNプロジェクトの責任者であり、経済学のLambda研究所のAndrei Ustyuzhaninが 、特定のタスク用のより複雑なニューラルネットワーク構成を構築するためのいくつかのテクニックと、レイヤーとパラメーターの数を大幅に増やすことのできないディープネットワークを教えるための最適化テクニックについて説明します。



パートIII





[0:00]再帰的ニューラルネットワーク。

[1:09] Azure Batchを介したMicrosoft Azureクラウドでのニューラルネットワークのトレーニング。

[1:36] 「犬に対する猫」の画像の認識と質問への回答。
このセクションで最も重要なことは、リカレントニューラルネットワークです。これは、MIPTディープラーニング研究所の責任者であるミハイルバーツエフによって説明されています。 これは、ネットワーク出力が入力として入力されるようなネットワークアーキテクチャです。 これにより、可変長のシーケンスを分析できます。たとえば、1回のパスでテキストの1文字または文の1単語が処理され、「意味」は再帰的に送信される「状態」に保存されます。 このアプローチに基づいて、機械翻訳システム、テキストジェネレーター、時系列予測システムなど。



ここでは、たとえば、英語版ウィキペディアのテキストに関する3分間のトレーニング後に検討している例から、ニューラルネットワークが生成するテキストを示します。

demaware boake associet ofteteの1つ9つ2つの都市機能を許可するために使用

リノミングは、落した武装勢力のターキングや

単数または複数の国への射線ストア、russiarnawe itおよびsentio edaph lawe

アメリカのスコットランドのプロダクションを売り出している間、

音楽で尊敬する時間へのzerは、2つの2つの1ケラニッシュ・リッターに従います


結論の代わりに



ニューラルネットワークについて学ぶためにあなたにインスピレーションを与えたことを願っています! コースを見た後は、ある種のタスクやプロジェクトを考え出しましょう。たとえば、詩や疑似科学論文のジェネレーターを作成したり、目を閉じて存在する写真を分析したりします。 主なことは、知識を実践することです!



Azure Notebookで簡単なネットワークを直接トレーニングしたり、AzureクラウドでData Science Virtual Machineを使用したり、コンピューターにCNTKをインストールしたりできますトレーニングモデルの例など、CNTKの詳細については、 http: //cntk.aiで入手できます。



読者の皆様に暖かい秋をお祈りします。コメント欄でご質問にお答えします。



All Articles