본문 바로가기

기계학습

(10)
영어 단어를 한글로. 머신러닝으로 음역하기 머신러닝으로 '음역' 해보기 개요 회사에서 기계 학습과 관련된 프로젝트는 거의 다 맡으려고 하고 있다. 다만 내 본래 역할은 인프라 엔지니어인 탓에 (...) 많은 시간을 할애하지는 못하고 있다. 이번에 하게된 프로젝트는 음역 (Transliteration) 을 기계학습을 통해 자동화 시키는 작업이었다. 한글 언어 모델을 학습시키려고 하는데, 영어 단어가 너무 많이 포함되어 별도의 표준화 작업이 필요하다는 이유에서 였다. 데이터는 사내의 데이터 담당 분들이 (손수) 모아주셨다. 각종 발음 관련 사이트와 영어 단어를 모으고 "직접" 기입하는 식으로.. 그렇게 15만개 가량의 단어셋으로 학습을 진행하게 되었다. 데이터를 가공하는 것과 모델을 튜닝해가면서 겪었던 경험들을 최대한 풍부하게 써보려고 했다. (질문..
About recall, precision About recall, precision회사에서 tensorflow, konlpy 과 같은 라이브러리를 이용해 자연어 처리를 하면서 헷갈렸던 용어를 정리해보았습니다. recall, precision는 실험 데이터 검증 등에 자주 사용하는 용어로, 알아두면 좋은 개념들입니다. :)거의 모든 자료는 위키피디아 에서 가져왔으며, 별도 출처는 자료 하단에 작성하였습니다.Recision and Recall In pattern recognition and information retrieval with binary classification, precision (also called positive predictive value) is the fraction of retrieved instances that ar..
인공신경망 Neural Network #1 ( 구현 수정본) 구현 방식에 오류를 발견하여 오류 수정 후 재작성 하였습니다.기존 글은 http://blog.kim82536.pe.kr/entry/%EC%9D%B8%EA%B3%B5%EC%8B%A0%EA%B2%BD%EB%A7%9D-Neural-Network-1에서 확인할 수 있습니다. 4. 결과를 알 수 없는 뉴럴 네트워크 만들어 보기 기존 소스에서는 OutputNeuron 을 2개 두고, 각각 데이터를 받아 가장 높은 데이터를 가진 뉴런을 출력하는 방식이었습니다만,원 글의 C++ 소스에서는 OutputNeuron 을 1개만 두고 (위 그림 참고) 역치값에 현재 데이터를 비교하여 True, False 를 반환하는 방식이라 부득이 하게 수정하게 되었습니다. 원글 소스: http://blog.secmem.org/197 수정 ..
인공신경망 Neural Network #2 내용 출처; http://blog.secmem.org/197 지난 포스팅과 이어집니다링크: http://blog.kim82536.pe.kr/entry/%EC%9D%B8%EA%B3%B5%EC%8B%A0%EA%B2%BD%EB%A7%9D-Neural-Network-1 전체 소스: https://github.com/Kcrong/basic-neural-network/blob/master/sigmoid.py 1. 뉴런의 수학적 해석지난 번에 구현한 뉴런의 입출력 동작을 수학적으로 해석해보겠습니다. 아래는 그 뉴런을 도식화한 그림입니다.편의 상 그림에는 두 개의 입력 밖에 없지만, 입력 갯수는 증가될 수 있습니다. 출력을 살펴보자면, 우선 앞 뉴런에서 입력을 받으면 (0 또는 1) 각 연결 가중치가 곱해지고, 이들의..
인공신경망 Neural Network #1 이 글의 전체 예제는 https://github.com/Kcrong/basic-neural-network 에 있습니다. 이 글은 http://blog.secmem.org/197 을 참고했으며, 모든 예제를 직접 작성하였습니다. 1. 뉴럴 네트워크란?컴퓨터 공학에서 뉴럴 네트워크란, 인공지능 분야의 기술로 인간의 뇌 속에 있는 신경을 모델링 하여 문제를 해결하는 방법을 말합니다. 2. 뉴런이란?뉴런은 신경망을 구성하는 신경세포 한 개를 말합니다. 뉴런 하나는 단순히 전기 신호를 전달하는 역할 밖에 없지만, 이 뉴런이 엄청 모이면 인간의 지능을 가지게 됩니다. (실제 인간은 1000억개의 뉴런을 가지고 있다 합니다.) 뉴런의 동작방식은 다음과 같습니다. 출처: 나무 위키 Cell Body : 세포체 Nucl..
주요인사연설분석 자동화 KoNLPy 와 word2vec 을 이용해 제작하였습니다 소스:.https://github.com/Kcrong/speech_analysis 발표 자료: http://prezi.com/ekz8oi2yg-mo/?utm_campaign=share&utm_medium=copy Tree - Visualization 은 https://github.com/pvthuy/word2vec-visualization을 참고했다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888..
유전 알고리즘 구현 소스 오류 디버깅 갑자기 소스를 고치다가, 돌려보니 진화가 올바르게 되지 않았다. 초반 (0~5) 세대 때 적합도가 잠깐 상승하더니, 그 이후에는 데이터가 그래프처럼 제자리 걸음을 반복했다. 아래 소스는 삽질을 반복한 소스이다. 당연한 부분에 오류가 있으니, 문제점을 찾아보자. """ Author Kcrong """ from random import randint as rand from matplotlib.pyplot import plot, show, xlim, ylim, xlabel, ylabel from numpy import mean # 범위: x ~ y-1 def randint(x, y): return rand(x, y - 1) # 원하는 값 WE_WANT = [1, 3, 2, 4, 1, 1, 1, 1] # 우월 ..
유전 알고리즘 가지고 놀기 예제 링크: https://github.com/Kcrong/Simple-Genetic-Algorithm 유전 알고리즘이란, "유전 알고리즘(Genetic Algorithm)은 자연세계의 진화과정에 기초한 계산 모델로서 존 홀랜드(John Holland)에 의해서 1975년에 개발된 전역 최적화 기법으로, 최적화 문제를 해결하는 기법의 하나이다. 생물의 진화를 모방한 진화 연산의 대표적인 기법으로, 실제 진화의 과정에서 많은 부분을 차용하였으며, 변이(돌연변이), 교배 연산 등이 존재한다. 또한 세대, 인구 등의 용어도 문제 풀이 과정에서 사용된다." - 위키피디아 유전 알고리즘은 부모의 유전 정보들이 자식들에게 골고루 분포 됨으로써, 문제에 대한 해를 찾아가는 알고리즘이다.자식 해는 부모 해와 비슷한 형..