0. 들어가면서 자연어처리, 즉 글자를 컴퓨터가 이해할 수 있게 만드는 것이다. CNN과 RNN의 차이도 모르고, 단 한번도 구현해 본 적이 없다면, 이곳은 오아시스 같은 해결책을 줄 수 있을 것이다. 시작해보자. 혹시나 텐서플로의 기초가 아닌 자연어 처리에 대한 전반적인 적용 알고리즘에 대해 알고 싶다면, 아래의 링크를 들어가 보자. han-py.tistory.com/249?category=942088 자연어처리 발전흐름(RNN에서 BERT) 1. RNN (Recurrent Neural Network) RNN이 왜나왔을까? 기존 신경망은 연속적인 시퀀스를 처리하기 어렵다. 따라서 입력의 순서가 중요한 분야인 자연어 처리, 음성인식, 주식, 날씨, 음악 같은 부분에서 한 han-py.tistory.com..
0. 들어가면서 실제로 우리가 버트 모델을 훈련하기 위해서는 많은 데이터와 시간이 필요하다. 그러나 기존에 구글에서 공개한 버트 모델을 활용하면 쉽게 한글 데이터를 분석할 수 있다. 구글에서 공개한 버트 모델은 학습한 데이터에 따라 여러 형태로 공개가 되어 있지만, 대부분은 영어를 위한 모델이다. 우리는 한글 데이터를 활용한 버트를 활용할 것이기 때문에 다국어 지원을 위한 버트 모델을 활용할 예정이다. 버트를 활용한 실습을 진행해 볼까 한다. 가장 기초가 되는 영어 데이터를 시작으로 한글 텍스트 데이터를 버트를 활용하며 문장 분류, 자연어 추론, 개체명 인식, 텍스트 유사도, 기계 독해 등을 해결해 보자. 사실 버트 자체를 사용한다는 말은, 버트를 구현한다는 말은 아니다. 즉, 사전 훈련이 되어있는 모델..
0. 들어가면서 우선 신경망에 대한 기초도 모른다면 아래의 블러그를 참고하고 다시오자. han-py.tistory.com/195 케라스의 전형적인 작업 흐름은 다음과 같다. 입력 텐서와 타깃 텐서로 이루어진 훈련 데이터를 정의하자. 입력과 타깃을 매핑하는 층으로 이루어진 모델(네트워크)를 정의하자. 손실 함수, 옵티마이저, 모니터링하기 위한 측정 지표를 선택하고 학습하자. 훈련 데이터에 대해 모델의 fit() 메서드를 반복적으로 호출하자. 1. 모델 정의방법 모델을 정의하는 방법은 두 가지로 Sequential 클래스와 함수형 API를 사용한다. Sequential 클래서 : 구조인 층을 순서대로 쌓아 올린 네트워크로 가장 자주 사용한다. 함수형 API : 비순환 유향 그래프로 완전하게 임의의 구조를 만..
0. logit, sigmoid, softmax 본격적인 솔실함수를 보기 전에 logit, sigmoid, softmax에 대해 알아보자. 0.1 sigmoid함수 sigmoid 함수는 인공신경망에서 ReLU가 등장하기 이전에활발하게 사용되었던 activation function(활성화함수)이고, hiddin 노드 바로 뒤에 부착된다. 클래스가 2개이다. Sigmoid 함수는 모든 실수 입력 값을 0보다 크고 1보다 작은 미분 가능한 수로 변환한다. 그리고 미분결과가 간결하고 쉬워 초기에 많이 사용되었다. 0.2 softmax함수 softmax함수는 인공신경망에서 출력된 K개의 클래스 구분 결과를 확률처럼 해석하도록 만들어준다. 따라서 보통은 output 노두 바로 뒤에 부착된다. 코드 사용 시, sig..
0. 신경망은 무엇인가? 딥러닝이란 용어는 신경망을 학습시키는 것을 뜻한다. 신경망은 뉴런의 집합이다. 다시말하면, 입력(x)와 출력(y)를 매칭하여 함수를 찾는 과정이 딥러닝이고, 각각 하나의 입력과 출력을 매칭하는 것이 뉴런이다. 좀 더 들어가 보면, 여러개의 각기 다른 정보를 주면, 이러한 입력 특성을 가지고 신경망은 출력을 예측하는 것이다.따라서 충분한 양의 입력과 출력 정보를 주면, 신경망은 입출력을 연결하는 함수를 알아내는데 더욱 뛰어날 것이다. + 해당 뉴런에 관계없는 입력값이라도 입력으로 넣어주어야 한다. 관계 여부는 신경망이 학습하면서 알아서 조절해 준다. 신경망의 구조를 간단히 보면, 입력 데이터가 레이어에 들어가서 레이어에 있는 가중치를 토대로 결과값을 예측을 한다. 그리고 예측값과 ..
0. 들어가면서 대부분 신경망이 원본을 입력르로 사용하지 못하는 것 처럼 텍스트도 텍스트 자체를 입력으로 사용할 수 없다. 딥러닝 모델은 수치형 텐서로만 다룰 수있다. 텍스트를 수치형 텐서로 변환하는 과정을 텍스트 벡터화(vectorizing text)라고 한다. 1. vectorizing text 텍스트 벡터화 하는 방법에는 크게 아래와 같이 3가지가 있다. 텍스트 => 단어 => 벡터 텍스트 => 문자 => 벡터 텍스트 => 단어나 문자의 n-그램 (연속된 단어나 문자를 하나씩 이동하면서 추출) => 벡터 위의 예를 보면 텍스트를 나누는 단위에는 단어, 문자, n-그램이 있음을 알 수 있다. 이런 단위(단어, 문자, n-그램)를 토큰이라 한다. 그리고 텍스트를 토큰으로 나누는 작업도 토큰화(token..
0. 들어가면서 'Attention is All You Need'라는 말에서 알 수 있 듯, Transformer은 Attention으로만 이루어져 있다. 기계 번역(언어 번역)을 예로 깊숙한 곳으로 조금씩 들어가 보려고 한다. 1. Model 위의 그림을 보면 한 언어의 문장이 INPUT으로 넣으면 OUTPUT으로 다른 번역된 언어가 나오는 것을 알 수 있다. 그렇다면 조금 더 디테일 하게 들어가 보자. Transformer의 내부를 보면 ENCODERS와 DECODERS로 나눠져 있고, 그 둘 사이에 연결이 있는 것을 알 수 있다. encoding component는 encoders가 쌓여서 만들어져 있다. 그리고 decoder도 6개가 쌓여있는 것을 볼 수 있다. 인코더의 구조가 모두 동일하지만 가..
0. 들어가면서 텍스트 데이터를 학습한 모델의 크기는 단어의 개수에 영향을 받는다. RNN에서는 단어 개수에 비례하여 계산비용이 증가하기 때문에 word embedding 벡터의 종류가 제한이 생기는 문제가 발생한다. 이러한 문제를 해결하기 위해 단어를 한정적인 유닛으로 표현하는 Word Picece Model(WPM)이 생겼다. WPM은 언어에 상관 없이 모두 적용 할 수 있어서 특정 언어의 토크나이저를 만들지 않아도 되지만, 그렇다고 모든 데이터 분석에 적합한 것은 아니다. 수백만개의 단어를 포함하는 데이터를 표현하기 위해서는 bag of words model에서는 단어 개수 만큼의 embedding vector를 학습하기 때문에 단어의 개수가 많을 수록 차원이 커지고 모델이 무거워진다. 이러한 문제..
- Total
- Today
- Yesterday
- pandas
- NextJS
- react
- Queue
- vuejs
- react autoFocus
- 자료구조
- mongoDB
- UserCreationForm
- useState
- typescript
- logout
- Vue
- next.config.js
- 자연어처리
- nextjs autoFocus
- DFS
- 클라우데라
- error:0308010C:digital envelope routines::unsupported
- login
- TensorFlow
- Deque
- nodejs
- Express
- BFS
- JavaScript
- read_csv
- django
- Python
- useHistory 안됨
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |