メインコンテンツ

bertDocumentClassifier

BERT 文書分類器

R2023b 以降

    説明

    Bidirectional Encoder Representations from Transformer (BERT) モデルは、文書分類やセンチメント分析などの自然言語処理タスクに合わせて微調整できるトランスフォーマー ニューラル ネットワークです。このネットワークは、注意層を使用してコンテキスト内のテキストを解析し、単語間の長距離依存関係を取得します。

    作成

    説明

    mdl = bertDocumentClassifier は、bertDocumentClassifier オブジェクトを作成します。

    mdl = bertDocumentClassifier(net,tokenizer) は、指定された BERT ニューラル ネットワークとトークナイザーから bertDocumentClassifier オブジェクトを作成します。

    mdl = bertDocumentClassifier(___,Name=Value) は、1 つ以上の名前と値の引数を使用して ClassNames プロパティと追加オプションを設定します。

    入力引数

    すべて展開する

    BERT ニューラル ネットワーク。dlnetwork (Deep Learning Toolbox) オブジェクトとして指定します。

    net 引数を指定した場合、Model 引数を指定してはなりません。ネットワークは、入力サイズが 1 であるシーケンス入力層を 3 つもたなければなりません。ネットワークの出力サイズは、ClassNames プロパティのクラスの数と一致していなければなりません。net.InputNames(1)net.InputNames(2)、および net.InputNames(3) の入力は、それぞれ入力データ、アテンション マスク、およびセグメントの入力でなければなりません。

    BERT トークナイザー。bertTokenizer オブジェクトとして指定します。

    tokenizer 引数を指定した場合、Model 引数を指定してはなりません。

    名前と値の引数

    すべて展開する

    オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

    例: bertDocumentClassifier(Model="tiny") は、BERT-Tiny 文書分類器を作成します。

    BERT モデル。次のいずれかのオプションとして指定します。

    • "base" — BERT-Base モデル。このオプションには、Text Analytics Toolbox™ Model for BERT-Base Network サポート パッケージが必要です。このモデルには 1 億 880 万個の学習可能なパラメーターがあります。

    • "tiny" — BERT-Tiny モデル。このオプションには、Text Analytics Toolbox Model for BERT-Tiny Network サポート パッケージが必要です。このモデルには 430 万個の学習可能なパラメーターがあります。

    • "mini" — BERT-Mini モデル。このオプションには、Text Analytics Toolbox Model for BERT-Mini Network サポート パッケージが必要です。このモデルには 1,110 万個の学習可能なパラメーターがあります。

    • "small" — BERT-Small モデル。このオプションには、Text Analytics Toolbox Model for BERT-Small Network サポート パッケージが必要です。このモデルには 2,850 万個の学習可能なパラメーターがあります。

    • "large" — BERT-Large モデル。このオプションには、Text Analytics Toolbox Model for BERT-Large Network サポート パッケージが必要です。このモデルには 3 億 3,400 万個の学習可能なパラメーターがあります。

    • "multilingual" — BERT-Base 多言語モデル。このオプションには、Text Analytics Toolbox Model for BERT-Base Multilingual Cased Network サポート パッケージが必要です。このモデルには 1 億 7,720 万個の学習可能なパラメーターがあります。

    Model 引数を指定する場合、net 引数と tokenizer 引数を指定してはなりません。

    ヒント

    BERT ニューラル ネットワークのアーキテクチャをカスタマイズするには、bert 関数の dlnetwork (Deep Learning Toolbox) オブジェクト出力を変更し、net 引数と tokenizer 引数を使用します。

    ドロップアウト層で入力要素をドロップアウトする確率。範囲 [0, 1) のスカラーとして指定します。

    ドロップアウト層を使用してニューラル ネットワークに学習させる場合、この層は、ドロップアウト マスク rand(size(X)) < p を使用して入力要素をランダムにゼロに設定します。ここで、X は層の入力、p は層のドロップアウト確率です。その後、この層は残りの要素を 1/(1-p) でスケーリングします。

    この操作は、ネットワークの過適合を防ぐのに役立ちます[2][3]。大きい数値を指定するほど、ネットワークによって学習時にドロップされる要素の数が増加します。予測時には、この層の出力はその入力と等しくなります。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    注意層で入力要素をドロップアウトする確率。範囲 [0, 1) のスカラーとして指定します。

    注意層を使用してニューラル ネットワークに学習させる場合、この層は、ドロップアウト マスク rand(size(scores)) < p を使用して注意スコアをランダムにゼロに設定します。ここで、scores は層の入力、p は層のドロップアウト確率です。その後、この層は残りの要素を 1/(1-p) でスケーリングします。

    この操作は、ネットワークの過適合を防ぐのに役立ちます[2][3]。大きい数値を指定するほど、ネットワークによって学習時にドロップされる要素の数が増加します。予測時には、この層の出力はその入力と等しくなります。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    プロパティ

    すべて展開する

    この プロパティ は読み取り専用です。

    事前学習済みの BERT モデル。net 引数または Model 引数に対応する dlnetwork (Deep Learning Toolbox) オブジェクトとして指定します。

    この プロパティ は読み取り専用です。

    BERT トークナイザー。tokenizer 引数または Model 引数に対応する bertTokenizer オブジェクトとして指定します。

    クラス名。categorical ベクトル、string 配列、または文字ベクトルの cell 配列として指定します。

    net 引数を指定した場合、ネットワークの出力サイズはクラス数と一致していなければなりません。

    bertDocumentClassifier オブジェクトを作成する場合、このプロパティを設定するには、対応する名前と値の引数を使用します。bertDocumentClassifier オブジェクトの作成後、このプロパティは読み取り専用になります。

    データ型: string | cell | categorical

    オブジェクト関数

    classifyBERT 文書分類器を使用して文書を分類する

    すべて折りたたむ

    学習準備が整った BERT 文書分類器を作成します。

    mdl = bertDocumentClassifier
    mdl = 
      bertDocumentClassifier with properties:
    
           Network: [1×1 dlnetwork]
         Tokenizer: [1×1 bertTokenizer]
        ClassNames: ["positive"    "negative"]
    
    

    クラス名を表示します。

    mdl.ClassNames
    ans = 1×2 string
        "positive"    "negative"
    
    

    "Electrical Failure""Leak""Mechanical Failure"、および "Software Failure" の各クラスに対応する BERT 文書分類器を作成します。

    classNames = ["Electrical Failure" "Leak" "Mechanical Failure" "Software Failure"];
    mdl = bertDocumentClassifier(ClassNames=classNames)
    mdl = 
      bertDocumentClassifier with properties:
    
           Network: [1×1 dlnetwork]
         Tokenizer: [1×1 bertTokenizer]
        ClassNames: ["Electrical Failure"    "Leak"    "Mechanical Failure"    "Software Failure"]
    
    

    クラス名を表示します。

    mdl.ClassNames
    ans = 1×4 string
        "Electrical Failure"    "Leak"    "Mechanical Failure"    "Software Failure"
    
    

    参照

    [1] Devlin, Jacob, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. "BERT: Pre-Training of Deep Bidirectional Transformers for Language Understanding" Preprint, submitted May 24, 2019. https://doi.org/10.48550/arXiv.1810.04805.

    [2] Srivastava, Nitish, Geoffrey Hinton, Alex Krizhevsky, Ilya Sutskever, and Ruslan Salakhutdinov. "Dropout: A Simple Way to Prevent Neural Networks from Overfitting." The Journal of Machine Learning Research 15, no. 1 (January 1, 2014): 1929–58

    [3] Vaswani, A., N. Shazeer, N. Parmar, J. Uszkoreit, L. Jones, A. N. Gomez, L. Kaiser, I. Polosukhin et al. "Attention Is All You Need." Advances in Neural Information Processing Systems 30, 2017. https://proceedings.neurips.cc/paper_files/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf.

    バージョン履歴

    R2023b で導入