??? : 토크나이저...? 토큰...? 동전...?, 기술 선택의 이유와 근거 (2)

2023. 7. 27. 10:24광고차단 머신러닝

728x90

2023.07.24 - [산학협력프로젝트] - ??? : "하... 뭐 고르지?", 기술 선택의 이유와 근거 (1)

 

??? : "하... 뭐 고르지?", 기술 선택의 이유와 근거 (1)

뭐 먹을까요? 깔깔깔 산학협력 프로젝트, 광고 차단 오토로 돌리기 (졸업 하고 싶어요ㅠ) 1. 오늘의 주제 이번에 진행한 프로젝트는 산학협력 프로젝트입니다! 주제는 '기계 학습을 통한 광고 사

xpmxf4.tistory.com

저번 글을 읽고 이어 읽으시는 것을 추천드립니다!


저번까지 3 가지에 대해 알아봤습니다.

  1. 프로젝트 흐름
  2. 구글 트렌드 키워드를 순열 조합한 이유
  3. HTML 문서에서 왜 <body> 만 추출했을까

프로젝트가 단순해보이지만

이 단순해 보이는 프로젝트에도 사용되는 기술은 여러 가지이기에

아직 설명해야 할 것들은 많이 남았습니다!

엉ㅇ엉ㅇ어어어ㅓㅇ

그래서 오늘은 저번 글이 너무 길어져

작성하지 못한 다른 기술 선택의

이유와 근거에 대해 설명을 해보겠습니다.

 

제목에서 나와있듯이 오늘은

제가 선택한 토크나이저에 대한 이유와 근거에 대해 설명을 할 예정입니다.

 

하지만 이 프로젝트 시작할 당시의 저처럼

기계학습에 대해 잘 모르시는 분들은

토크나이저는 커녕, 토큰에 대해서도 아마 잘 모르실 거라고 생각합니다!

 

그래서 오늘은 토크나이저를 설명하기 이전에

  1. 토큰이란?
  2. 그렇다면 토크나이저란?
  3. 해당 토크나이저를 선택한 이유

1, 2를 먼저 설명드리고

마지막으로 3을 설명드리겠습니다!

1. 토큰이란?

여러분 토큰 하면 무엇이 떠오르시나요?

솔직히 저는 처음에 기계학습을 진행하면서

'토큰'이라는 말을 들었을 때 이것을 상상했습니다.

ㅎㅎ...

왜냐하면 제가 생각하는 토큰이라는 것은 다음과 같았거든요.

토큰(token)「명사」 
예전에, 버스 요금을 낼 때 돈을 대신하여 내는 동전 모양의 주조물

출처 : 표준국어대사전
근데 갑자기 왠 뜬금없이 토큰이냐구요?

 

부끄러운 이유가 있습니다!

 

저는 기계학습에 대한 지식이 전무했었기에 

즉 NLP(Natural Language Process) 모델들한테

사람의 언어, 즉 자연어를 그대로 넣으면 알아서 학습을 할 것이라고 생각했습니다.

무식하니 용감해버렸다...

하지만 기계는 사실 사람의 언어를 직접적으로 해석할 수가 없습니다.

 

이는 기계와 인간 사이의 핵심 차이점 하나로,

인간은 경험, 문맥, 비언어적 신호 복잡한 요소를 통해

언어를 이해하고 해석할 있습니다.

 

반면에 컴퓨터는 숫자와 명확한 규칙 따라 동작하기 때문에,

인간의 언어와 문맥적 이해 능력을 직접 가질 없습니다.

2. 그렇다면 컴퓨터는 어떻게 자연어, 즉 사람의 말을 이해해?

바로 이런 문제들을 해결하기 위해 자연어 처리(NLP)라는 기술이 나오게 됐습니다!

잠깐 IBM의 NLP에 대한 글의 일부분을 보고 갈까요?

NLP는 인간 언어를 규칙 기반으로 모델링하는
전산언어학과 통계적 머신 러닝 및 딥 러닝 모델을 결합합니다.

이러한 기술들은 컴퓨터가 텍스트 또는 음성 데이터의 형태로
인간의 언어를 처리하고,
발화자 또는 작성자의 의도와 감정을 포함한 완전한 의미를 '이해'할 수 있도록 합니다.

