목록인공지능 (25)
코딩세상
- fastText 앞서 설명한 word2vec의 사진으로 이미지에 있는 단어들을 바탕으로 "엘리스는" 이라는 단어를 추론할 수 있지만, 제시된 문장처럼 새로운 문장을 넣을 시 학습 데이터 내 존재하지 않았던 단어 백터는 생성할 수 없습니다. 이를 미등록 단어문제, out-of-vocabulary라고 합니다. 그렇다면 위 문제를 어떻게 해결할 수 있을까요? 앞에서 모델을 학습 시킬 때 단어 단위로 단어 임베딩 벡터를 학습시키는 것이 아닌 각 단어를 문자 단위로 나누어서 단어 임베딩 벡터를 학습시켜서 문제를 해결할 수 있습니다. 위에서 설명한 것 처럼 단어를 문자 단위로 나누어 단어 임베딩 벡터를 학습시키게 될 경우 위 사진처럼 학습 데이터에 존재하지 않았던 단어의 임베딩 벡터 또한 생성이 가능해지게 됩니..
앞서 우리는 단어들이 인공지능에서 학습되기 위해 변환시키는 방법인 임베딩에 대해 배웠습니다. 그렇다면 이렇게 임베딩 된 단어는 어떻게 인공지능에서 학습되게 될까요? 이번 내용에서는 그것에 대해 알아보겠습니다. - word2vec 위 그림은 신경망(Neural Network)을 통해 단어 임베딩 벡터를 학습하고 문장에서 빈칸으로 뚫려있는 단어를 신경망이 추론하여 완성시켜주는 과정을 그림으로 나타낸 것입니다. 이미지 분류에서 각각의 은닉층이 가중치를 학습하고 해당 가중치를 바탕으로 결과값을 도출 해냈던 것처럼 wrod2vec 역시 각 단어의 벡터가 해당 단어가 입력으로 주어졌을 때 계산되는 은닉층의 값을 사용합니다. 그렇다면 직접 코드를 통해 어떻게 단어들이 임베딩되고 앞서 배웠던 내용들을 적용시킬 수 있는..
- 컴퓨터 - 언어 컴퓨터는 텍스트를 포함하여 모든 데이터를 0과 1로 처리합니다. 앞서 우리가 이미지 분류에 대해서 배울 때 이미지를 1차원으로 변형하여 이 때의 결과가 여러 라벨 중 가장 가중치가 높은 라벨의 결과값으로 나왔던 것처럼 자연어의 기본 단위인 단어 역시 수치형 데이터로 표현하는 것이 중요합니다. - 단어 임베딩 그래서 위 그림처럼 단어들을 연속형 벡터로 표현하는 방법을 단어 임베딩이라고 합니다. 위 두개의 문장을 비교할 때 도시와 주인의 이름, 동물의 종류가 다르지만 문맥은 어느정도 비슷하다는 것을 알 수 있습니다. 이럴 경우 각각의 단어들은 유사한 의미를 지니게 됩니다. ' 위 그림처럼 각각의 단어들을 임베딩하여 벡터로 나타내고 이를 좌표로 표현할 때 서로 비슷한 문맥을 가진 단어들끼리..
- 모델링을 위한 데이터 탐색 및 전처리 앞서 기본적인 머신러닝 및 딥러닝 모델 학습 과정을 진행할 때 구현하고자 하는 목표에 맞게 데이터를 탐색하고 해당 데이터 내의 이상치를 제거하고, 올바르게 학습 할 수 있도록 정규화를 진행하는 등 기본적인 데이터의 준비 과정이 있었습니다. 그렇다면 자연어 처리에서는 어떻게 데이터를 준비하고 가공해야할까요? 자연어 처리에서는 텍스트가 곧 데이터 이므로 모델에 맞는 텍스트 데이터를 탐색하고 데이터 내의 필요없는 단어들(특수기호, 단어 정규화(이, 그, 저, 어느 와 같은 조사 제거) 등 앞서 보았던 데이터 전처리와 비슷한 맥락으로 진행되게 됩니다. - Tokenization 텍스트를 전처리 하는 과정 중 우리는 각 텍스트를 단어 별로 나누는 토큰화(tokenizati..
- 자연어 처리란? 자연어 처리(Natural Language Processing, NLP)는 컴퓨터를 통해 인간의 언어를 분석 및 처리하는 인공지능의 한 분야입니다. - 자연어 처리의 적용 사례 자연어 처리는 문서를 분류한다던지, 문서 내에서 원하는 키워드를 추출하거나, 감정을 분석하는 등 여러 분야에서 사용되고 있습니다. - 자연어 처리 + 딥러닝 그렇다면 우리는 자연어를 처리하기 위해 딥러닝을 어떻게 사용할 수 있을까요? 시간이 지날수록 자연어 처리에서 학습 가능한 데이터의 양은 기하급수적으로 증가하고 있습니다. 이전에는 하드웨어적 요소가 많이 발달하지 못해 연산 처리 속도의 한계가 있었지만 최근에는 연산 처리 속도의 발전으로 인해 자연어 처리 또한 더욱 복잡한 머신러닝 알고리즘을 적용할 수 있게 ..
- LeNet(1990) LeNet는 이미지 분류용 CNN 중에 조상격으로 CNN초기에 CNN의 기본 구조를 잘 하였습니다. LeNet은 CNN을 처음으로 개발한 얀 르쿤(Yann Lecun) 연구팀이 1998년에 개발한 CNN 알고리즘의 이름이다. 우편번호를 인식하기 위해 개발한 모델이며, LeNet-5 버전까지 개발되었습니다. - AlexNet(2012) LeNet 개발 이후 CNN 분야에서 획기적인 모델이 나오지 않다가 2012년 ImageNet Challenge에 등장한 AlexNet이 기존 모델의 성능을 큰 폭으로 상회하며, CNN을 한번 더 발전 시키는 계기가 되었습니다. 이 때 처음으로 CNN 모델에 ReLU 활성화 함수를 적용하였고 딥러닝 모델 학습에 GPU를 활용하였습니다. 이후로 사실상..
- Convolutaional Layer 앞서 지금까지 사용한 커널들은 학습이 가능한 커널이었습니다. 즉, 커널 행렬의 각 값들이 퍼셉트론에서 배웠던 가중치(Weight)가 되게 됩니다. 이러한 커널들로 이루어진 Layer를 Convolutional Layer라고 부릅니다. -> CNN 모델은 이러한 Layer 들이 쌓여서 구성됩니다. - Layer 역할 CNN 모델은 이미지가 가지는 특정 Feature를 뽑아내도록 커널을 학습시킵니다. 앞서 배웠던 것처럼 커널의 모양에 따라 처리되는 이미지가 달랐던 것처럼 커널에 따라 추출하는 Feature를 다르게 학습시켜 이미지의 여러가지 정보를 뽑아낼 수 있게 합니다. 여기서 Feature는 이미지 내의 대각선, 원형, 색조 등등이 해당됩니다. - Stride 이..
- Fully - Connected Layer와 이미지 데이터 FC Layer(Fully - Connected Layer)는 1차원 데이터를 요구합니다. 즉, 2차원 상의 데이터를 단순하게 1차원 데이터로 바꾸는 것인데 이렇게 되면 우리는 2차원 상에서 가지는 정보를 포기해야합니다. 이러한 정보는 이미지 내 사물간의 거리관계나 색의 변화(특히 세로로 변하는 상황)를 예로 들 수 있으며, 이는 공간 정보(Spatial Information)가 무너지게 되는 것입니다. - Convolutional Neural Network 그래서 이러한 문제를 해결하기 위해 이미지 처리에 특화된 딥러닝 모델이 등장하였습니다. 이를 Convolutional Neural Network(CNN)이라고 합니다. CNN 모델은 대표..
- 전통적인 이미지 처리 기법 딥러닝 이전에도 수많은 이미지 처리 기법들이 발전해왔습니다. 대표적인 예로 포토샵을 예로 들 수 있습니다. 포토샵을 통해 원하는 형태로 이미지를 편집할 수 있었으며, 이러한 방법은 현재 딥러닝 모델 학습을 위한 데이터 가공에도 사용하고 있습니다. 오늘은 이미지 처리 이미지에서 널리 사용되는 레나 이미지를 바탕으로 이미지 처리에 어떤 방법이 있는지 알아보고 해당 기능을 사용하기 위해 PIL라이브러리에서 어떤 기능들을 사용해야되는지 코드로 알아보겠습니다. - 형태 변환 잘라내기(Crop) : 이미지 내에서 원하는 위치에서 원하는 크기만큼 이미지를 잘라내는 방법 # 이미지 crop from PIL import Image def crop(img, coordinates): img_c..
앞서 CNN에 대해 이해하기 전 이미지에 대한 개념을 공부하였습니다. 그렇다면 본격적으로 CNN에 대해 공부하기 전에 현재 딥러닝이 어떤 분야에서 이미지를 처리하는지 알아보겠습니다. - 사물인식(Object Detection) 위 사진은 사물인식에 대한 대표적인 사례들을 나열한 사진입니다. 첫 번째로 우리가 흔히 뉴스에서도 접할 수 있는 자율 주행입니다. 자율 주행에서 딥러닝은 차, 장애물, 사람 등을 구별하여 차량이 스스로 정상적으로 주행할 수 있게 도와줍니다. 두 번째로 안면 인식입니다. 안면인식은 스마트폰의 잠금해제에도 적용되어 있을 정도로 폭 넓게 사용되고 있는 분야입니다. 스마트폰의 경우 사용자의 얼굴을 인식하여 해당 스마트폰의 주인이 맞는지 판별하고 맞으면 잠금을 해제하는 기능으로 사용되며, ..