목록전체 글 보기 (255)
귀퉁이 서재

이번 글은 RNN(Recurrent Neural Network)에 대해 이미 알고 있다는 가정 하에 썼습니다. RNN에 대해 잘 모르신다면 RNN을 먼저 배워오시기를 추천드립니다. NLP 분야에서 seq2seq는 기계 번역, 문장 생성, 질의응답, 메일 자동 응답 등에 활용되는 모델입니다. 우선 기계 번역에 대해 알아보겠습니다. 예전의 기계 번역은 주로 규칙 기반(rule based)이었습니다. 문맥을 전체적으로 고려하지 않고 단어와 단어를 1:1로 번역하기 때문에 결과가 좋지 않았습니다. 극단적인 예이긴 하지만 아래와 같습니다. 성능이 좋지 않은 규칙 기반 번역: 나는 그곳에 갔다 -> I there went ?? '나는'을 I, '그곳에'를 there, '갔다'를 went로 단어 간 1:1 번역이기 ..

글로브(GloVe) 글로브(GloVe, Global Vectors for Word Representation)는 스탠퍼드에서 2014년 개발한 워드 임베딩 방법론입니다. 글로브는 카운트 기반의 LSA와 예측 기반의 Word2Vec의 문제점을 개선하기 위해 탄생했습니다. LSA는 문서 전체의 통계적인 정보를 활용한다는 장점이 있지만, 단어간 유사도를 측정하기 어렵다는 단점이 있습니다. 반면 Word2Vec은 단어 간 유사도를 측정할 수 있다는 장점이 있지만, 사용자가 지정한 위도우 내에서만, 즉 주변 단어(맥락 단어) 몇 개만 활용하여 결과가 도출되기 때문에 문서 전체의 단어 정보가 반영되기 힘들다는 단점이 있습니다. 글로브는 LSA와 Word2Vec의 장점을 합친 워드 임베딩 방법론으로 단어 간 유사도도..

Word2Vec은 워드 임베딩(Word Embedding) 방법론 중 하나입니다. Word2Vec을 설명하기 앞서 아래 예시를 한번 보겠습니다. 한국 - 서울 + 파리 = 프랑스 어머니 - 아버지 + 여자 = 남자 아버지 + 여자 = 어머니 직관적으로 이해하시는 분들도 있을 겁니다. 첫번째 예시를 보면 우선 한국이라는 단어에서 수도에 해당하는 서울을 빼줍니다. 한국에서 서울이라는 특성을 뺐으니 나라에 해당하는 껍데기 의미만 남아있을 겁니다. 거기에 파리를 더해주면 프랑스가 됩니다. 나라에 해당하는 껍데기에 파리라는 프랑스 수도를 더해주니 그 단어는 프랑스가 되는 것입니다. 마지막 예에서는 아버지에 여자라는 요소를 더해주면 어머니가 된다는 뜻입니다. Word2Vec을 활용하면 위와 같이 단어 간 관계를 파..

김유정의 소설이 일제강점기 농촌의 생활상을 그린 반면, 현진건의 소설은 주로 지식인의 삶을 그렸다. 중고등학생 때 한 번쯤 읽어봤던 운수 좋은 날은 인력거꾼 김첨지의 이야기를 다루지만 술 권하는 사회, 빈처, 타락자는 모두 지식인의 삶을 다루고 있다. 술 권하는 사회, 빈처, 타락자에는 모두 지식인으로서 꿈을 펼치고 싶어도 일제의 억압으로 그렇게 하지 못하는 고뇌가 담겨 있다. 그의 작품의 배경은 1920년 경이다. 김유정의 소설과 마찬가지로 일제강점기 시대를 담고 있다. 일제강점기 시절 한국문학을 읽으며 느끼는 것은 그때나 지금이나 어휘, 생활상은 달라도 인간의 감정은 똑같다는 것이다. '운수 좋은 날'의 인력거꾼 김첨지는 자기 아들뻘 되는 돈 많은 손님에게 굽신거리며 큰 돈을 벌기를 기대한다. '술 ..

