@@@ 인공지능/수학·통계를 몰라도 이해할 수 있는 쉬운 딥러닝

3 - 1. 자연어 학습 인공지능(1)

HTG 2021. 8. 30. 00:32
728x90

3-1-1. AI는 스팸 문자를 걸러낼 수 있을까

데이터 살펴보기

(1) 데이터 파일 열기

<ham> <spam> 으로 태깅하여 스탬 문자와 정상 문자를 구분

 

(2) 자연어를 숫자로 변환하기

지금까지 인공신경망에 0 ~ 1 사이의 숫자를 입력.

이번 절에서 사용할 문자메시지 데이터 역시 0 ~ 1 사이 숫자로 변환하여 사용.

우선 0 ~ 1 사이 숫자로 바꾸기 전에 영어단어를 숫자로 바꾸는 것이 우선.

 

(3) 원 핫 벡터 임베딩

단순 숫자의 모음이 아니라 벡터의 모음으로 변환하는 방법을 알아보자.

원 핫 벡터라는 표기 방법을 활용하면 여러 종류의 카테고리를 벡터로 바꿀 수 있음.

원 핫 벡터를 만드는 방법은 간단

- 모든 내용물이 0으로 채워진 벡터를 하나 만듦. 

- 벡터의 n번째 숫자만 1로 바꿈.

학습에 사용할 데이터는 총 5,574개의 문자메시지로 구성, 문자메시지에 사용돈 단어의 종류는 총 8,983개

그렇기 때문에 크기 8,983인 원 핫 벡터로 변환

 

(4)문장의 길이가 모두 다르지 않나요?

문자메시지 데이터 중 가장 긴 문자메시지는 총 189개의 단어로 구성.

그렇기 때문에 데이터 크기가 제각각임.

학습에 활용하기 위해서 문장 데이터의 길이를 모두 똑같이 맞춰 줄 필요가 있음.

이를 문장 뒤에 0을 채워 넣는 방식으로 쉽게 문제를 해결.

 

●어떤 인공지능 사용?

층수 종류 크기 활성화 함수
1층 Embedding 8983, 128 -
- Global Average Pooling 1D - -
2층 FNN 32 ReLu
- Dropout rate = 0.1 -
3층 FNN 1 sigmoid

3층 자리 FNN

 

(2) 임베딩(Embedding)

데이터 처리 단계에서 문장을 원 핫 벡터로 다듬는 과정은 굉장히 번거로움.

임베딩 레이어는 이 과정을 생략함.

임베딩 레이어는 보이지 않는 곳에서 이 데이터를 원 핫 벡터로 다듬어 입력받고, 다른 사이즈로 출력까지 해 준다.

embbeding 레이어의 사이즈를 (8983, 128)이라 표기.

8983은 원 핫 벡터를 만들기 위한 단어의 총 개수. 128은 임베딩 레이어가 출력하는 데이터의 사이즈.

엄밀히 따지면 임베딩 레이어는 단일 층이 아니라 뉴럴 네트워크 2개 층을 합쳐둔 것과 같음.

예제 문장 데이터는 길이 189짜리 벡터. 이 벡터를 임베딩 레이어에 입력하면 (189,128) 사이즈의 데이터가 출력.

총 단어 개수인 8983이라는 숫자는 사라지고 한 단계 더 추상화된 데이터만 출력되는 것.

따라서 임베딩 레이어를 활용하면 자연어 처리에 걸리는 시간을 상당히 단축.

 

(3)Global Pooling

앞서 우리는 데이터의 사이즈를 축소하는 풀링 레이어를 공부.

글로벌 풀링은 데이터의 사이즈뿐 아니라 차원까지도 축소하는 풀링 기법.

Global Pooling 2D는 3차원을 2차원으로 줄이는 연산

Global Pooling 1D는 2차원을 1차원으로 줄이는 연산

철학은 같지만 코딩 방식이 달라 구분.

풀링 방식은 맥스 풀링, 에버리지 풀링 자유롭게 적용 가능. 여기에서는 에버리지 풀링 사용.

 

●딥러닝 코딩

- 인공신경망 컴파일

옵티마이저(optimizer) - Adam

메트릭(metrics) - accuracy

로스(loss) - BinaryCrossentropy

 

●인공지능 학습

- 인공신경망 학습

 

 

- 학습 결과 출력

그래프로 출력

 

●인공지능 학습 결과 확인

- 인공지능 성능 확인하기

저자의 경우 인공지능의 최종 성능은 98.64%.

콜백이 작용하여 25 에포크에서 중단

분류 정확도가 상당히 뛰어나서 스팸을 걸러낼 수 있을 것으로 판단.

나의 경우도 98.26% 비슷한 성능을 보인다.

 

- 학습 기록 확인하기

빨간 선이 train, 파란 선이 test

저자의 경우 Loss Accuracy 둘다 오버피팅 양상을 보임.

10 에포크 전후로 중단했어도 비슷한 성능을 보였을 것으로 판단

7 에포크 이후 98%의 성능을 돌파

나의 경우에도 오버피팅 양상을 보임.

 

이상 FNN을 활용한 자연어 처리 방법에 대해 알아 보았음.

 

텍스트 분류 응용사례

자연어로 작성도니 글을 분석, 분류하는 NLP 알고리즘은 굉장히 다양한 곳에서 사용.

연구 분야에서는 대량의 논문 초록을 크롤링하여 분석하는 기법이 활발하게 적용되고 있음. 연구의 실현 가능성이나 연구에 도움이 되는 정보를 AI를 활용해 대향으로 수집하는 것.

언론 기사를 대량으로 분석하는 데에도 자연어 분석을 활용하기 쉬움.

 

오버피팅 감소 시키기.

에포크를 10으로 줄이고 콜백의 patience 2로 줄였는데 성능은 비슷하게 나온다. 오버피팅 양상도 어느 정도 줄였다.