728x90

프로젝트 24

[프로보노프로젝트/딥러닝] 학습 조기종료 콜백함수, 학습단위 - 에포크(Epoch), 배치(batch)

1. 학습 조기종료 콜백함수 학습 조기 종료를 위해서는 ‘EarlyStopping’이라는 함수를 사용하며 학습 도중 더 이상 개선의 여지가 없을 때 학습을 종료시키는 콜백함수이다. 콜백함수는 어떤 함수를 수행 시 그 함수에서 내가 지정한 함수를 호출하는 것을 말하며, 여기서는 fit 함수에서 EarlyStopping이라는 콜백함수가 학습 과정 중에 매번 호출된다. Epoch를 100으로 지정했더라도 학습하는 과정에서 EarlyStopping 콜백함수를 호출하여 해당 조건이 되면 학습을 조기 종료시킨다. EarlyStopping 콜백함수에서 사용할 수 있는 매개변수는 다음과 같다. model.compile(optimizer=rmsprop, loss='binary_crossentropy', metrics=[..

[딥러닝] 데이터 어노테이션이란 (data annotation), 어노테이션 기법

아마 이번 대회에서 이미지나 영상 데이터 셋을 사용할 것 같은데 텍스트 데이터 셋만 다뤄본 나로서는 선배님들이 데이터 어노테이션을 해야한다는 말을 알아듣지 못했다. 그래서 어노테이션에 대해 공부하고 백업해둔다! 1. 데이터 어노테이션 (data annotation) 데이터 어노테이션이란 데이터 셋에 메타데이터를 추가하는 작업을 말한다. '태그'형식으로 이미지, 텍스트, 비디오를 비롤한 모든 유형의 데이터에 추가가 가능하다. 쉽게 말해 인공지능이 데이터의 내용을 이해할 수 있도록 주석을 달아주는 작업이라고 할 수 있다. *메타데이터 : 데이터에 대한 데이터, 어떤 목적을 가지고 만들어진 데이터, 다른 데이터를 설명해주는 데이터, 콘텐츠에 부여되는 데이터 정확도는 어노테이션의 모든 것을 의미한다. 어노테이션..

[프로보노프로젝트/딥러닝/개발] sklearn 을 이용한 타겟데이터 만들기 (sklearn:target data) + 그 외 데이터 셋 개발 백업

딥러닝 개발도 어느새 막바지에 접어들었다. 현재까지는 편의를 위해 보이스피싱인 데이터 셋으로 딥러닝 개발을 진행하였다면, 지금부터는 실생활에 사용할 수 있도록 보이스피싱인 데이터, 보이스피싱이 아닌 데이터, 그리고 각각의 데이터 셋에 대한 학습데이터, 검증데이터, 평가데이터, 그리고 타겟데이터를 만들어야 한다. 데이터 셋의 종류가 많기 때문에 헷갈리지 않도록 각각의 개념을 정립하는 것이 중요하다. 나도 처음에는 이 개념을 이해하지 못했기 때문에 개발하는데 자꾸 버벅였다. 내가 뭘 만들어야 하는지 모르니 당연하다. 그럴 때마다 팀장님께서 내가 뭘 만들어야하는지 항상 상기시켜주셨고 초등학생에게 설명하는 것 처럼 각각의 개념에 대해 본인에게 설명해보라고 하셨다. 덕분에 개념을 잘 학습할 수 있었던 것 같다. ..

[프로보노프로젝트/딥러닝] 훈련 / 검증 / 평가 데이터 셋 분할과 홀드아웃 검증(Hold-out validation)

1. 데이터 셋을 분할해야 하는 이유 모델을 올바르게 학습시키기 위해서는 데이터 분할이 필수적이다. 모든 데이터를 학습에 사용하게 되면 과대적합 (over fitting)이 발생하며 성능이 좋지 못하며 어떤 문제를 갖고 있는지 파악할 수 없다. 쉬운 예로, 학생이 시험을 치루는데 정답을 모두 알려준 오픈북 시험이나 다름 없는 것이다. 그렇게 되면 학생의 능력을 제대로 알 수 없게되는 것과 비슷하다. 따라서, 데이터의 일부를 학습에서 제외하여 학습을 완료한 후 현재 모델이 학습하지 않은 데이터에 대해서도 잘 예측할 수 있는지 확인하는 것이 필요하다. 2. 데이터 셋 종류 Train 데이터셋(학습 데이터 셋): -모델을 학습시킬 때 사용하는 데이터 셋 Validation 데이터셋 (검증 데이터 셋): -Tr..

[프로보노프로젝트/딥러닝] 패딩 (Padding)

1. 패딩을 사용하는 이유 자연어 처리를 하다보면 각 문장(또는 문서)은 서로 길이가 다를 수 있다. 그런데 기계는 길이가 전부 동일한 문서들에 대해서는 하나의 행렬로 보고, 한꺼번에 묶어서 처리할 가능성이 존재한다. 다시 말해 병렬 연산을 위해서 여러 문장의 길이를 임의로 동일하게 맞춰주는 작업이 필요하다. (wikidocs발췌) 우리의 프로젝트 역시, 각 샘플의 길이가 너무나도 다르고 짧은건 한 줄, 긴 건 수십 줄이였기 때문에 패딩을 통해 일정하게 길이를 맞추어야겠다고 생각했다. 따라서 나는 from tensorflow.keras.preprocessing.sequence import pad_sequences, 케라스에서 제공하는 pad_sequences()도구를 사용하여 샘플의 길이를 일정하게 맞추..

[프로보노프로젝트/딥러닝] KOR_EDA 정리 (EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks)

2021.08.09 - [프로젝트/한이음(probono)] - 텍스트 데이터 양 늘리기 (Text Data Augmentation) 위 글에서 언급했듯 우리팀은 데이터셋의 종류가 적어 텍스트 데이터 셋의 개수를 증가시키는 코드를 개발해야 한다. 관련 연구로는 2019년 EMNLP에서 발표된 EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks가 있다. 논문을 읽어보았지만, 잘 이해가 되지 않는 부분은 https://catsirup.github.io/ai/2020/04/21/nlp_data_argumentation.html 를 참고하였다. 학습 데이터가 부족한 상황에서 데이터를 변형시켜 그 양을..

[프로보노 프로젝트] 데이터 전처리 개발 중간 백업 (data preprocessing)

4월부터 시작한 프로보노 프로젝트도 어느새 중간보고서를 제출하고 승인까지 받게 되었다. 프로젝트 초기에는 머신러닝 엔진을 개발하는 역할을 맡았지만, 후에 데이터 전처리를 하는 팀원을 도와 데이터 전처리 개발에 집중하게 되었다. 현재 데이터 전처리 개발은 어느정도 완성된 상태이기에 백업용으로 이 글을 작성한다. *개발내용 뿐 아니라 팀원들과 했던 커뮤니케이션과 문제 해결 과정, 회의내용도 어느정도 백업하려한다. 우리팀의 진행 방향성과 느낀점 멘토님께서는 우리가 개발을 하면서 이것을 해야하는 본질적인 이유에 대해 잊지 않는 것을 강조하셨다. 그래서 팀장님도 매번 우리팀이 전처리를 해야하는 이유에 대해 상기시켜 주셨고, 더 나아가 우리의 주제가 무엇인지 왜 머신러닝을 사용해야하는지 등 원초적인 목적에 대해 자..

[프로보노프로젝트/딥러닝] 텍스트 데이터 양 늘리기 (Text Data Augmentation)

데이터 전처리 개발을 어느정도 완료하고 다음 단계인 머신러닝 trian_data 학습과정으로 넘어가려 하니, 보이스피싱과 관련된 데이터 셋 개수가 너무 적었다. 우리가 사용할 수 있는 금융감독원에 공개된 보이스피싱 텍스트 데이터 셋은 168개 정도인데, 멘토님께 여쭤보니 머신러닝을 학습시킬 때 1만개 이하의 데이터는 의미가 없다고 하셨다. 따라서 현재까지는 머신러닝(딥러닝RNN) 엔진 개발 (1) 데이터 전처리 개발 (2)로 나누었던 팀원의 역할을 재분배하였는데, 그 중 나는 보이스피싱 데이터 셋의 양을 늘리는 프로그램 개발을 맡게 되었다. *또한, 기존 모델 RNN에서 우리의 프로젝트 진행 상황에 따라 로지스틱 회귀 모델로 변경하기로 하였다. 모든게 처음이라.. 잘 할 수 있을지 모르겠지만 우선 구글링..

728x90