단어를 밀집 행렬로 표현하는 것을 워드 임베딩(Word Embedding) 혹은 단어의 분산 표현(Distributed Representation)이라고 합니다. 밀집 행렬은 희소 행렬의 반대되는 개념으로, 대부분이 0이 아닌 값으로 채워진 행렬을 의미합니다. (밀집 행렬, 희소 행렬에 대한 자세한 사항은 NLP - 7. 희소 행렬 (Sparse Matrix) - COO 형식, CSR 형식을 참고해주시기 바랍니다.) 색을 예로 들어보겠습니다. 색을 표현할 때 우리는 흔히 RGB 형식을 사용합니다. (R, G, B) = (170, 33, 22)라면 빨강 계열의 색임을 알 수 있습니다. 이를 A색이라고 합시다. 또한 B색의 RGB는 (180, 20, 30)이고, C색의 RGB는 (20, 180, 30)이라고..

군 시절, 김유정의 단편 소설들을 재밌게 읽던 기억이 있다. 그러고 보니 군 시절 참 많은 책을 읽었다. 집에서 책장 정리를 하다가, 책의 좋은 구절을 필사해놓은 노트를 우연히 발견했다. 오랜만에 그 노트를 읽으니 당시 감정이 물씬 느껴졌다. 그때의 나는 문학을 순수하게 좋아했던 것 같다. 그러나 지금의 나는 책에 대한 순수함이 많이 사라졌다. 읽을 책이 나에게 얼마나 도움이 될지 판별하고 있는 나를 어느 순간 발견하게 되었다. 물론 지금도 철학과 문학에 대한 순수함을 간직하고 있지만, 과거에 비해 많이 사라진 것은 사실이다. 책은 '수단'이 아니라 '목적'이라 생각한다. 책으로 어떠한 유용이나 득을 얻으려는 태도는 책에 대한 순수성을 퇴색시킨다고 생각한다. 무엇을 얻기 위해 '수단'으로써 책을 접하는 ..

[상상하지 말라]는 내가 좋아하는 데이터 분석가 중 한 명인 송길영 부사장의 개정판 책이다. 시중에는 빅데이터와 관련된 책이 수두룩하게 많다. 많은 책들이 빅데이터의 장밋빛 미래를 그리며, 우리가 흔히 알고 있는 사례를 소개한다. 뜬구름 잡는 얘기가 많아 빅데이터 사례집들은 잘 안 읽는 편이다. 그러나 이번에 윌라 오디오북 무료 체험판을 등록했는데, 이 책을 무료로 들을 수 있어서 한번 들어봤다. 큰 기대는 하지 않고 들었는데 생각보다 내용이 괜찮았다. 가볍게 읽을 수 있고, 무엇보다 송길영 부사장 본인이 직접 분석하고 경험한 사례를 들었기 때문에 내용이 보다 현실적으로 다가왔다. 저자는 많은 회사에 컨설팅이나 고문을 해주었다. 비단 데이터 분석 자체에만 포커스를 둔 것이 아니다. 비즈니스적 관점으로 어..

이 책은 20세기를 대표하는 지성인이자 분석철학의 창시자인 버트런드 러셀이 일반인을 대상으로 쓴 행복에 관한 책이다. 큰 문제 없이 살아가는 평범한 사람조차 행복을 느끼지 못한다며, 어떻게 하면 행복의 길에 들어설 수 있는지에 대해 논리적으로 풀어나가는 책이다. 사실 이 책은 7년 전에 처음 읽었는데, 그때 당시 러셀이 누군지도 모르고 읽었다. 그저 유명한 학자 중 한명이겠거니 생각을 했고, 흔한 행복론 중 하나라 생각했다. 그런 편견을 가지고 읽다보니 책을 완벽히 소화하지 못했다. 그러다 얼마 전 유튜브를 통해 러셀의 살아생전 인터뷰를 보고 다시 이 책을 집어들게 되었다. 1장에서는 인간이 불행한 이유에 대해 고찰해보고, 2장에서는 행복으로 가는 길에 대해 살펴본다. 러셀이 말하는 인간이 불행한 이유는..

