NeoPulse®モデリング言語の原理

NeoPulse® AI Studio は NeoPulse® モデリング言語 (NML) を使用して、AI モデルの構築に伴う複雑な作業の多くを抽象化します。NML は AI/深層学習用の言語で、機械学習のエキスパートと非エキスパートの両者がAIモデルを効率的かつ効果的に構築できるようになっています。

NML の設計目標は、ユーザーが最初に機械学習タスクを非常に高いレベルで記述し、次に、ユーザーにこれまで備われたノウハウを機械学習AI モデル構築に活用できるようにします。この柔軟なフレームワークにより、NML は、経験を持たない初心者はもとよりと機械学習のエキスパートにもがわずかな労力で最先端のAI モデルを作成できるようにします。

この言語には、モデルの保存とメモリ効率の高いAPI の作成の手間を取り除く標準ランタイム環境が付属しています。この言語は、Googleの画期的なテンソルボードニューラルネットワーク診断ツールと緊密に統合されています。

NML を読みやすくするために、コンパイラは空白スペースを無視します。

AIオラクルがアシストするコンパイラ

NML コンパイラには、アーキテクチャのナレッジベースと最も一般的な機械学習タスクのハイパーパラメーターを備えた AI Oracle が含まれています。したがって、AI エキスパートではないユーザーが AI モデルを迅速に構築して実際のビジネスの問題を解決できるのです。

AI oracle を実行するには、次の 2 つの具体的な方法があります。

  1. 間接ヒント: 問題の種類と複雑さに関する高レベルのヒントをOracle 指示します。
  2. ダイレクト ヒント: auto キーワードを使用すると、oracle がハイパーパラメータ領域を絞り込むみます。

基本的な構文

Types:

  • 単数データ型:
    • Int: 5, 10, -5
    • Float: 1.0, -1.2, 1E-5
    • String: "example string",'another example'
    • Boolean: True or False
  • Lists:
    • List: [5, 1.0, "example", [0, 0]]
      • この言語では、リストに同じ型が強制的に含まれるわけではありません。
  • メソッド/レイヤ呼び出し:
    • Tこの言語では、ジェネリック メソッドを形成する方法は定義されていません。ニューラルレイヤーはファーストクラスの関数として扱われるため、同じ方法で呼び出されます。
    • メソッド呼び出しは、 <method name>: <argument list>となります。.

      たとえば、畳み込みレイヤを呼び出すには、次のようにします。

      Conv2D: [nb_filter=32, nb_row=10, nb_col=10]

NML スクリプト内の構築。

NML スクリプトにはAI モデルの構築とトレーニングに定義する必要な3 つの構成要素が含まれています。

コンストラクトは次の構文で宣言されます。 construct: block1, block2, ...

必要とされるコンストラクトは:

  • source: 基データとトレーニング前のデータ変換を識別します。ソース構造についてはここで詳しく説明します。

  • architecture: 入力と出力の形状を定義し、入力からネットワークのレイヤーを介して出力までの ニューラルフロー としての完成モデルを構築します。アーキテクチャ構造についてはここで詳しく説明します。

  • train: モデルのコンパイルとトレーニングに必要な関数とパラメーターを定義します。訓練のコンストラクトについてはここで詳しく説明します。

  • block: 複数のレイヤーのブロックを単一レイヤーとして定義します。 ここでブロック構成について詳しく説明します。

注: 1 つの NML スクリプトで複数のブロック構成体を定義することができます。

ブロック構成体は、別々の NML スクリプトで定義し、 import キーワードを使用して含めることもできます。

import '/DM-Dash/path/to/my/library/my_block.nml'

このように、機械学習の専門家は、複雑なアーキテクチャで再利用できるレイヤーブロックのライブラリを開発することができます。

  • function: ユーザーが関数を定義できるようにします。関数の構成要素について ここ で詳しく説明します。同じ NML スクリプトで複数の関数を定義できます。

変数

NML の変数は、任意の構造の外部で定義することができます。他の開発言語と同じ様に、変数は使用する前に宣言する必要があります。

dictionary_size = 20000