728x90

딥러닝 4

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

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

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

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

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

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

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

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

728x90