대회 데이콘의 AI프렌즈 시즌1 온도 추정 경진대회 대회 설명 우리나라에는 전국에 걸쳐 시도별 기상관측소가 있어 지역별 기온을 알 수 있습니다. 하지만, 각 지역 내에서도 대상과 위치에 따라 온도 차이가 매우 많이 납니다. 더운 여름날 뜨거운 아스팔트 위를 걸어보셨거나, 겨울철 칼바람 부는 교량 위를 걸어보신 분들은 체감하셨을 겁니다. 그렇다고 '모든 곳'에 관측소를 만들어 '지속적'으로 측정하기란 현실적으로 어렵습니다. 그래서 생각해 낸 방법이 ‘기상청 공공데이터를 활용한 온도 추정’입니다. 저가의 센서로 관심대상의 온도를 단기간 측정하여 기상청의 관측 데이터와의 상관관계 모델을 만들고, 이후엔 생성된 모델을 통해 온도를 추정하여 서비스하는 것입니다. 2013년 10월부터 시행된 ‘공공데이터의 제공 및..

자연어 처리(NLP) 입문서로 유명한 '밑바닥부터 시작하는 딥러닝 2' 스터디를 했습니다. 약 2주 정도 걸렸습니다. 책의 앞부분은 딥러닝에 대해 간략하게 다루고 있기 때문에 그 부분은 빠르게 넘어갈 수 있어 2주 정도밖에 안 걸렸습니다. 이 책을 스터디한 목적은 캐글의 텍스트 대회에 참가하기 위해서입니다. 텍스트 대회가 너무 재미있어 보였는데, NLP에 대해 잘 몰라 이 참에 공부를 했습니다. 제 책꽂이에는 머신러닝/딥러닝 관련 책이 10권도 넘게 있습니다. 물론 다 제가 직접 산 것은 아니고, 컨퍼런스 가서 받았거나 공짜로 얻은 것들이 더 많습니다. 지식 습득이 목적인 다른 책들도 모두 마찬가지이겠지만 머신러닝/딥러닝은 절대 광고나 책 표지만 보고 사면 안 되는 것 같습니다. 직접 그 책으로 공부해본..

이 책은 앨런 튜링의 논문 2편과 강연 2개, 에세이 1개를 엮은 책이다. 앨런 튜링은 영국 출신의 수학자였다. 그는 '컴퓨터 과학의 아버지'라 불릴 정도로 컴퓨터 과학, 인공지능에 지대한 영향을 끼쳤다. 그가 활발하게 활동했을 때는 1940~1950년 즈음이다. 지금으로부터 70~80년 전이다. 그때부터 그는 인공지능이라는 개념에 대해 생각했었다. 인공지능(Artificial Intelligence)이라는 단어를 직접적으로 쓰지는 않았고, 지능을 가진 기계(Intelligent Machinery)라고 표현했다. 이는 현재 우리가 생각하는 인공지능과 거의 흡사하다. 이 책을 읽으며 튜링에 대한 생애가 궁금해 그와 관련된 팟캐스트를 찾아들었다. 참 파란만장한 삶을 살았다. 어려서부터 수학에 타고난 그는 이..

토픽 모델링(Topic Modeling)이란 문서 집합에 숨어 있는 '주제'를 찾아내는 텍스트 마이닝기법 중 하나입니다. 사람이 모든 문서를 읽고 그 주제를 파악할 수도 있겠지만, 그러기에는 시간과 노력이 매우 많이 소요됩니다. 이럴 때 토픽 모델링을 통하여 문서에 함축되어 있는 주요 주제를 효과적으로 찾아낼 수 있습니다. 철학에 관한 문서 A와 웨이트 트레이닝에 관한 문서 B가 있다고 해봅시다. A문서에는 '소크라테스', '니체', '실존주의', '형이상학' 등과 같은 단어가 많이 들어가 있고, B문서에는 '스쿼트', '데드리프트', '벤치프레스', '복강 내압', '척추 중립' 등과 같은 단어가 많이 들어가 있을 것입니다. 그리고 두 문서에 모두 '그', '그리고', '그래서', '그러나', '~이다..

