분류 전체보기
-
헌법에서 특정 단어가 사용된 용례를 찾아보기 : konlpy와 nltk를 활용한 한국어 concordance언어학 2022. 5. 8. 09:04
텍스트를 특정한 목적 아래 전산화하여 모아 둔 것을 코퍼스(말뭉치)라고 한다. 코퍼스 언어학은 이러한 코퍼스를 처리하는 방법론을 연구한다. 이러한 코퍼스 언어학의 기법 중 하나가 concordance이다. Concordance는 특정 코퍼스에서 지정한 단어가 등장할 때, 이 단어를 맥락과 함께 표시한 것이다. 위의 그림은 대한민국 헌법에서 뽑아낸 '국민(일반명사)'에 대한 concordance이다. NLTK는 Python을 사용하여 자연어처리를 할 수 있도록 도와주는 패키지이다. 코퍼스 언어학이 아니라 자연어처리를 위한 패키지인 이유는 concordance와 같은 기능을 더불어 tokenization, lemmatization 등의 처리를 할 수 있도록 도와주기 때문이다. 문제는 이 패키지는 한국어를 지..
-
Python 정규식 : re.match와 re.search, 그리고 regex 패키지와 후방탐색카테고리 없음 2022. 5. 6. 17:23
프로젝트 하느라 여념이 없어 블로그에 아무것도 올리지 못하다가, 뭐라도 올려야지 싶어 올려보는 글입니다. 봉착한 문제 기나긴 텍스트에서 특정 부분을 긁어오는 스크립트를 짜는 중 두 가지 문제에 봉착했다. 1. re.match()를 쓰는데 정규식은 분명 올바른데, 아무런 match object가 반환되지 않는다. 2. (? 이 두 문제를 해결한 기록이다. re.match()와 re.search() 1번 문제는 너무나도 허무한 문제였다. re 모듈에서는 패턴을 스트링에서 찾아서 match 객체를 내보내는 메소드가 두 가지 있는데, 하나는 match고 하나는 search다. (findall은 match 객채가 아니라 패턴에 일치하는 사례들을 리스트로 반환한다.) 문제는 분명히 올바른 정규식이고, regex 테..
-
지금까지의 딥러닝 강의 후기 | 패스트캠퍼스 챌린지 최종 후기딥러닝 2022. 3. 23. 21:10
패스트캠퍼스에서 딥러닝 강의를 매일같이 수강한지 어느덧 50일이 넘었다. 마지막 글을 남긴 다음에도 매일같이 듣고는 있는데, 코딩 실습 부분을 들은데다가 코드 내용을 함부로 공개하면 안 될 것 같아서 딱히 기록으로 남기지는 못하고 있었다. 이번 글에서는 패스트캠퍼스 환급 챌린지의 마지막으로 전체적인 후기를 남기고자 한다. 물론 강의를 아직 끝까지 들은 것은 아니기 때문에, 코드 내용이 아닌 이론 부분에 대한 글은 꾸준히 올릴 생각이다. 누군가에게는 도움이 되기를 바라며. 강의를 듣게 된 계기 내가 들은 강의의 정확한 이름은 한번에 끝내는 딥러닝/인공지능 초격차 패키지다. 매우 긴 이름인데, 딥러닝을 활용한 인공지능을 수학적 원리에서 실용적인 실습까지 한 번에 끝내겠다는 강의이다. 딥러닝 자체는 개인적으로..
-
Latent Variable Models (2) | 패스트캠퍼스 챌린지 50일차딥러닝 2022. 3. 14. 19:53
Latent variable model은 모든 변수를 알고 참조하는 방식으로 학습하는 것이 아니라 잠재된 변수가 있다고 상정하고 학습을 진행하는 모델이다. 이 과정에서 p(x)를 구하기 위해 posterior p(z|x)를 활용할 수 있다. 이러한 과정이 variational inference이다. 이러한 잠재 변수 모델은 여러 과업에서 적용될 수 있다. 우선, 지금 중점을 두고 있는 것 처럼 생성 모델로 활용할 수도 있다. 또한, 상호 정보(Mutual Information)를 최대화하고 측정하는 방법으로 사용할 수도 있다. 마지막으로, 학습 가능한 dequantization으로 활용할 수도 있다. 이 때, posterior의 parameter와 모델 q의 파라미터는 서로 같을 수도, 다를 수도 있다...
-
Latent Variable Model (1) | 패스트캠퍼스 챌린지 49일차딥러닝 2022. 3. 13. 20:33
지금까지 살펴 본 Flow 방법의 생성모델은 데이터와 노이즈를 모두 참고하는 방식으로 생성 모델을 훈련한다. 이와 달리, Latent Variable Models(잠재변수모델)은 잠재된 숨은 변수, 즉 intractable density가 있는 변수가 있다는 가정 하에 진행한다. 굳이 숨은 변수를 상정하는 이유는 차원 축소된 representation을 이룰 수 있고, pixel 및 time-step 추측으로 부터 독립적이면서 통계적 원리를 사용하기 때문에 샘플링이 빠르다는 장점 때문이다. 다만, 비지도학습이기 떄문에 이 잠재 변수가 무엇인지, 그리고 데이터와 어떻게 상호작용하는지를 알 수 없다. 이러한 잠재된 변수를 지정하는 방법을 찾는 최선의 방법 또한 아직 연구 단계이다. 잠재 변수를 이해하는데는 ..
-
Flow-Based Generative Model (4) | 패스트캠퍼스 챌린지 48일차딥러닝 2022. 3. 12. 21:25
계속해서 Flow 기반 생성 모델에 대해 다루고 있다. 이 모델들은 데이터로부터 invertible하고 미분 가능한 함수로 노이즈가 계산될 때, 이 노이즈로부터 함수의 역함수를 취해 데이터와 유사한 분포를 가진 결과물을 생성할 수 있는 모델이다. Glow는 normalizing flow의 일환으로, NICE/RealNVP를 확장한 Flow이다. 여기서의 핵심은 1x1 convolution layer가 invertible하다는 것이다. 이를 활용하여 batch_size=1에 대해 translation, scale 등의 batch normalization을 수행하고(이를 activation normalization, ActNorm이라 부른다), 1x1 convolution layer의 inverse를 취한 ..
-
Flow-Based Generative Model (3) | 패스트캠퍼스 챌린지 47일차딥러닝 2022. 3. 11. 22:01
Flow 모델은 데이터와 노이즈 사이가 invertible하고 미분 가능한 함수로 이루어 졌을 때 이 성질을 사용하여 noise로 부터 data와 유사한 것을 생성해 내는 모델이다. 지난 시간에는 이러한 flow 모델 중 하나로 Afifine Flow를 살펴보았고, 이 성능이 느림을 살펴보았다. 이번 시간에는 성능이 빠른, 그래서 실제 실시간 서비스 까지 가능한 Flow 모델들을 살펴 볼 것이다. 그 첫번째는 element-wise flow이다. 이는 element-wise affine, CDF flow 등을 활용해서 flow 연산을 element 별로 따로 적용하는 것을 뜻한다. Element wise이기 때문에 Jacobian은 대각선 형태가 되어 determinant를 계산하기가 쉬워진다. 즉, 성..
-
Flow-Based Generative Model (2) | 패스트캠퍼스 챌린지 46일차딥러닝 2022. 3. 10. 21:08
Flow 생성 모델은 데이터로 부터 invertible하고 미분 가능한 노이즈로의 매핑으로부터 역함수를 취해 원래 데이터를 근사해 내는 방법이다. 이를 학습하는 과정은 여타 모델과 마찬가지로 최대 가능도 추정을 사용한다. 이 때, 확률은 노이즈의 역함수 값 x의 pdf(확률밀도함수)로, 이 확률의 총 적분값은 노이즈의 총 적분값과 같은 1이 된다. 여기에서 확률의 수식을 구할 수 있다. 이 때, change of variable 규칙에 의해 함수의 Jacobian 행렬의 값을 대각선으로 곲한 determinant 값으로 이 값을 표현할 수 있다. 이러한 Flow는 여러가지 sequential한 연산으로 구성될 수 있다. 즉, 한 번에 데이터에서 노이즈 까지의 flow로 가는 대신 여러번의 flow 함수를..