주요 콘텐츠

bertDocumentClassifier

BERT 문서 분류기

R2023b 이후

    설명

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

    생성

    설명

    mdl = bertDocumentClassifierbertDocumentClassifier 객체를 만듭니다.

    예제

    mdl = bertDocumentClassifier(net,tokenizer)는 지정된 BERT 신경망과 토큰 추출기에서 bertDocumentClassifier 객체를 만듭니다.

    mdl = bertDocumentClassifier(___,Name=Value)는 하나 이상의 이름-값 인수를 사용하여 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를 사용하여 무작위로 입력 요소를 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 모델로, net 인수 또는 Model 인수에 대응되는 dlnetwork (Deep Learning Toolbox) 객체로 지정됩니다.

    읽기 전용 속성입니다.

    BERT 토큰 추출기로, tokenizer 인수 또는 Model 인수에 대응되는 bertTokenizer 객체로 지정됩니다.

    클래스 이름으로, categorical형 벡터, string형 배열 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다.

    net 인수를 지정하는 경우 신경망의 출력 크기는 클래스 개수와 일치해야 합니다.

    이 속성을 설정하려면 bertDocumentClassifier 객체를 만들 때 대응되는 이름-값 인수를 사용하십시오. bertDocumentClassifier 객체를 만든 후에는 이 속성은 읽기 전용입니다.

    데이터형: string | cell | categorical

    객체 함수

    classifyClassify document using BERT document classifier

    예제

    모두 축소

    훈련시킬 준비가 된 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에 개발됨