출처 : https://www.ibm.com/kr-ko/topics/natural-language-processing

위에서도 나와 있듯이

컴퓨터는 결국 컴퓨터가 이해할 수 있는 형태로

자연어를 변환, 번역하여 자연어를 이해하게 됩니다.

마치 컴파일러가 코드를 0,1 로 바꿔 본인이 이해할 수 있게 해석하듯이요!

이를 위해, 기계는 텍스트를 일련의 숫자로 변환(인코딩)하여 이해합니다.

과정에서 텍스트를 분석하고 이해하는 필요한 많은 단계가 있으며,

그중하나가 토큰화입니다.

3. 그렇다면 토큰화란?

토큰화는 큰 텍스트를 작은 부분, 즉 '토큰'으로 나누는 것을 말합니다.

 

예를 들어, 문장 "나는 밥을 먹었다"를 토큰화하면

"나는", "밥을", "먹었다"라는 세 개의 토큰으로 나눌 수 있습니다.

이렇게 토큰화된 각각의 토큰은 컴퓨터가 이해할 수 있는 숫자로 변환되어 저장됩니다.

 

, 토큰화는 컴퓨터가 사람의 언어를 숫자로 변환하여 이해할 있도록 하는 중요한 단계입니다.

이를 통해 컴퓨터는 문장을 분석하거나, 문장의 감정을 파악하거나,

다른 언어로 번역하는 등의 작업을 있게 됩니다.

 

(토큰화 그래프)

 

이러한 과정들이 모두 NLP 일부분이며,

이를 통해 컴퓨터는 점차 사람의 언어를 이해하게 됩니다.

4. 토큰화의 방법에는 뭐가 있을까?

여러 토큰화의 방법들이 존재합니다만, 대표적으로 3가지입니다.

  1. 공백 기반 토큰화
  2. 단어 기반 토큰화
  3. 서브워드 토큰화

1, 2는 말 그대로 공백, 단어 기준으로 토큰을 나누게 됩니다.

3의 경우, 서브워드라는 단위로 나누어 토큰화를 진행하게 됩니다.

 

서브워드(SubWord)라는 말처럼 원래의 단어 안에서

더 작은 단위를 일컫는 단어입니다.

 

좀 더 자세하게 설명하자면

가장 자주 등장하는 문자열(단어)들을 토큰으로 생각하고,

해당 토큰들을 조합하여 단어를 해석하게 됩니다.

 

서브워드 토큰화의 장점은 모르는 단어가 나올 경우

해당 단어를 이미 등록된 단어들(==가장 자주 등장하는 문자열, 단어)

로 분해시켜 해석하기 때문에 사전에 등록되지 않는 단어들의 의미 파악에 유리하다는 겁니다.

 

이번 프로젝트는 구글 트렌드 키워드를 통해 조사를 진행하기 때문에

유행어, 신조어를 많이 만나게 될 경우가 많습니다.

 

그렇기에 사전에 등록되지 않는 단어들을 많이 만날 확률이 높기 때문에

제 프로젝트에는 서브워드 토큰화 방법이 제일 적합하다고 할 수 있겠죠!

5.  간단한 예시

 

https://namu.wiki/w/%EC%95%84%EC%98%A4%20%ED%8E%98%EB%A6%AC%EC%8B%9C%EC%B9%98

 

namu.wiki

여러분 요새 유행하는 밈 중에 이걸 아시나요?

 

아오 00시치~

 

위 나무위키에 유래가 나와 있다만 간단히 설명하자면

어떤 사건이 일어나거나 누군가 사고를 쳤을 때
책임 소재가 없는 엉뚱한 대상에게 책임을 전가해 

"아오 ○○시치 또 너야?" 

등으로 상황을 무마하며 웃음을 주는 용도로 주로 쓰인다.

출처https://namu.wiki/w/%EC%95%84%EC%98%A4%20%ED%8E%98%EB%A6%AC%EC%8B%9C%EC%B9%98

라는 의미입니다.

 

여기서 만약 검색을 하던 와중에 제 자연어모델이

 

아오 손흥민시치~

 

라는 단어를 맞닥뜨리게 되는 경우에

공백, 단어 기반 토큰화의 방법을 사용하게 된다면 

다음과 같이 토큰화를 진행할 것입니다.

 

 