군 시절 위대한 개츠비를 처음 읽었고, 2016년에 두 번째로 읽었다. 그리고 이번에 2번을 더 읽어 총 4번 읽었다. 솔직히 맨 처음 위대한 개츠비를 읽었을 때는 그리 큰 감흥을 느끼지 못했다. 그저 그런 가벼운 연애 소설만 같았다. 이번에 위대한 개츠비를 다시 읽어봐야겠다고 생각한 건 순전히 [상실의 시대] 때문이다. 무라카미 하루키의 [상실의 시대]는 재작년에 처음 읽었다. 처음 읽었을 땐 주인공인 와타나베의 담담함과 소설 전체에서 느껴지는 분위기가 인상 깊다고 생각은 했다. 평온함과 담담함, 하지만 그 안에서 느껴지는 고뇌를 아름답게 그려낸 소설이며, 20대 초반인 누군가에게 추천해주고 싶은 소설이라고 느꼈었다. 그러나 [상실의 시대]를 처음 읽었을 때는 왜 사람들이 하루키를 극찬하는지, [상실의..

이번 장에서는 특이값 분해(SVD)에 대해 알아보겠습니다. 고유값 분해에 대해 알고 있어야 특이값 분해를 이해할 수 있습니다. 고유값 분해를 잘 모르시는 분은 이전 장을 참고해주시기 바랍니다. 이번 장은 MIT Open Course Ware, 파이썬 머신러닝 완벽 가이드 (권철민 저), 다크 프로그래머스 블로그를 참고했습니다. 특이값 분해(Singular Value Decomposition, SVD) 이전 장에서 고유값 분해에 대해 알아봤습니다. 고유값 분해는 정방 행렬(행과 열의 크기가 같은 행렬)에 대해서만 가능하다고 했습니다. 하지만 특이값 분해는 정방 행렬뿐만 아니라 행과 열의 크기가 다른 행렬에 대해서도 적용할 수 있습니다. 즉, 특이값 분해는 모든 직각 행렬에 대해 가능합니다. SVD는 m x..

이번 시간에는 고유값과 고유 벡터, 그리고 고유값 분해에 대해 알아보겠습니다. 참고로 고유값, 고유 벡터를 이해하기 위해서는 행렬의 몇 가지 종류에 대해 알고 있어야 합니다. 본 글의 맨 아래에 부록으로 행렬의 종류에 대해서도 설명해놨으니, 행렬의 종류에 대해 까먹으신 분들은 참고하시면 되겠습니다. 이번 장은 다크 프로그래머스 블로그와 공돌이의 수학정리노트 유튜브를 참고해 작성했습니다. 고유값(eigenvalue)과 고유 벡터(eigenvector) 정방 행렬 A를 선형 변환으로 봤을 때, 선형 변환 A에 의한 변환 결과가 자기 자신의 상수 배가 되는 0이 아닌 벡터를 고유벡터(eigenvector)라고 하고, 이 상수배 값을 고유값(eigenvalue)이라고 합니다. 고유값, 고유 벡터는 정방 행렬에 ..

문서 유사도란 말그대로 문서와 문서 간의 유사도가 어느정도인지 나타내는 척도입니다. 문서 간 유사도를 측정해 지금 보고 있는 뉴스와 가장 유사한 뉴스를 추천해주기도 하고, 줄거리를 기반으로 내가 본 영화와 가장 유사한 영화를 추천해줄 수도 있습니다. 문서 유사도를 측정하는 방법은 여러개가 있지만 일반적으로 코사인 유사도(Cosine Similarity)를 많이 사용합니다. 이번 장에서는 코사인 유사도의 정의와 사용 방법에 대해 알아보겠습니다. 역시나 이전과 마찬가지로 파이썬 머신러닝 완벽 가이드 (권철민 저), 딥 러닝을 이용한 자연어 처리 입문 (유원주 저)을 요약정리했습니다. 코사인 유사도 (Cosine Similarity) 코사인 유사도란 벡터와 벡터 간의 유사도를 비교할 때 두 벡터 간의 사잇각을..

이번 장에선 희소 행렬에 대해 알아보겠습니다. 마찬가지로 파이썬 머신러닝 완벽 가이드 (권철민 저), 딥 러닝을 이용한 자연어 처리 입문(유원주 저)을 요약정리했습니다. 이전 장에서 배웠던 CountVectorizer, TfidfVectorizer를 이용해 피처 벡터화를 하면 상당히 많은 칼럼이 생깁니다. 모든 문서에 포함된 모든 고유 단어를 피처로 만들어주기 때문입니다. 모든 문서의 단어를 피처로 만들어주면 수만 개에서 수십만 개의 단어가 만들어집니다. 이렇게 대규모의 행렬이 생기더라도 각 문서에 포함된 단어의 수는 제한적이기 때문에 행렬의 대부분의 값은 0으로 채워집니다. 이렇듯 대부분 값이 0으로 채워진 행렬을 희소 행렬(Sparse Matrix)이라고 합니다. 아래는 희소 행렬의 예시입니다. 이와..

이전 장에서 BOW에 대해 알아봤고, BOW의 피처 벡터화는 카운트 기반 벡터화(CountVectorizer)와 TF-IDF(Term Frequency - Inverse Document Frequency) 기반 벡터화가 있다고 했습니다. 이번장에서는 CountVectorizer와 TF-IDF에 대해 알아보겠습니다. 이번 장 역시 파이썬 머신러닝 완벽 가이드 (권철민 저), 딥 러닝을 이용한 자연어 처리 입문(유원주 저)을 요약정리했습니다. 카운트 기반 벡터화 이전 장에서 BOW(Bag of Words) 모델에서의 피처 벡터화 수행 방법에 대해 설명했습니다. 그와 마찬가지로, 단어 피처에 값을 부여할 때, 각 문서에서 해당 단어가 나타나는 횟수, 즉 Count를 부여하는 경우를 카운트 벡터화라고 합니다. ..

이번 장에선 Bag of Words에 대해 알아보겠습니다. 이전과 마찬가지로 파이썬 머신러닝 완벽 가이드 (권철민 저), 딥 러닝을 이용한 자연어 처리 입문(유원주 저)을 요약정리했습니다. Bag of Words란 단어들의 문맥이나 순서를 무시하고, 단어들에 대해 빈도 값(frequency)을 부여해 피쳐 값을 만드는 모델입니다. Bag of Words는 직역하자면 단어들의 가방입니다. 문서 내 모든 단어를 한꺼번에 가방(Bag) 안에 넣은 뒤에 흔들어서 섞는다는 의미로 Bag of Words(BOW) 모델이라고 합니다. BOW를 기반으로 피처 추출하기 아래의 두 문장이 있다고 가정하고 이 문장을 BOW 기반으로 피처 추출해보겠습니다. 문장1: 'My wife likes to watch baseball ..

텍스트 전처리 세 번째 주제는 어간 추출(Stemming)과 표제어 추출(Lemmatization)입니다. 이전과 마찬가지로 파이썬 머신러닝 완벽 가이드 (권철민 저), 딥 러닝을 이용한 자연어 처리 입문(유원주 저)을 요약정리했습니다. 택스트 전처리의 목적은 말뭉치(Corpus)로부터 복잡성을 줄이는 것입니다. 어간 추출과 표제어 추출 역시 말뭉치의 복잡성을 줄여주는 텍스트 정규화 기법입니다. 텍스트 안에서 언어는 다양하게 변합니다. 영어를 예로 들면, 과거형, 현재 진행형, 미래형, 3인칭 단수 여부 등 많은 조건에 따라 원래 단어가 변화합니다. play를 예로 들면, plays, played, playing 등과 같이 조건에 따라 다양하게 달라집니다. 어간 추출(Stemming)과 표제어 추출(Le..