Udostępnij przez


Prosty konstruktor sieci

Umożliwia SimpleNetworkBuilder używanie prostych standardowych typów sieci z kilkoma liniami konfiguracji. Obsługiwany jest tylko ograniczony zestaw opcji konfiguracji. Zamiast tego można zdefiniować BrainScriptNetworkBuilder bardziej złożone sieci.

Aby użyć polecenia SimpleNetworkBuilder, dołącz blok konfiguracji o tej samej nazwie w konfiguracji trenowania. Jeśli opcja zostanie pominięta, przyjmuje się wartość domyślną. Najpierw udostępnimy zwięzły przykład i wyświetlimy listę wszystkich parametrów i opcji sterowania poniżej.

SimpleNetworkBuilder = [
    # 2 inputs, 2 hidden layers with 50 element nodes each, 2 outputs
    layerSizes        = 2:50*2:2
    trainingCriterion = "CrossEntropyWithSoftmax"
    evalCriterion     = "ErrorPrediction"
    layerTypes        = "Sigmoid"
    applyMeanVarNorm  = true
]

W powyższym przykładzie "trainingCriterion" i "layerTypes" można pominąć, ponieważ używają wartości domyślnych. Dostępne są następujące parametry:

  • initValueScale: wartość skalowania zakresu liczb losowych używanych do inicjowania. Wartość domyślna to 1. Jeśli parametry modelu są inicjowane przy użyciu równomiernego rozkładu, zakres liczb losowych zostanie dostosowany do [-0.05 * initValueScale, 0.05 * initValueScale]. Jeśli parametry modelu są inicjowane przy użyciu rozkładu Gaussian, odchylenie standardowe zostanie dostosowane do 0.2 * initValueScale * fanout^(-1/2).

  • layerTypes: typ operacji nieliniowej w ukrytych warstwach. Prawidłowe wartości to Sigmoid (wartość domyślna), Tanhi RectifiedLinear.

  • uniformInit: określa, czy należy używać równomiernego rozkładu do inicjowania parametrów modelu. Prawidłowe wartości to true (wartość domyślna) i false (przy użyciu rozkładu gaussańskiego w celu zainicjowania parametrów modelu).

  • applyMeanVarNorm: czy należy zastosować normalizację średniej/wariancji w danych wejściowych. Prawidłowe wartości to true i false (wartość domyślna).

  • addDropoutNodes: czy należy dodać węzły rozwijane. Wartość domyślna to false. Jeśli zostanie określona truewartość , węzeł listy rozwijanej zostanie zastosowany do węzła wejściowego i danych wyjściowych każdej ukrytej warstwy.

  • layerSizes: określa wymiary warstw. Na przykład layerSizes=128:10:200:4000 opisuje sieć neuronową z dwiema ukrytymi warstwami. Pierwsza ukryta warstwa ma wymiar 10, a druga ukryta warstwa ma wymiar 200. Warstwy wejściowe i wyjściowe mają odpowiednio wymiar 128 i 4000.

  • trainingCriterion: kryterium używane do trenowania. Wartość domyślna to CrossEntropyWithSoftmax. Alternatywy to SquareError, CrossEntropyi ClassBasedCrossEntropyWithSoftmax. Jest ClassBasedCrossEntropyWithSoftmax to trenowanie oparte na klasach, które byłoby przydatne, jeśli wymiar wyjściowy jest duży i dlatego należy podzielić na klasy w celu przyspieszenia trenowania i oceny.

  • evalCriterion: kryterium oceny. Wybór wartości jest taki sam jak trainingCriterion.

  • lookupTableOrder: określa kolejność kontekstu rozszerzającego się w węźle lookupNode. Wartość domyślna to 1. Ustawienie go na wartość, taką jak 3, spowoduje rozwinięcie wymiaru wejściowego w sposób zależny od kontekstu przez kolejność 3. Jeśli na przykład obserwacja wejściowa ma wymiar 20, ustawienie tej wartości na 3 spowoduje ustawienie wymiaru węzła wejściowego na 60.

W przypadku cyklicznych sieci neuronowych (RNN) istnieją dodatkowe parametry.

  • recurrentLayer: określa warstwy, które zawierają połączenia cykliczne. Domyślnie nie ma cyklicznej warstwy. Użyj składni n1:n2:n3 , aby określić, że warstwy n1, n2 i n3 mają cykliczne połączenia.

  • defaultHiddenActivity: domyślna wartość działania ukrytej warstwy używana przez węzeł opóźnienia podczas uzyskiwania dostępu do wartości przed pierwszą obserwacją. Wartość domyślna to 0.1.

  • rnnType: typ wstępnie zdefiniowanych sieci. Prawidłowe wartości:

    • SIMPLENET: sieć neuronowa przekazująca dalej. Jest to domyślny typ sieci.
    • SIMPLERNN: prosta sieci RNN, która może być głęboką siecią RNN, w której kilka warstw ma cyklicznych pętli.
    • CLASSLM: oparta na klasie prosta RNN. Używa rozrzednych danych wejściowych, rozrzedzynych parametrów i rozrzednych danych wyjściowych. Jest to często używane w przypadku zadań modelowania języka.
    • LBLM: sieć neuronowa log-bilinear.
    • LSTM: długoterminowa sieć neuronowa pamięci krótkoterminowej.
    • CLASSLSTM: oparta na klasie długoterminowa sieć neuronowa pamięci krótkoterminowej. Używa rozrzednych danych wejściowych, rozrzedzynych parametrów i rozrzednych danych wyjściowych. Jest to często używane w przypadku zadań modelowania języka.

Dalej: Zdefiniuj własne złożone sieci za pomocą polecenia BrainScriptNetworkBuilder.