-
Notifications
You must be signed in to change notification settings - Fork 0
2021 09 30
snoop2head edited this page Oct 1, 2021
·
5 revisions
- Accuracy가 높아지는데, Loss가 왜 올라가는가?
- 모델 바꿔가면서 실험을 진행했음.
- Data Augmentation: Subject랑 Object를 바꾸면 관계를 찾는 거잖아요. 즉 subject, object의 순서를 바꿔서 Organization <-> Organization 관계나 Person <-> Person 관계를 키워봤어요. 원래 부족한 데이터들 있잖아요.
- Data Augmentation: KoEDA RandomSwap을 해보자. Random Deletion은 안 되는 게 target 단어도 지울 수 있으니까.
- Organization <-> 날짜는 뒤집을 수가 없을 것 같아요. 그러면 편향성이 심할 수 있다는 생각을 했어요.
- 아니면 앞뒤 순서를 바꿔서 train한 다음에 ensemble하는 방식을 했어요.
- 강의에서 NER할 때 음절단위로 나눠서 train시키던데, 저도 이렇게 해볼까 생각을 해봤어요. 애초에 subword 단위로 나누면 안 되니까 글자단위로 쪼갠다.
- Special Token [SUB] [/SUB], [OBJ], [/OBJ]를 새로 넣어서 Entity를 Marking했다. 여기에서 Entity Token에서 Classification을 진행하는 게 제일 좋다는 논문이 있었다.
- 문장에 tag만 넣고, 그게 무슨 단어인지 앞에 추가적으로 명시할 필요가 있는지 고민임. 저는 날려도 될 것 같다고 생각합니다 (중복된 정보이기 때문에)
- Class 별로 동일 비율로 뽑아서 하면 좋더라고요. (Stratified) 아예 안 뽑히는 애들도 있기 때문에
- RoBERTa에서 token_type_id을 안 쓰잖아요. Sentence A인지 B인지. Separated Token을 보고 Autogenerate을 하더라고요. Embedding 단에서 자동으로 생성을 해주더라고요.
- 분업해서 할 게 많을 것 같음: Loss 안 건듦, K Fold안 했음,
- Class weight을 넣었음.
- ALBERT는 성능이 잘 나오지 않음.
- 단어를 Entity를 따로 빼서 분류하면 정확하지 않을까 생각했음. Token 위치를 어떻게 할 수 생각하다가. Mask Index를 찾을 수 있어서. Mask를 씌워서 하면 좋을 것 같다는 생각했어요. Mask 위치에 있는 벡터를 빼와서 concat하는 방식으로 생각을 했음.
- Loss에 weight은 어떻게 적용함? Trainer 함수는 overriding해서 loss 계산하는 것만 compute loss 함수에 loss function이 안 보이더라고요. 아마 default가 cross entropy일 거라고 생각을 합니다.
- Max length를 128로 지정했을 때와 안 했을 때의 차이 존재. 128 character length 이상인 문장들 460개 존재. 특히 Class 별 distribution을 감안해도, max length를 저렇게 지정해도 문제가 되지 않음을 증명했음.
- Entity Special Token 추가 https://arxiv.org/abs/1906.03158
Q. 홍길동은 한국에서 태어났다 -> 홍길동은 볼리비아에서 태어났다 이렇게 추가하면 문제가 될까요? 뭔가 둘의 관계가 태어난곳의 위치인것만 맞추면 될 것 같은데 정답단어 자체의 의미가 중요 할까요?
A,. 추가로 말씀드리자면, 데이터셋의 각 entity마다 개체명 테그가 부착되어 있을거에요 :-) 개체명 테그가 같은 entity로는 교체해도 의미적으로 큰 문제가 생기진 않을겁니다. 저라면 모든 데이터를 대상으로 각 개체별 사전을 만들어놓고 random replace를 한 후에 관찰해볼거같아요
-
Bidirectional LSTM 추가
-
Pretraining model with arbitrary masking
-
Round Trip translation -> Back Translation을 하게 되면 entity 위치가 변경되거나 없어질 수도 있는데 이것은 어떻게 해결할 수 있을까요? Entity에다가 괄호를 쳐서 넣으면 되지 않을까라는 생각이 듭니다. -> ENTITY 대신 고유명사를 넣어서 번역하고 다시 entity로 대체하는 방법은 어떤가요
-
EDA, AEDA
-
CLS, SEP 넣어서 format 맞추기
- RE task 에서 혹시 start_index 와 end_index 가 어디에 도움이 될 수 있을까요? -> 걍 무시하셈. 노쓸모
- 문장의 의미가 크게 바뀌지 않는다면 subject, object 위치 바뀌어도 상관 없음.
- ORG:정치/종교 라벨에서 mislabel이 두드러지는 것 같습니다
- train시 unknown 토큰이 있는 게 regularization 기능을 할 수 있을지 궁금합니다! 또 entity에 unknown 토큰이 있을 때는 어떤 영향이 있을지 궁금합니다. -> 일종의 그런 역할을 할 수 있다고 볼 수 있을 것 같고요. -최근에 개체명인식기로 논문을 썼는데, bert류 모델들이 (놀랍게도) [unk] 랑 무관하게 잘 잡더라구요 -> [unk]는 2012년에 태어났다 -> [unk]:PS 로 잡더라구요 :-)
- sentence 의 길이를 파악할 때는 tokenization 하기 전의 길이를 보는게 맞나요? -> Tokenizing 한 다음에 결과를 보는 게 맞지 않나 싶습니다.
- TAPT(PPT 본문의 Domain Apaptation) 돌릴 때는 아무래도 모니터링할 매트릭이 없는데, 보통 loss가 어느 수준으로 떨어질 때까지 돌리는지 궁금합니다!
- fine-tuning에서 warm-up 쓰는게 맞나요? -> 안 쓰는 걸 추천한다.
- 불용어를 따로 처리하는 것도 모델 학습에 도움이 될까요? 학습에 방해가 될 수도 있을 것 같아서 질문드립니다! -> Validation을 봄
- 테스트 데이터 전처리 때 불용어를 같이 제거하는 방식은 하면 안되는걸까요? -> 네 테스트셋을 전처리해서 모델이 인퍼 넣는건 매우 자연스러운거같구요. 예를들어서 악성댓글 분류할때도 'ㅋㅋㅋㅋㅋㅋㅋ' 이나 'ㅠㅠㅠㅠㅠㅠ' 같은것도 전부 normalization한 후에 모델에 태우거든요