머신러닝 그중에 신경망은 딥러닝(Deep Learning) 시대로 넘어오고나서 빅데이터의 등장, GPU, 딥러닝 프레임워크(ex: tensorflow, torch 등), 옵티마이저 등등으로 인해 엄청난 발전을 이루게 되었다. 하지만, 양이 있으면 음도 있는 법 모든 시스템이 딥러닝에 적합한 것은 아니었다. 특히, 데이터가 풍부하지 못하거나 너무 많은 특징(Feature)를 가지고 있는 시스템의 경우 과적합(Overfitting) 이라는 문제가 발생하였는데 이 문제는 학습 데이터에 지나치게 학습되어 실제 운영 데이터에 제대로 된 결과를 보여주지 못하는 문제였다. 과적합을 해결하는 방법은 여러가지가 있으며, 한가지만 써서 문제가 해결되지 않는다. 예를 들어 데이터가 적은데 특징이 많을 경우 궁극적으로 과적합..
현재 가장 많이 사용되는 딥러닝(Deep Learning) 기반의 분산 표현(distributed representation) 워드임베딩(Word Embedding, 자연어를 기계가 이해할 수 있는 숫자 벡터 값으로 변경하는 기술)은 Word2vec이라 할 수 있다. Word2Vec 임베딩 기술은 단순하지만 성능이 우수해서 많이 사용되는데 치명적인 문제점도 존재한다. 바로 주어지는 단어(Corpus, 말뭉치)를 기반으로 학습을 진행하며 존재하지 않던 단어를 던졌을 때 에러가 발생하는 등 만능적인 모습을 보여주지 않는다. 당연히 학습 안된 단어는 나오지 말아야 되는거 아니냐? 할 수 있겠지만 이 문제를 해결하기 위한 방식이 연구되고 있었고, 페이스북(Facebook)에서 이를 보완하는 언어 모델이 등장한다..
기계학습(Machine Learning, 머신러닝)과 딥러닝(Deep Learning)이 현재 이정도까지 수준까지 발전하기에는 수많은 사람들의 노력과 정교한 수학적 모델들이 계속 고도화되었으며 많은 사람들이 실제 프로젝트에 활용하면서 무엇이 어떤 상황에 좋고 나쁨을 피드백하거나 논문등으로 발표하기 때문일거라 생각한다. 머신러닝의 성능 개선법 머신러닝, 딥러닝의 성능을 좌우하는 녀석 중에 옵티마이저(Optimizer, 최적화)가 있는데 DB를 잘아는 사람들은 옵티마이저가 최소의 Cost로 결과를 찾아주는 것으로 알고 있을 것이다. 사실 DB와 머신러닝, 딥러닝에서 말하는 옵티마이저의 궁극적인 목적은 동일할 것이다. DB에서 최소의 코스트로 결과를 찾는 개념과 신경망의 모델이 실제 결과와 예측 결과의 차이를..
머신러닝(딥러닝 포함)의 작업에 대해서 아직 많은 사람들이 어떤 부분들이 중요한지 모르며, 간혹 자신의 역할이 매우 작은것이라 생각해서 업무를 비하하는 사람들이 많다. 특히, 데이터 전처리의 경우 "전처리"라는 명칭 때문에 자신의 작업은 사소하고, 마치 축구에서 수비수의 역할과 같다 생각해서 일을 그만두고 모델러로 전향하는 경우가 많은데 정말 잘못된 생각이라 말을 하고 싶다. 머신러닝의 작업 플로우 데이터 수집 (Data Acquisition) 데이터 수집 이전에 데이터 설계, 데이터의 분석 등이 전제되어야 하겠지만 그 부분을 배제하고 개발단으로 설명을 하자면 제일 먼저 데이터를 수집해야 될 것이다. 자연어처리(NLP)의 경우 말뭉치를 만든다던지, 분석을 위한 기본 데이터(Raw Data) 뿐만 아니라 ..
딥러닝(Deep Learning)을 이해하기 위해서는 몇가지 개념들을 확실히 익히고 넘어가야 한다. 사실 딥러닝이라는 것은 프로그램적인 요소보다는 이미 만들어진 것을 어떻게 잘 조율해서 사용해야 하는지에 더 달려있기 때문에(요즘 트렌드 자체가 know-where 이기도 하고...) 너무 복잡하게 수식을 이해할 필요도 없고 간단하게 이해하고 넘어가도 딥러닝을 구현하는데 크게 지장이 없을 것이다. 논문을 쓰고 완전히 이쪽길로 깊게 공부하는 사람들은 당연히 수식까지 짜면서 공부를 해야 하겠지만 개발자이기도 하고 딥러닝도 어느정도 핸들링하는 사람들이라면 어느때에 이 기술이 좋더라 정도만 알아도 개발하는데 전혀 지장이 없다. 활성화 함수(Activation Function) 개념 딥러닝은 다양한 레이어(layer..
MNIST(Modified National Institute of Standards and Technology database)는 0~9까지의 숫자를 사람들이 손으로 직접 쓴 손글씨를 이미지화한 데이터셋이다. 딥러닝(Deep Learning)을 제외한 머신러닝(Machine Learning)에 IRIS(붓꽃 데이터)셋이 있다면 딥러닝에는 MNIST가 있으며 그만큼 성능을 자랑하기에 매우 딥러닝에 효율적이며 기본으로 내장이 되어 있어서 언제든지 불러서 실습을 해볼 수가 있는 데이터셋이다. MNIST 데이터셋 최근에는 이에 MNIST보다 조금 더 분류가 힘든 fashion mnist라는 데이터셋이 신규로 추가되었다. 둘의 포맷은 완전히 동일하기에 성능을 측정하기에 MNIST보다 더 수월해보인다. Fashio..
케라스(Keras) 설치가 완료되었으면, 이제 케라스를 이용해서 본격적으로 간단한 문제를 학습을 통해서 풀어보는 시간을 갖도록 하겠다. 학창 시절 방정식 문제를 지겹게 풀어봤을 터인데 컴퓨터의 학습은 바로 이 방정식으로 끝이 난다고 해도 과언이 아니다. y = ax + b 위에 있는 매우 쉬운 공식은 머신러닝과 딥러닝을 이해하기 위한 공식이며, 이것만 이해할 줄 안다면 모든 것은 아니지만 딥러닝을 학습할 준비는 모두 끝이 난 것이다. 위 공식을 기반으로 문제를 생성을 한번 해보겠다. 5 = a*2 + b 3 = a*1 + b 7 = a*3 + b 위 문제들을 보았을 때, a와 b의 값은 무엇일까? 사실 이정도는 수학과 담을 쌓은 사람이라고 해도 쉽게 풀 수 있을 것이다. 정답은 a=2, b=1 이다. 딥..
케라스(Keras)는 텐서플로우(Tensorflow)와 함께 대표적인 파이썬(Python)에서 사용하는 딥러닝(deep learning) 라이브러리이다. 많은 사람들이 텐서플로우와 케라스를 동일한 레벨에서 수행되는 라이벌 라이브러리라 착각 할 수 있지만, 둘은 라이벌 관계가 아니라 공생 관계라 할 수 있다. 이번 포스팅에서는 케라스에 대해서 간단히 개념에 대해서 설명을 하고 Python에서 케라스를 설치하는 방법에 대해서 간단히 적어보고자 한다. 케라스(Keras) 설명 케라스(Keras)는 파이썬으로 작성된 오픈 소스 신경망 라이브러리이다. MXNet, Deeplearning4j, 텐서플로, Microsoft Cognitive Toolkit 또는 Theano 위에서 수행할 수 있다. - 위키피디아 - ..
4차 산업혁명을 주도하는 것은 무엇일까? IoT? 5G? 3D Print? 블록체인? 뭐 다 맞는말이다 할 수 있지만, 4차 산업혁명이라는 것을 제대로 만들어주는 공격수는 인공지능(Artificial Intelligence)이라 할 수 있겠다. 5G가 된다 한들 우리는 4차 산업혁명이라는 것을 인지하지 못한다. 그리고 우리가 사용하고 있는 수많은 IT 기기들이 있다고 해도 IoT가 4차 산업혁명의 주역이라 인지하지 못할 것이다. 왜냐하면 3차 산업혁명과 차이점을 명확히 하기가 힘들기 때문이다. 우리의 머리속에 4차 산업혁명은 로봇들과 수많은 AI가 가득할 것이다. 즉 로봇들과 인간들이 공존하고, 인간의 업무를 대체하거나 편리하게 해주는 세상. 즉, 4차 산업혁명의 핵심은 인공지능이라고 자신있게 말할 수 ..
퍼셉트론을 포스팅 하면서, 인공지능의 시작과 함께 1차 인공지능의 겨울이 오는 것까지 설명을 하였다. 퍼셉트론은 인공지능의 시작이며, 현재 가장 핫하고 진보적인 기술인 딥러닝(Deep Learning)의 시초가 되는 기술이다. 즉 퍼셉트론을 제대로 이해할 수 있어야, 딥러닝을 제대로 이해할 수 있다고 말해도 과언이 아닌 것이다. 인공지능의 한동안 거의 사라진 기술이다시피 하였다. 막대한 금액을 퍼부었지만, 별다른 성과를 내지 못했던 이 기술은 점차 연구를 중단하게 되고, 근근이 몇군데에서만 연구를 시작하게 된다. 그러다가, 전문가 시스템(Expert System)이 발전하면서 인공지능의 관심도가 증가하게 된다. 사실 퍼셉트론이 처음 생겼을 때는 사용할 수 있는 분야가 없어서 쇠퇴하였지만, 전문가 시스템은..
1. 인공신경망과 딥러닝의 시작 "인공지능의 시작은 퍼셉트론(Perceptron)이 처음이다!"라고 말하기에는 힘들지만, "인공신경망(Neural Network)과 딥러닝(Deep Learning)은 퍼셉트론이 처음이다!"라고 말할 수 있을 것입니다. 많은 사람들이 "인공지능 = 신경망"이라고 생각하는 분들이 많은데 그 만큼 인간이 예측하기 힘든 부분을 신경망이 보여주기 때문에 인공지능이란 컴퓨터가 하는 행위(또는 생각)를 인간이 알아차리지 못하는 것으로 해석하는 분들이 많습니다. 바로 그 신경망의 시작이 퍼셉트론입니다. 신경망이 뭔지도 모르는데 퍼셉트론은 뭐지? 왠지 어려워 보이는데? 라고 생각하는 분들이 있을 수 있습니다. 컴퓨터를 아예 모르고, 컴맹이신 분은 쉬운 설명을 해도 이해가 안 될 수 있습..