Beomi / KcBERT

🤗 Pretrained BERT model & WordPiece tokenizer trained on Korean Comments 한국어 댓글로 프리트레이닝한 BERT 모델과 데이터셋

Home Page:https://huggingface.co/beomi/kcbert-base

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

predict 시에 데이터가 증가하는 현상

woodongk opened this issue · comments

안녕하세요 다시 또 이슈를 들고오게 되었네요 .. ;-;
캡처

모델에 만개의 데이터를 학습하려 했는데 계속 만개 이상의 데이터로 라벨이 나오는데, 이게 어떤 경우에 이렇게 되는건지 아시나요?

사진은 배치를 32로 했더니 계속 안되서, 배치 사이즈를 1로 바꾸고 테스트한 결과입니다.

안녕하세요.
해당 부분은 혹시 어떤 코랩 파일 실행중 발생하신 문제일까요?

아! base 파일입니다.

@Beomi 안녕하세요,

추가 설명드리자면 모델을 학습한 뒤 테스트 케이스에 적용시켜 predict 할 경우에는 이상이 없었습니다.

이후 해당 모델을 학습되지 않은 완전히 새로운 데이터에 적용시켰더니 predict 시에 데이터가 증가하는 현상이 있었습니다.

혹시 추가로 학습하시려는 데이터의 샘플을 확인해볼 수 있을까요?

네, 제가 학습에 사용한 데이터 형태는 nsmc와 동일한 포맷으로 맞추었고, 도메인은 네이버 댓글 데이터 입니다.
@Beomi 님 코드는 transfer learning 하기 위해 사용하고 있었습니다.

  1. 학습에 사용된 데이터
id	document	label
233751	기자는 사기꾼과 공생한다 깨끗한 문대인과는 거리가 멀다	0
223627	광주, 전라도 지지도 받지못한 문대통령이왜 그리 광주 사태에 연연할까~??그것도 30년이나 지나는 것을~??뭐 하겠다면 어쩔 수 없지만~닭그네와 쥐박이 사건부터가 우선 아닌가~?촛불로 대통령 만들어주니 너무오버하시네~???	1
224141	죗값받아야죠 아주달게 ㆍㆍ	0
139340	상관이 있고 없고를 떠나서 줘야되고 부담되는건 사실이지 뭔 개소리야. 아님 경제나 살리고 임금인상을 하던가 다 쓰러지고 굶어 죽을판에 이따구로 많이 올리면 다같이 죽자는 거지... 사람이 먼저다? 맞네 사람 먼저 죽이네... 이나라 국민 절반은 이놈의 최저임금이 죽일꺼다. 인플레이션이 어디까지 치닫는지 보자!	1
526382	솔직히 무조건 문재인 찬양만 하지들 말고 상식적으로 바라봐라.. 문재인 1년동안 한거 뭐있나? 이명박이 유치한 올림피한거? 지금 경제 안보가 후퇴중인데. 제 2의 IMF온다고 한다더라 3년안에 망한다. 중소기업 소상공인 죽이고 공무원 늘리는데도 찬양이 나오나? 기업죽이고 노조 살리고, 소득세 인상, 인건비 인상, 물가인상, 서민들 대출규제, 금리인상 등 하나도 잡지 못하는데 대통령이라고?? 노무현전직대통령도 이렇진 않았다. 이명박도 세계위기에서도 극복했는데 문죄인은 뭐냐 지금 암것도 못하고 한것도없고 찬양만받고 미개한거지 국민들이.	1
508943	우리나라는 전세계 유일한 휴전국가다. 휴전이란 말뜻 모르나? 내일 당장 전쟁날 수 있다는 말이다~ 그런 북한이 주적이 아니라고? 요즘 젊은세대가 부모가 닦아논 세상 편하게 사니깐 안보감각이 떨어졌나본데.. 내일 당장 핵떨어져도 아무 이상없는 나라가 한국이다 정신차리자~	1
522156	북한도 우리민족입니다 언젠가 통일이 되야하고요 자유(한국당)당은 정치에 이용안했으면 합니다	0
118814	극우인사들! 국정농단의 그 폐족들이 목소리를 높이는 이 기막힌 현상들! 살인자와 강도 그리고 사깃꾼들이 정의를 외치는 것 하고 하나ㅈ다를바 ㅇ	0
556531	보수정권하에서 부패했지만 갱제는 발전했고, 진보좌파정권에서 갱제는 말아먹었다. 그렇다고 진보좌파가 부패하지 않은건 아니다 오히려 더 부패한것 같다 겉으로만 깨끗한척.	1
212804	나도 세래까지 받아서 아는데 이대로 쭉 세금부과 추진해야한다.특히 개신교 쪽은 감추는것도 많고 뒤로 들어는돈 무지 많다. 특히 큰교회들.. 심하지.	1
549881	문대통령회이팅입니다 명박보다낫네 명박4대강돈엉청들어갓다고 부실장난아니지 근혜순실퍼주고 북한하고잘지내서무역하고 먼훗날우리도관광하고 반대하는노인들 얼마나살겟어 먼훗날미래생각하고살아야지 만일 박정희가지금까지독재했다면우리나라도북한처럼되여장난 아니겠지 하지만 북한도 좋은쪽으로변화오고있잖아 우리국민들도무슨일있으면북한팔고했지 이젠국민들안속아요 오번기회 잘되도록 박수보내라 어느당처럼북한빨갱이팔지않는다 알것어	0
251361	문슬람들 대단하네..배댓이 지금 거의 옹호성 ㅋㅋ 진짜 나라개판이다 박그네 시즌2다 ㅋㅋ	1
261971	진짜 보고 싶은것만 보네. 노무현 정부가 감사한게 왜 문제냐? 같은 사안에 노무현 정부만 감사했네. 그럼 칭찬 받을일 아니냐?	0
519380	매크로 군단 출근했냐?ㅋㅋ	1

