Open SinGonKim opened 2 years ago
고생하셨어요. k를 여러개로 해서 실험이 진행되면 좋을 것 같아요. 5, 10, 20, 50 등으로
신곤님 좋은 insight 제공해주셔서 감사드립니다. 궁금한 것이 있는데, k를 늘려서 k개의 문서를 retrieval한다고 했을 때, 예를 들어, k = 10일 때보다, k = 50일 때 성능이 더 좋아졌다는 것은 가장 유사도가 높은 첫 번째 문서보다, 11번째(혹은 그 이상)으로 유사도가 높은 문서에서 정답이 나오는 경우도 있다는 뜻인가요?
신곤님 좋은 insight 제공해주셔서 감사드립니다. 궁금한 것이 있는데, k를 늘려서 k개의 문서를 retrieval한다고 했을 때, 예를 들어, k = 10일 때보다, k = 50일 때 성능이 더 좋아졌다는 것은 가장 유사도가 높은 첫 번째 문서보다, 11번째(혹은 그 이상)으로 유사도가 높은 문서에서 정답이 나오는 경우도 있다는 뜻인가요?
넵 그 문서를 k개 끌어다가 다 이어 붙인 다음에 start_point, end_point를 잡아서 정답을 도출 하는 것입니다. 답이 다르다는 것은 k가 커졌을 때 유사도가 높은 문서에서 정답이 나온 것이라고 볼 수 있습니다. 그런데 k=100일 때 점수가 줄어들었는데 저는 아직 정확히 이해를 못했는데 Granularity에 따라 k가 달라질 수 있다고 할 수 있고 항상 k를 올린다고 성능이 높아지는 것은 아니라고 하셨습니다.
아하 이어붙임으로써 k개의 문서를 고려하는거군요! 감사합니다ㅎㅎ k가 너무 커지면 또 성능이 떨어지는군요. 그 부분은 이번주에 Reader 부분을 공부하면서 저도 생각해보겠습니다.
신곤님 고생하셨어요. 현재 테스트 결과를 보니까 최적의 k가 20~50 사이에 존재하는 것 같은데, 30이랑 40도 해주실 수 있나요??
신곤님 고생하셨어요. 현재 테스트 결과를 보니까 최적의 k가 20~50 사이에 존재하는 것 같은데, 30이랑 40도 해주실 수 있나요??
넵 30 40 돌리면서 오늘까지 이거 마무리하고 내일부터 새로운 것 하려고 합니다.
Inference 에서 top-k를 x라 하면 Retriever가 질문과 가장 관련성 높은 x개의 문서 출력 Reader는 x개의 문서를 읽고 답변 예측 Reader가 예측한 답변 중 가장 score가 높은 것을 최종 답으로 사용합니다.
마스터님께서 k를 늘리면 점수가 대체로 높아진다고 하셨고 희락님께서 To_do(해야할 것)에 올리셨고 그에 따라서 실험을 해보았습니다. 다음과 같이 따라가보면
![4](https://user-images.githubusercontent.com/87477828/138068369-b965e4cc-f03b-4a63-9535-82c33e593166.png)
top_k 숫자만 바꾸면 sparse에서 top_k를 알아서 concate해서 연결시켜줌을 알 수 있습니다.(retireval에서는 거의 모든 변수에서 top_k를 사용합니다. argument에서도
바꾸면 끝입니다.
eval단계에서도 top_k를 사용해서인지 top_k를 바꿀 때 마다 train부터 시행해서 결과를 뽑아내야 합니다. 현재까지 한 top_k=10일 때와 50. 100, 20, 40, 30일 때를 비교해보겠습니다. top_k = 10, 50
top_k = 100, 20
top_k = 40, 30
![1](https://user-images.githubusercontent.com/87477828/138148721-28de4337-da00-498c-8b01-2f0a0a7c47df.png)
위에 보시면 답이 어느순간 달라짐을 알 수 있습니다. 리더보드(LB)의 결과를 확인한 결과![8](https://user-images.githubusercontent.com/87477828/138069760-7b1f4bd5-64eb-44fa-9fa7-e6b6c74e291d.png)
top_k = 100![top_k=100](https://user-images.githubusercontent.com/87477828/138130156-daa08439-b2b1-441b-a122-53375defd503.png)
top_k = 50![8](https://user-images.githubusercontent.com/87477828/138070359-2e0de752-ac92-46f3-bd65-a227dd2c84a9.png)
top_k = 40![40](https://user-images.githubusercontent.com/87477828/138148658-8b519096-f960-4810-9982-7348e0fd859e.png)
top_k = 30![30](https://user-images.githubusercontent.com/87477828/138148691-4d35284e-24c6-421b-ad88-09e4e7eb2b83.png)
top_k = 20![2](https://user-images.githubusercontent.com/87477828/138135591-2e628452-9dc8-4ea5-ad60-d2884846b554.png)
top_k = 10![9](https://user-images.githubusercontent.com/87477828/138070574-addf139a-d2dc-4d31-a230-d2cc8b317a29.png)
이 나왔습니다. 즉 상당히 효과가 있다는 것을 알 수 있었습니다. 물론 Sparse_retrieval 으로 해서 조금씩 달라질 수 있지만 k=30일때로 하는 것이 좋을 것 같습니다.