Main Content

bert

사전 훈련된 BERT 모델

R2023b 이후

    설명

    BERT(Bidirectional Encoder Representations from Transformer) 모델은 문서 분류 및 감성 분석 등의 자연어 처리 작업을 위해 미세 조정(파인 튜닝)이 가능한 트랜스포머 신경망입니다. 이 신경망은 어텐션 계층을 사용하여 문맥 내의 텍스트를 분석하고 단어 간의 장거리 종속성(long-range dependency)을 캡처합니다.

    예제

    [net,tokenizer] = bert는 사전 훈련된 BERT-Base 모델과 그에 대응하는 토큰 추출기를 반환합니다.

    문서 분류 워크플로의 경우, trainBERTDocumentClassifier 함수와 함께 bertDocumentClassifier 객체를 사용하십시오.

    [net,tokenizer] = bert(Name=Value)는 하나 이상의 이름-값 인수를 사용하여 옵션을 추가로 지정합니다.

    예제

    모두 축소

    bert 함수를 사용하여, 사전 훈련된 BERT-Base 신경망과 그에 대응하는 토큰 추출기를 불러옵니다. Text Analytics Toolbox™ Model for BERT-Base Network 지원 패키지가 설치되어 있지 않으면, 필요한 지원 패키지로 연결되는 애드온 탐색기 링크를 함수에서 제공합니다. 지원 패키지를 설치하려면 링크를 클릭한 다음 설치를 클릭하십시오.

    [net,tokenizer] = bert;

    신경망 속성을 표시합니다.

    net
    net = 
      dlnetwork with properties:
    
             Layers: [129x1 nnet.cnn.layer.Layer]
        Connections: [164x2 table]
         Learnables: [197x3 table]
              State: [0x3 table]
         InputNames: {'input_ids'  'attention_mask'  'seg_ids'}
        OutputNames: {'enc12_layernorm2'}
        Initialized: 1
    
      View summary with summary.
    
    

    토큰 추출기를 표시합니다.

    tokenizer
    tokenizer = 
      bertTokenizer with properties:
    
            IgnoreCase: 1
          StripAccents: 1
          PaddingToken: "[PAD]"
           PaddingCode: 1
            StartToken: "[CLS]"
             StartCode: 102
          UnknownToken: "[UNK]"
           UnknownCode: 101
        SeparatorToken: "[SEP]"
         SeparatorCode: 103
           ContextSize: 512
    
    

    입력 인수

    모두 축소

    이름-값 인수

    선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

    예: [net,tokenizer] = bert(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만 개의 학습 가능한 파라미터가 있습니다.

    모델 헤드로, 다음 값 중 하나로 지정됩니다.

    • "document-classifier" — 문서 분류 헤드가 있는 모델을 반환합니다. 헤드에는 NumClasses의 출력 크기를 가진 완전 연결 계층과 소프트맥스 계층이 포함되어 있습니다.

    • "none" — 헤드리스 모델을 반환합니다.

    문서 분류 헤드의 클래스 개수로, 양의 정수로 지정됩니다.

    이 옵션은 Head"document-classifier"인 경우에만 적용됩니다.

    드롭아웃 계층에서 입력 요소를 제외할 확률로, 범위 [0, 1) 내의 스칼라로 지정됩니다.

    드롭아웃 계층으로 신경망을 훈련시키면, 계층은 드롭아웃 마스크 rand(size(X)) < p를 사용하여 무작위로 입력 요소를 0으로 설정합니다. 여기서 X는 계층 입력값이고 p는 계층 드롭아웃 확률입니다. 그런 다음, 계층은 나머지 요소를 1/(1-p)로 스케일링합니다.

    이 작업을 통해 신경망의 과적합을 방지할 수 있습니다([2], [3]). 수치가 높을수록 훈련 중에 제외되는 요소가 많아집니다. 예측 시점에는 계층의 출력값이 입력값과 동일합니다.

    데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    어텐션 계층에서 입력 요소를 제외할 확률로, 범위 [0, 1) 내의 스칼라로 지정됩니다.

    어텐션 계층으로 신경망을 훈련시키면, 계층은 드롭아웃 마스크 rand(size(scores)) < p를 사용하여 무작위로 어텐션 점수를 0으로 설정합니다. 여기서 scores는 계층 입력값이고 p는 계층 드롭아웃 확률입니다. 그런 다음, 계층은 나머지 요소를 1/(1-p)로 스케일링합니다.

    이 작업을 통해 신경망의 과적합을 방지할 수 있습니다([2], [3]). 수치가 높을수록 훈련 중에 제외되는 요소가 많아집니다. 예측 시점에는 계층의 출력값이 입력값과 동일합니다.

    데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    출력 인수

    모두 축소

    사전 훈련된 BERT 모델로, dlnetwork (Deep Learning Toolbox) 객체로 반환됩니다.

    BERT 토큰 추출기로, bertTokenizer 객체로 반환됩니다.

    참고 문헌

    [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] Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. "ImageNet Classification with Deep Convolutional Neural Networks." Communications of the ACM 60, no. 6 (May 24, 2017): 84–90. https://doi.org/10.1145/3065386

    버전 내역

    R2023b에 개발됨