Upgrade to Pro — share decks privately, control downloads, hide ads and more …

한국어 오픈 도메인 질의응답 시스템 2.0

kakao
PRO
December 08, 2022

한국어 오픈 도메인 질의응답 시스템 2.0

#NLP #OpenDomainQuestionAnswering

카카오엔터프라이즈 AI Assistant 팀에서는 대량의 텍스트 데이터 내에서 이용자가 물어보는 내용에 대한 답을 빠르고 정확하게 찾아주는 시스템인 오픈도메인 질의응답 모델을 연구하고 있습니다. 본 세션에서는 AI Assistant팀의 오픈도메인 질의응답 모델에 대해 소개하고, 빠른 속도와 높은 정확도를 어떻게 달성했는지 설명합니다.

발표자 : phil.i
카카오엔터프라이즈 AI Assistant 팀 필입니다. 질의응답 시스템을 비롯한 다양한 한국어 자연어처리 기술을 연구하고 있습니다.

kakao
PRO

December 08, 2022
Tweet

More Decks by kakao

Other Decks in Programming

Transcript

  1. Copyright 2022. Kakao Corp. All rights reserved. Redistribution or public display is not permitted without written permission from Kakao.
    한국어 오픈 도메인 질의 응답 시스템 2.0
    if(kakao)2022
    이민철 phil.i
    카카오엔터프라이즈

    View Slide

  2. 1. 오픈 도메인 질의응답 시스템이란?
    2. 기존 시스템의 구조 및 한계
    3. 검색 모듈 개선
    4. 기계 독해 모듈 개선
    5. 효율적으로 서빙하기

    View Slide

  3. 오픈 도메인 질의응답 시스템이란?

    View Slide

  4. 오픈 도메인 질의응답 시스템이란?
    마우스는
    누가 만들었어?
    더글라스 엥겔바트가
    만들었어요.

    View Slide

  5. 오픈 도메인 질의응답 시스템이란?
    한정되지 않은 범위에서
    오픈 도메인
    질의
    응답 적절한 답변을 출력하는 시스템
    임의로 들어오는 이용자의 질문에 대해

    View Slide

  6. External
    Knowledge
    Language
    Model
    외부 지식을
    탐색할 수 있는 능력
    인간의 언어를
    이해할 수 있는 능력

    View Slide

  7. External
    Knowledge
    Language
    Model
    검색 모듈 기계 독해 모듈

    View Slide

  8. 기존 시스템의 구조 및 한계

    View Slide

  9. 기존 시스템의 구조 – 검색 모듈
    참고: if Kakao2019 <기계 독해 및 웹검색에 기반한 한국어 오픈 도메인 질의 응답 시스템>
    마우스는 누가 만들었어?
    질문 유형: who
    키워드: 마우스, 만들다
    답변 유형: 단답형
    1
    질의 특성
    분석기

    View Slide

  10. 2
    기존 시스템의 구조 – 검색 모듈
    참고: if Kakao2019 <기계 독해 및 웹검색에 기반한 한국어 오픈 도메인 질의 응답 시스템>
    질문 유형: who
    키워드: 마우스, 만들다
    답변 유형: 단답형
    검색 질의
    생성기
    검색 질의: 마우스 만들다,
    마우스 제작, 마우스 발명,

    View Slide

  11. 3
    기존 시스템의 구조 – 검색 모듈
    참고: if Kakao2019 <기계 독해 및 웹검색에 기반한 한국어 오픈 도메인 질의 응답 시스템>
    웹 검색 및 검색
    결과 전처리기
    문서1
    마우스를 사용해 화면의 특정 부분
    을 가리킨다는 아이디어는 1960
    년대 초반 미국인 발명가 더글러스
    엥겔바트에게서 나왔으며, …
    문서2
    컴퓨터 마우스를 발명한 더글러스
    엥겔바트(88·사진)가 2일 미국
    캘리포니아 자택에서 숨을 거뒀다.
    그는 …
    문서N
    더글러스 엥겔바트가 1968년 대
    중에게 처음으로 마우스를 공개하
    자, 사람들은 충격에 빠졌다.

    검색 질의: 마우스 만들다,
    마우스 제작, 마우스 발명,

    View Slide

  12. 기존 시스템의 구조 – 기계 독해 모듈
    참고: if Kakao2019 <기계 독해 및 웹검색에 기반한 한국어 오픈 도메인 질의 응답 시스템>
    4
    기계 독해
    시스템
    문서1
    마우스를 사용해 화면의 특정 부분
    을 가리킨다는 아이디어는 1960
    년대 초반 미국인 발명가 더글러스
    엥겔바트에게서 나왔으며, …
    문서2
    컴퓨터 마우스를 발명한 더글러스
    엥겔바트(88·사진)가 2일 미국
    캘리포니아 자택에서 숨을 거뒀다.
    그는 …
    문서N
    더글러스 엥겔바트가 1968년 대
    중에게 처음으로 마우스를 공개하
    자, 사람들은 충격에 빠졌다.

    Q: 마우스는 누가 만들었어?
    문서1 내의 정답
    더글러스 엥겔바트
    문서2 내의 정답
    더글러스 엥겔바트
    문서N 내의 정답
    엥겔바트

    View Slide

  13. 키워드 기반 검색의 한계
    전통적인 키워드 검색에서는 BM25 기반의 알고리즘 사용
    질의와 후보 문서 사이에서 일치하는 키워드를 바탕으로 적합 문서 판단
    따라서 의미가 동일해도 키워드가 다르면 검색 결과가 달라진다!
    Q: 개발자
    Q: 제작자
    Q: 만든이
    Q: 발명가
    Result: 4.90M
    Result: 2.20M
    Result: 33.0M
    Result: 0.39M
    적합 문서를 놓치지 않기 위해 일반적으로 ‘질의 확장’을 사용
    그러나 질의를 확장할 수록 검색되는 결과는 많아지나,
    그 중 가장 적합한 문서가 무엇인지 알기는 더 어려워진다

    View Slide

  14. 기존 기계 독해 모델의 한계
    한글은 한국어의 공식문자로서, 세종이
    한국어를 표기하기 위하여 창제한
    문자인 '훈민정음'을 20세기 초반 이후
    달리 이르는 명칭이다.
    Q: 세종이 한국어를 표기하기 위해
    창제한 문자가 뭐야?
    A: 훈민정음
    Q: 세종대왕이 만든 글자가 뭐야? A: 공식문자
    Q: 정조가 한국어를 표기하기 위해
    창제한 문자가 뭐야? A: 훈민정음
    Q: 세종대왕이 한글을 만들었지? A: 훈민정음

    View Slide

  15. 기존 시스템과의 비교
    기존 시스템 2.0
    검색 모듈
    구조 키워드 기반 검색
    딥러닝 모델을 이용한 검색
    + 키워드를 이용한 필터링
    검색 결과 규모 대량이지만 부적합 문서도 다수 소량이지만 적합 문서 위주로 추출
    기계 독해
    모듈
    구조 GloVe + CNN + Transformer Splinter(Transformer기반 PLM)
    정답을 찾을 수 없는 질문 처리 불가하여 무조건 정답 추출 정답을 찾을 수 없는 경우를 판단 가능
    예/아니오 질문 처리 불가
    예/아니오로 답변하며,
    그 근거문장도 찾아줌
    서빙 프레임워크 C++로 직접 구현
    모델을 ONNX로 변환,
    ONNXRuntime을 커스텀화하여 사용

    View Slide

  16. 검색 모듈 개선

    View Slide

  17. Dense Passage Retrieval(DPR)
    Query
    Model
    Passage
    Model
    Q: 마우스는 누가
    만들었어?
    P: 최초의 마우스는
    스탠포드 연구소에서
    근무하던 …
    [0.12, -0.13, … , 0.75]
    [0.39, -0.05, … , 0.12]
    내적 유사도: 12.90
    Dense Vector

    View Slide

  18. DPR 모델을 잘 훈련시키기
    질의1 – 문서1
    질의2 – 문서2
    질의3 – 문서3

    질의1
    문서1
    적합
    In-Batch Negative Sampling(IBNS)
    부적합문서를 랜덤하게 추출하여 훈련에 사용
    모델을 잘 훈련시키기에는 난이도가 너무 낮다!

    View Slide

  19. Adaptive Batch Scheduling
    Choi, D., Shin, M., Kim, E., & Shin, D. R. (2021).
    Adaptive batch scheduling for open-domain
    question answering. IEEE Access, 9, 112097-112103.
    모델이 보기에 유사한 문서들 중 적합문서가 아닌 것들을
    부적합문서로 선택하여 훈련에 사용하자!
    첫 Epoch에는 In-Batch Negative Sampling을 사용
    그 후 매 Epoch마다 Adaptive Batch Scheduling을 적용

    View Slide

  20. Adaptive Batch Scheduling
    https://microsoft.github.io/MSMARCO-Passage-Ranking-Submissions/leaderboard/

    View Slide

  21. DPR의 한계
    그러나 실험에서 좋은 결과를 보인 모델이었음에도
    실제 환경에서는 기대에 못 미쳤다

    View Slide

  22. DPR의 한계
    수 많은 질문을 한정된 임베딩 벡터로 압축
    학습 때 자주 본 질문 유형이나
    명사에 대해서는 잘 변별할 수 있음
    학습 때 보지 못한 질문 유형이나
    새로운 명사에 대해서는 변별력이 떨어짐

    View Slide

  23. Keyword + DPR 검색
    질문에서 필수 키워드를 추출 후
    필수 키워드를 포함하는 문서를 대상으로 DPR 검색을 수행해보자

    View Slide

  24. Keyword + DPR 검색
    @1 @3 @5 @10
    Keyword Only 56.81 71.77 76.27 81.54
    DPR Only 67.29 79.42 83.22 87.49
    DPR + Keyword 78.87 87.45 90.07 92.88
    질문에서 필수 키워드를 추출 후
    필수 키워드를 포함하는 문서를 대상으로 DPR 검색을 수행해보자
    (KLUE MRC Dev셋 평가)

    View Slide

  25. 기계 독해 모듈 개선

    View Slide

  26. 사전학습 언어모델 도입
    언어를 잘 이해하는 사전학습 언어모델(PLM)을 기반으로 사용하자!
    그런데 어떤 PLM을 사용하는 게 좋을까?

    View Slide

  27. 사전학습 언어모델 도입
    화가

    그림

    그린다
    [MASK]

    [MASK]

    그린다
    화가
    그림
    BERT
    BERT
    원본 손상 복원

    View Slide

  28. 사전학습 언어모델 도입
    화가

    음식

    그린다
    화가

    그림

    그린다
    [MASK]

    [MASK]

    그린다
    Generator
    (BERT)
    원본 손상 복원
    ELECTRA
    Discriminator
    (ELECTRA)
    판별
    원본
    원본
    교체
    원본
    원본

    View Slide

  29. 사전학습 언어모델 도입
    패러프레이징 다중 문장 추론 답변 불가 종합
    KoBERT 61.99 60.85 64.36 62.43
    KoELECTRA 65.29 64.16 67.65 65.73
    (KLUE MRC Dev셋 평가)

    View Slide

  30. SPLINTER
    정치권 [Q1] 찬반대립.. 대선이슈 관측
    정부가 원전확대정책을 고수하겠다는 입장을 분명히 하면서 찬반
    논란이 확산될 것으로 보인다. 지식경제부 홍석우 장관은 25일 오
    후 방영되는 보도전문채널'뉴스Y'프로그램'초대석Y'에서 정부의
    [Q2]는 바뀐 것이 없다며 원전을 계속 늘려나갈 것이라고 밝혔다.
    지난 22일 강원 삼척과 경북 영덕이 신규 원전 후보지로 낙점되면
    서 지역 여론이 갈리고 [Q3]과 시민사회를 중심으로 찬반 갈등이
    심화하는 가운데 공개된 언급이어서 주목된다.
    원전을 운영하는 한국수력원자력도 최근 참고자료를 통해 이런 정
    책 방향을 거듭 확인했다. 일본 후쿠시마 원전 사고로 원전 안전성
    에 대한 우려가 증가했지만 안정적 전력수급, [Q4], 기후변화 대응
    을 고려할 때 원자력이 가장 현실적 대안이라는 논거에서다.
    물론 한층 더 강화된 안전성을 확보하고 정보의 투명성을 확대하면
    서 국민 신뢰를 바탕으로 주요 현안을 추진해 나간다는 복안이다.
    이처럼 원전정책 기조가 유지될 필요성은 이미 지난 3월말 원자력
    안전위원회와 지경부 차원에서 일찌감치 확인됐다.
    • 반복적으로 등장하는 토큰 Span 중 하
    나만 제외하고 나머지는 모두
    Masking
    • Masking된 토큰의 최종 출력을 가지
    고 원 단어 Span의 위치를 찾도록 모
    델을 학습
    • 사전 학습 목적이 추출형 질의 응답 과
    제와 유사하기 때문에 BERT와 동일한
    크기의 모델일지라도 성능이 더욱 개선
    된다.
    Ram, O., Kirstain, Y., Berant, J., Globerson, A., & Levy, O. (2021). Few-shot question
    answering by pretraining span selection. arXiv preprint arXiv:2101.00438.

    View Slide

  31. SPLINTER
    패러프레이징 다중 문장 추론 답변 불가 종합
    KoBERT 61.99 60.85 64.36 62.43
    KoELECTRA 65.29 64.16 67.65 65.73
    SPLINTER v1 68.73 69.63 74.25 70.70
    SPLINTER v5 70.04 71.48 72.66 71.23
    SPLINTER v6 73.78 74.03 71.09 73.00
    SPLINTER v6 + Distillation 75.58 76.13 71.47 74.44
    (KLUE MRC Dev셋 평가)

    View Slide

  32. 예/아니오/답변불가 질문 처리하기
    설명 의문문
    ‘예/아니오’가 아닌 구체적인 설명을 요구하는 질문
    ‘마우스는 누가 만들었어?’
    ‘예/아니오’의 답변을 요구하는 질문
    ‘마우스는 앵겔버트가 만들었어?’
    판정 의문문

    View Slide

  33. 예/아니오/답변불가 질문 처리하기
    설명 의문문
    ‘예/아니오’가 아닌 구체적인 설명을 요구하는 질문
    ‘마우스는 누가 만들었어?’
    ‘예/아니오’의 답변을 요구하는 질문
    ‘마우스는 앵겔버트가 만들었어?’
    판정 의문문
    추출형 QA 모델로 해결 가능 ???

    View Slide

  34. 예/아니오/답변불가 질문 처리하기
    판정 의문문을 다루는 모델을 확장하는 건 어렵지 않다.
    그런데 모델의 학습데이터는 어떻게 확보할 수 있을까?

    View Slide

  35. 예/아니오/답변불가 질문 처리하기
    전제 가설 관계
    10층에 건물사람들만 이용하는
    수영장과 썬베드들이 있구요.
    건물사람들은 수영장과 썬베드를
    이용할 수 있습니다.
    함의
    흡연자분들은 발코니가 있는 방이면
    발코니에서 흡연이 가능합니다.
    어떤 방에서도 흡연은 금지됩니다. 모순
    10층에 건물사람들만 이용하는
    수영장과 썬베드들이 있구요.
    수영장과 썬베드는 유료입니다. 중립
    (KLUE NLI 데이터셋)

    View Slide

  36. 예/아니오/답변불가 질문 처리하기
    전제/지문 가설/질문 관계/답변
    10층에 건물사람들만 이용하는
    수영장과 썬베드들이 있구요.
    건물사람들은 수영장과 썬베드를
    이용할 수 있습니다.
    함의
    건물사람들은 수영장과 썬베드를
    이용할 수 있습니까?

    흡연자분들은 발코니가 있는 방이면
    발코니에서 흡연이 가능합니다.
    어떤 방에서도 흡연은 금지됩니다. 모순
    어떤 방에서도 흡연은 금지됩니까? 아니오
    10층에 건물사람들만 이용하는
    수영장과 썬베드들이 있구요.
    수영장과 썬베드는 유료입니다. 중립
    수영장과 썬베드는 유료입니까? 알 수 없음
    KLUE NLI 데이터셋을 자동 변환

    View Slide

  37. 예/아니오/답변불가 질문 처리하기
    Q: 마우스는 누가 만들었어?
    유형 분류: 답변불가 / 설명 / 예 / 아니오
    정답: 더글라스 엥겔바트
    근거: 일반적으로 알려진 마우스는 스탠퍼
    드 연구소의 더글러스 엥겔바트가 ...
    디스플레이 시스템을 위한
    위치 지시기, 통칭 마우스는
    평면 위에서 2차원 움직임을
    인식할 수 있도록 한 컴퓨터
    입력장치이다.

    View Slide

  38. 예/아니오/답변불가 질문 처리하기
    Q: 마우스는 엥겔바트가 만들었어?
    유형 분류: 답변불가 / 설명 / 예 / 아니오
    정답: 예
    근거: 일반적으로 알려진 마우스는 스탠퍼
    드 연구소의 더글러스 엥겔바트가 ...
    디스플레이 시스템을 위한
    위치 지시기, 통칭 마우스는
    평면 위에서 2차원 움직임을
    인식할 수 있도록 한 컴퓨터
    입력장치이다.

    View Slide

  39. 예/아니오/답변불가 질문 처리하기
    Q: 엥겔바트는 마우스를 왜 만들었어?
    유형 분류: 답변불가 / 설명 / 예 / 아니오
    정답: 알 수 없음
    근거: 알 수 없음
    디스플레이 시스템을 위한
    위치 지시기, 통칭 마우스는
    평면 위에서 2차원 움직임을
    인식할 수 있도록 한 컴퓨터
    입력장치이다.

    View Slide

  40. 최종 구축 모델의 성능
    패러프레이징 다중 문장 추론 답변 불가 Yes F1 No F1 Support F1
    SPLINTER YNS-base 76.18 76.73 71.30 88.87 85.50 73.20
    KLUE-RoBERTa- large 75.58 86.63 -
    * SPLINTER Y/N/S 모델은 Dev셋에 대해 평가한 것
    * KLUE-RoBERTa-large는 공식 사이트에 보고된 Test셋에 대한 결과

    View Slide

  41. 효율적으로 서빙하기

    View Slide

  42. 서빙용 플랫폼 선택
    GPU CPU
    vs
    Throughput이 높음
    대규모 입력에 효율적
    상대적으로 고비용
    Latency가 낮음
    소규모 입력에 효율적
    상대적으로 저비용

    View Slide

  43. 서빙용 프레임워크 선택
    학습 프레임워크와의 연동성
    다양한 모델 구조에 대한 지원
    빠른 추론 속도

    View Slide

  44. 서빙용 프레임워크 선택
    학습 프레임워크와의 연동성
    다양한 모델 구조에 대한 지원
    빠른 추론 속도
    C++ 직접 구현

    View Slide

  45. ONNXRuntime 최적화
    모델 양자화
    레이어 퓨전
    상수 폴딩

    View Slide

  46. 모델 양자화
    0.07 ⋯ −0.30
    ⋮ ⋱ ⋮
    0.21 … 1.67
    Activation
    0.05 ⋯ 0.25
    ⋮ ⋱ ⋮
    −1.91 … 0.02
    Weight Bias
    0.37 ⋯ −0.15
    Dense Linear Layer의 연산 과정
    [ 512 , 768 ] [ 768 , 3072 ] [3072]
    Shape:
    seq_length hidden_dim In_dim out_dim out_dim

    View Slide

  47. 모델 양자화
    5 ⋯ −22
    ⋮ ⋱ ⋮
    16 … 127
    Activation
    3 ⋯ 17
    ⋮ ⋱ ⋮
    −128 … 1
    Weight Bias
    0.37 ⋯ −0.15
    Per-Tensor Quantization
    × 0.0131 × 0.0149
    Weight와 Activation을 int8 범위의 정수로 바꿔 행렬 연산을 수행
    float32 연산 대비 최대 4배까지 가속 가능 (AVX512-VNNI 장비에서)
    Activation 및 Weight에 Scale 파라미터를 각각 1개씩만 사용하기 때문에 오차가 큼

    View Slide

  48. 모델 양자화
    5 ⋯ −22
    ⋮ ⋱ ⋮
    16 … 127
    Activation
    3 ⋯ 127
    ⋮ ⋱ ⋮
    −128 … 10
    Weight Bias
    0.37 ⋯ −0.15
    Per-Channel Quantization
    × 0.0131
    Weight의 Column별로 다른 Scale 파라미터를 사용
    Weight의 정확도 손실을 최소화
    일반적으로 널리 쓰이는 양자화 기법
    × 0.0149 × 0.0020

    View Slide

  49. 모델 양자화
    30 ⋯ −128
    ⋮ ⋱ ⋮
    16 … 127
    Activation
    3 ⋯ 127
    ⋮ ⋱ ⋮
    −128 … 10
    Weight Bias
    0.37 ⋯ −0.15
    Per-Token Quantization
    × 0.0131
    Activation의 Row별로 다른 Scale 파라미터를 사용
    Weight뿐만 아니라 Activation의 정확도 손실도 최소화
    PyTorch나 ONNXRuntime에서는 기본적으로 아직 지원하지 않는 양자화 기법
    Int8 GEMM Kernel을 잘 수정하면 추가적인 비용 없이 Per-Token Quantization연산 가능
    × 0.0149 × 0.0020
    × 0.0023

    View Slide

  50. 레이어 퓨전
    자주 사용되는 여러 레이어들의
    조합을 하나의 레이어로 합쳐서 연산을 효율화하는 것
    커스텀
    퓨전 레이어
    설명
    Requanti-
    zation
    Linear 이후 이어지는 Quantize 레이
    어를 하나로 결합
    LinearBias
    Gelu
    Linear 후 이어지는 Bias, Gelu 레이어
    를 하나로 결합
    JointQA
    정답 영역의 시작 지점과 끝 지점을 선택
    하는 레이어를 하나로 결합

    View Slide

  51. ONNXRuntime 최적화 결과
    평균 Latency(ms) 상대 속도 개선 Dev EM
    원본 268.3 1.00 74.90
    +ONNX 기본 양자화(Per-Channel) 138.9 1.93 73.82
    +Per-Token 양자화 139.9 1.91
    74.23
    +Gelu AVX512 & 퓨전 132.4 2.03
    +JointQA 레이어 퓨전 97.7 2.74
    +FindMinMax AVX512 87.6 3.06
    +LayerNorm AVX512
    +QEmbedding AVX512
    82.8 3.24
    + SelfAttention 양자화 75.0 3.58
    + Requantization AVX512 퓨전 67.5 3.97
    (Intel Xeon Gold 5220에서 8 thread로 구동)

    View Slide

  52. 정리
    검색 모듈 키워드 검색에 DPR을 추가하여 검색 성능 개선
    기계 독해 모듈
    질의응답에 적합한 PLM을 도입
    판정 의문문 & 정답 유무 처리하도록 모델 확장
    NLI를 비롯한 다양한 데이터셋을 활용하여 훈련 데이터 증강
    서빙
    ONNXRuntime을 도입하여 서빙 프로세스 단순화
    Per-Token 양자화 구현하여 성능 개선
    ONNXRuntime에 커스텀 최적화 적용하여 속도 개선

    View Slide

  53. 향후 계획
    시스템 정확도 추가 향상
    긴 문서에 대한 지원 추가
    다양한 문서 유형에 대한 모델 개발

    View Slide