학습 이후 새로운 데이터는 동일한 데이터의 확장된 버전으로, label을 2로 초기화해둔 상태로 넣었습니다. (코드를 보니 label은 무시하게끔 되어있어서 그냥 2로 초기화했습니다. 생각해보니까 이점이 문제가 될 수도 있을까요?)

  1. 학습된 모델에 inference 하기 위해 사용된 데이터 샘플
    image

제가 아직 서투른 실력이라 혼자 에러 해결하기가 어렵네요.
신경써주셔서 감사합니다.

(필요하시다면 메일로 전체 데이터 보내드리겠습니다)

안녕하세요,

해당 방식이라면 KcBERT-large 예제 코드에서 pretrained_model Args부분만 beomi/kcbert-base로 수정하셔서 코드 그대로 사용하시고 데이터 파일을 바꾸고 데이터 이름 부분만 변경해 넣어주시면 금방 학습되지 싶습니다.

아, 그리고 만약 label이 0, 1같은 Binary classification이 아니라면 #3 이슈를 참고해보시면 좋을 것 같습니다.

네. 말씀주신 kcbert-large 코드도 사용해보았습니다.

다만 그 코드는 predict 함수가 없어서, kcbert-base 코드 예제의 predict.py 를 함수를 이용해서 새로운 데이터 (test dataset) 에 대한 정확도를 받아오려는 작업을 시도중이었습니다.

저는 지금 긍정/부정 분류가 아닌 다른 방식의 binary 분류 태스크를 위해 준범님 모델을 사용하고 있었습니다.
(제가 혼동을 드린 것 같은데 binary classification 태스크가 맞습니다. )

그리고 학습 이후 predict 과정에서 데이터가 증가하는 현상이 보였습니다.
(3천개 가량의 데이터에서는 이런 현상이 없었고, 10만개를 넘어가니 데이터가 소폭 증가했습니다.)

초기에 전달을 미흡하게 해서 혼동드려 죄송합니다.

안녕하세요,

리드미에 올려주신 clean 함수로 전처리를 사전에 한 뒤에 predict.py를 실행하니 정상적으로 개수가 맞게 추출되었습니다.
새로운 데이터에 데이터 클리닝 작업을 안 한 상태로 넣었더니 발생한 오류였던 것 같습니다.
사실 정확한 원인은 잘 모르겠네요.
번거롭게 해서 죄송합니다 (이 이슈는 닫으셔도 될 것 같습니다)

그리고 추가로 말씀드릴 점이 있는데,
현재 base 코드에 올려주신 predict.pypredict 함수에서 아래 부분을 주석처리해야 정상적으로 잘 동작합니다.

if args.model_type != "distilkobert":
    inputs["token_type_ids"] = batch[2]

위 부분을 주석 처리 하지 않을 경우 에러가 발생하더라구요.
참고하시면 좋을 것 같습니다. 감사합니다.

현재 NSMC 학습 샘플 코드는 모두 PyTorch Lightning기반으로 변경하여서, 이전 코드 관련한 이슈라 이슈 close하였습니다 :)