Coder Social home page Coder Social logo

Comments (6)

nonegom avatar nonegom commented on August 15, 2024 3

실험기록2

이전 실험기록에 적어놨던 것처럼 이전 SOTA모델에 대해 k_retrieval을 올렸을 때 성능이 증가할 것이라는 생각에 실험을 진행해봤다. SOTA 모델(batch8, lre3-5, epoch3)에 대해 top_k_retreival 40을 진행했다. 이전 가장 좋은 성능을 보여줬던 step 2600에 대해 실험을 진행했다. 결과는 아래처럼 나와서 기존 점수에서 15점 이상씩 상승한 것을 확인할 수 있었다. 하지만 이전에 말했던 것처럼 inference 시간 18분 정도 소요됐다.

기존 결과: EM: 44.58, F1: 55.92
결과: EM: 60, F1: 70

결과도 BaseLine으로 세워도 될 정도로 점수가 딱 떨어져서 괜찮은 것 같다는 생각이 든다. 해당 모델을 재현하기 위한 파라미터 세팅값을 밑에 적어두도록 하겠다.

  • model: KLUE/Roberta_Large
  • lr: 3e-5
  • batch: 8
  • epoch:3
    --> 2600 step 모델 (F1 높은 기준)
    ----inference.py----
  • top_k_retrieval: 40

from level2-mrc-level2-nlp-09.

nonegom avatar nonegom commented on August 15, 2024

실험결과

모델: KLUE/Roberta_large / lr 1e-5 / batch_size 12 / Epoch 3

해당 실험은 하이퍼파라미터 세팅을 진행하다고 지표가 괜찮게 나온 모델 (checkpoint 1600_EM과 F1 둘 다 최고였음)이었기에 inference를 진행했다. 이때, 성능이 높게 나와서 파라미터를 분석해보다 aurguments에서 k_retrieval을 20으로 준 것을 확인했다. 이에 따라서 추가적으로 10, 40일 때의 실험을 진행했다. 실험은 동일한 모델, 파라미터 셋에 대해 inference 시에 k_retrieval만 변경해줬다.

참고로 k_retrieval은 train 말고 inference에만 사용된다는 점을 기억하자!!

실험1) top_k 40: EM: 55.00 / F1: 64.4400 / 소요시간: 18분
실험2) top_k 20: EM: 53.33 / F1: 63.6700 / 소요시간: 9분
실험3) top_k 10: EM: 41.67 / F1: 53.7600 / 소요시간: 4분 30초

실험결과 확실히 top_k_retrieval을 높게 줬을 때 성능이 올라가는 것을 확인할 수 있었다. top_k를 2배 증가시켰을 때, 리더보드 기준 점수인 EM Score가 11.7점이나 올랐고, 또 20-> 40으로 올렸을때도, 1.7만큼 증가했다. 하지만 이에 따라 inference소요시간도 2배씩 증가했다. 서비스적인 측면을 고려retieval단계에서 시간이 너무 오래 걸리면 안 된다고 생각하기 때문에 무분별하게 변수를 올리면 안 될 것 같다.
그래도 성능 및 시간 측면을 모두 고려했을 때, 10-> 20으로 증가시키면 소요시간 증가보다 성능 증가 폭이 크다고 생각한다. 따라서 우선 top_k_retrieval 20으로 실험을 진행해보면 좋을 것 같다.

추가적으로 top_k_retrieval 10일 때를 기준으로 보면 단일 모델 최종 이전 SOTA 모델(batch8, lre3-5, epoch3)에 비해 EM Score가 2.9점 정도 낮았다. 따라서 이전 SOTA모델에 대해 k_retrieval을 올렸을 때 성능이 증가할 것이라는 생각에 실험을 진행해보고자 한다.

from level2-mrc-level2-nlp-09.

detailTales avatar detailTales commented on August 15, 2024

