신경망 한영 번역기 코드 공개

딥러닝으로 구축한 한영 번역기 코드를 공개한다. 대부분 fixed length로 인코더 디코더를 구현하는 seq2seq 예제모형에서 좀더 나아가서 variable length를 인식해 학습이 되게끔 구현했다. 아마도 Gluon으로 해당 코드는 처음이지 않을까 한다. 모든 코드를 Symbol로 구현해 hybridize 모드로 학습이 될 수 있게끔 했고, 기본적으로 teacher forcing 방식으로 학습을 구성했다. 임베딩 학습도 다소 특이하게 한,영 단어를 모두 하나의 임베딩 […]

계속 읽기

딥러닝이 덧셈을 하는 방법, Attention Mechanism으로 살펴보기

필자가 지난번 seq2seq기반 덧셈 모형 빌드(with Gluon)을 Gluon으로 구축했으며, 잘 동작하는 모습을 보여줬다. 해당 코드를 정리하면서 딥러닝이 어떠한 방식으로 덧셈을 하는지 조금더 엿볼 수 있으면 어떨까 하는 생각이 들었다. 이 글을 보기 전에 이전 포스트를 먼저 읽어보길 권한다. 이 포스트에서 보여줄 두가지 부분은 어텐션 매커니즘(attention mechanism) 구현과 시각화 그리고 Gluon 모델의 학습/예측 퍼포먼스 향상을 할 […]

계속 읽기

seq2seq기반 덧셈 모형 빌드(with Gluon)

필자가 Gluon을 시작한 계기는 바로 Keras로 seq2seq기반의 네트워크를 구축하기가 매우 어렵거나 모호해서 였다. 사실 간단한 영한 기계번역기를 Keras로 만들다가 한계에 부딧혀 포기했다. 그 원인은 아래 도표를 보면 알겠지만 학습과 예측의 네트웍 플로우가 다른데 있는데, 이럴 경우 예측 코드는 Keras에서 작성하기가 어려워진다. 사실 어렵다기 보다는 모호한 코드를 짜게 될 가능성이 많다. 그래서 해당 코드를 작성하고 이틀만 […]

계속 읽기

전이학습(transfer learning)으로 모형 재사용하기 (Gluon 기반)

전이학습(traansfer learning)은 꽤 오래된 주제지만 실무에서 활용한만한 가치가 높은 기법중에 하나이다. 특히나 이미지 관련 분류 모형에서는 이 기법은 거의 필수라고 생각하고 일반적인 기술일 것이다. 이 기법은 기존 분류에 대한 성능이 좋은 네트워크와 가중치를 일부 혹은 전부 가져와 상위 레이어를 튜닝하는 방식으로 자신이 원하는 문제를 풀게 모형을 재활용 혹은 전용하는 방법이다. 특히나 학습셋이 부족한 경우 그리고 […]

계속 읽기

Gluon을 이용한 Grad CAM

먼저 이 글을 독자분들이 읽기 전에 배경 지식을 위해 아래 글을 먼저 읽어보길 추천한다. Grad CAM을 이용한 딥러닝 모형 해석 이전 글의 코드를 보면 알다시피 keras의 레이어 API구조로 직관적으로 gradient나 layer 출력을 직관적으로 뽑아보는게 다소 번거롭고 backend API의 도움으로 부분적으로나마 가능하다는 생각을 독자분들도 했을거라 생각한다. 아마도 이런 부분때문에 PyTorch와 같은 imperative 방식의 딥러닝 프레임웍이 인기가 […]

계속 읽기

Grad CAM을 이용한 딥러닝 모형 해석

모형의 해석은 실무적인 관점에서 생각보다 중요한 부분을 차지하고 있다. 가장 먼저 모형이 상식에 맞게 만들어 졌는지 확인하기 위한 용도로 활용 가능한데, 만일 상식에 기반해서 모형이 만들어 졌다면 오랜 기간 모형을 운영하는데 안정성을 유지해줄 가능성이 많다. 또한 모형 스코어에 대한 설명을 현업에서 요구하는 경우가 많은데, 이 경우 현업의 이해와 신뢰를 도모하는데 큰 역할을 해준다. 무엇보다 모형을 […]

계속 읽기

딥러닝 한글 자동띄어쓰기 모형 성능 향상 및 API 업데이트

1차 모형과 띄어쓰기 정확도 성능 차이 테스트 셋 1차 모형 2차 모형 세종 코퍼스 94.8% 97.1% 구어체 코퍼스 93.2% 94.3% 성능 측정방식은 코퍼스 내 문장별로 모든 띄어쓰기를 제거하고 넣었을때 올바르게 띄어쓰기가 되는지 여부를 측정한 것이다. 세종 코퍼스 1만 문장, 구어체 코퍼스 3만 문장으로 테스트 했다. 그리고 모형 학습은 박찬엽씨가 공유해준 뉴스 코퍼스 1억 문장 기반으로 […]

계속 읽기

맥주마시며 만들어본 딥러닝 맥주 추천엔진

퇴근 후 간단한 저녁과 함께 데낄라 한잔을 하고 집에 와서 맥주를 마시다가 4년전에 킵해둔 맥주 리뷰 데이터 생각이 나서 이 데이터 기반으로 10분만에 딥러닝 맥주 추천엔진을 만들어 봤다. 학습하는데 10분이 더 걸렸던 것을 빼놓고는 생각보다 나쁘지 않은 엔진이 구축되었다. 딥러닝 기반의 추천엔진 학습은 사용자 임베딩 매트릭스와 맥주 임베딩 매트릭스의 가중치를 학습하는게 목적이며 이 임베딩 매트릭스 […]

계속 읽기

딥러닝 기반 한글 자동 띄어쓰기 API 공개

형태소 분석 이전에 문자열의 정상 유무는 이후 분석 품질에 지대한 영향을 미친다. 최근 음성인식 정확도가 높아짐에 따라 많은 음성데이터가 Text로 변환되고 분석되기 시작했는데, 이를 위해 잘 동작하는 띄어쓰기 엔진은 텍스트 분석에서 거의 필수적인게 되어 버렸다. 또한 트위터나 페이스북의 사용자 생성 데이터를 분석하기 위해서 일종의 정규화 작업이 필수이며 양질의 띄어쓰기 엔진 확보가 점차 중요해지고 있다. 개인적으로 […]

계속 읽기

R’s way for Deep Learning with Keras

Keras는 high level 딥러닝 API의 표준을 달리고 있는 딥러닝 프레임웍 중에 하나이다. TensorFlow를 기점으로 Theano, CNTK를 지원하고 있으며, 현재 MXNet까지 관련 인터페이스를 개발하고 있어 점점 딥러닝의 표준으로 자리잡고 있다. 필자는 Keras(or TensorFlow) + Python 기반으로 실무를 하고 있는데, 사실 딥러닝 프레임웍을 제외하고는 데이터를 다루는 모든면에서 R이 더 효과적이라고 생각하고 있는 사람중에 하나이고 많은 분들이 이 […]

계속 읽기