["아오", "손흥민시치"]

 

이렇게 된다면 "아오"는 해석할 수 있겠지만

"손흥민시치"라는 단어는 사전에 없기에 해석할 수 없을 것입니다.

 

하지만 서브워드 토큰화의 방법을 사용하게 된다면

 

["아오", "손흥민", "시치"]

 

로 토큰화를 진행하기 때문에

단어, 공백 토큰화보단 의미를 제대로 추론할

확률이 높습니다.

6. 토크나이저란?

지금까지의 이야기를 한번 정리해 보자면 다음과 같습니다!

  1. 자연어, 사람의 언어는 기계가 직역할 수 없다.
  2. 그렇기에 자연어를 토큰화하고
  3. 토큰화된 자연어, 즉 토큰을 통해 자연어를 이해한다.

여기 가지 잘 버티고 계시죠?

버텨!!!

그렇다면 이제는 토큰화를 진행하는, 토큰화의 주체는 누구인가를 알아야 할 때고

이게 바로 토크나이저입니다!

토크나이저는 단지 1가지 목적을 가지고 있습니다.
즉, 입력된 텍스트를 모델에서 처리할 수 있는 데이터로 변환하는 것입니다.
모델은 숫자만 처리할 수 있으므로, 토크나이저는 텍스트 입력을 숫자 데이터로 변환해야 합니다.

출처 : https://wikidocs.net/166796

지금까지는 토큰화, 토크나이저의 개념에 대해 알아봤습니다.

 

텍스트, 자연어를 컴퓨터가 이해하도록 연구하기 시작한 시점의 정확히 연도를 따지기는 어렵지만,

컴퓨터가 텍스트를 분석하고 처리하기 시작한 1950년대와 1960년대부터 관련된 연구가 시작되었습니다.

 

오랜 연구와 진척이 있었던 만큼

이제는 여러 토큰화 방법과 토크나이저가 개발이 되었고

문제 해결에 최적화된 토큰화 방법, 토크나이저 모델을 선택하는 것이 중요합니다.

 

그렇기에 저는 이번에 여러 토크나이저 중 

WordPiece라는 토크나이저가 제 프로젝트에 적합하다고 판단, 선택하게 되었습니다.

7.  WordPiece를 선택한 이유?

먼저 첫 번째 이유는 위 목차 4, 5에서 나온 것처럼

유행어, 신조어를 많이 만날 확률이 높다고 판단

서브워드 토크나이저를 선택했습니다.

 

두 번째 이유로는 

 

??? : "하... 뭐 고르지?", 기술 선택의 이유와 근거 (1)

뭐 먹을까요? 깔깔깔 산학협력 프로젝트, 광고 차단 오토로 돌리기 (졸업 하고 싶어요ㅠ) 1. 오늘의 주제 이번에 진행한 프로젝트는 산학협력 프로젝트입니다! 주제는 '기계 학습을 통한 광고 사

xpmxf4.tistory.com

위 글에서 설명했듯이 저는 자연어 처리 모델 중 BERT를 통해 진행했습니다.

BERT에 대해 조금 알아야 할 점이 있습니다.

WordPiece는 Google이 BERT를 사전 학습하기 위해 개발한 토큰화 알고리즘입니다.
그 이후로 DitilBERT, MobileBERT, Funnel Transformers 및 MPNET과 같은
BERT 기반의 상당히 많은 Transformer 모델에서 재사용되었습니다.
학습 측면에서 BPE와 매우 유사하지만 실제 토큰화는 다르게 수행됩니다.

출처 : https://wikidocs.net/166826

즉, BERT 모델은 애초에 WordPiece라는 토큰화 알고리즘을 통해

학습을 진행했기 때문에 다른 토큰화 방식으로 학습을 진행하게 될 경우

BERT 모델이 제대로 학습하지 못할 확률이 매우 높아지게 됩니다.

 

8. 마무리

오늘 포스팅이 정말 길었는 데요, 

2 가지 이유 때문에 WordPiece를 선택했다라고 아시면 될 것 같습니다!

  1. 유행어, 신조어등 비등록 단어를 만날 확률이 있다
  2. BERT는 애초에 WordPiece 방식으로 학습했다

긴 글 읽느라 고생 많으셨습니다!

 

728x90