top_k_retrieval의 크기를 키운 것만으로도 성능이 매우 오른 것을 확인할 수 있었고 이를 통해서 얻은 분석과 앞으로 해야할 일들에 대해 댓글로 남기자면

  1. top_k_retrieval 이 40일때 성능이 매우 오른 것은 정답을 가지고 있는 passage가 베이스 라인의 tfidf 기반 retrieval에서 정답이 포함되어 있지 않은 passage가 높은 순위(1위부터 10위) 포함된 passage가 낮은 순위에(11위부터 40위) 기록되어 있었기 때문이라 분석된다. -> 현재 BM25Okapi 로 retrieval 구현 중이다
  2. 현 베이스 라인 코드에는 reader 모델만 validation을 할 수 있다. 정답이 포함된 passage들을 더 잘 찾기 위해서 retrieval들을 추가, 개선이 들어갈 것인데 어느 retrieval가 성능이 더 좋은지 확인하기 위해 retrieval만의 성능 측정을 위한 메트릭이 필요해 보인다.

from level2-mrc-level2-nlp-09.

nonegom avatar nonegom commented on August 15, 2024

태일님 말씀을 정리해보자면, 1번의 경우 "top_k_retrieval을 40으로 올렸을 때 성능이 올랐다는것은 기존 10일 때 잘 못 찾고 있기 때문이니 이것을 개선시키고자 하신다는 것"일까요?? 해당 질문이 맞다면 저는 이 부분이 필요하다고 생각합니다. 저도 만약 top_k_retrieval을 40으로 두면 실제 서비스에서 한계가 있을 것 같습니다. (retrieval 단계에서 시간이 너무 길어지기 때문에)

2번의 경우 retrieval 성능 측정과 관련해서 만약, 관련 metric이 없다면 기준 모델을 두고 inference 결과만 비교를 함으로써 성능을 측정할 수 있는 방법이 있지 않을까 생각이 들기는 합니다. 제출해야만 성능을 확인할 수 있다는 단점이 있기는 하지만 해당 단점은 모든 Task에 해당되는 것 같다고 생각이 듭니다.

from level2-mrc-level2-nlp-09.

detailTales avatar detailTales commented on August 15, 2024

1번 의견에 대한 경우 사실 top-k를 늘리는 것이 시간적인 단점 말고도 추가적인 단점이 있는지 생각을 더 해봐야할 것 같아요! 저도 확신은 잘 못해서 오늘 멘토링 시간에 멘토님께 top-k를 늘리는 것이 성능에 악영향을 크게 줄까요? 라는 질문을 드릴 예정이였습니다! top-k를 50~60으로 늘려서 제출해봐서 성능을 한번 봐보는 것도 방법이고요

2번 같은 경우에도 찬국님 말씀처럼 동일한 모델에 retrieval만 다르게 두고 inference하는 식으로 비교해도 어떤게 더 좋은지 비교는 되겠지만 구현하고 있는 입장에서 번거롭기도하고 비교하고자 retrieval가 얼만큼이나 정답을 더 잘 가져오냐에 대한 정확한 수치를 확인할 수가 없어서 구현을 진행하긴 했습니다. 구현을 진행해보니 현 SOTA모델의 개선 방향 같은 것도 보여서 좋긴 하더라고요 #20

from level2-mrc-level2-nlp-09.

detailTales avatar detailTales commented on August 15, 2024

이슈가 생긴거에 비해 너무 늦은 실험이지만 top-k 관련해서 bm25 가지고 top-k를 40에서 50으로 올리니까 성능이 떨어지는 것을 확인하였습니다. 인퍼런스 시간 외에도 너무 많은 리트리버 결과들이 정답을 찾는 것을 방해한다는 것을 확인하였고 이로 인해서 차후에라도 점수를 올리기 위해 top-k를 무작정으로 올리는 것은 답이 아니라는 것을 깨닫고 추가적으로 앞으로 리트리버 구현의 목적을 정답 패시지를 찾는 것 뿐아니라 높은 rank에 위치시키고 top k를 줄여야할 것 같습니다
image

from level2-mrc-level2-nlp-09.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.