인공지능
-
Q-Learning개발/인공지능 2018. 8. 19. 09:50
강화학습은 주변의 상태를 지속적으로 탐사해가며 미래에 주어지는 '보상' 값을 활용해 최적의 알고리즘을 찾는 학습법이다. 초기 학습데이터가 필요한 딥러닝과는 달리 초기의 학습데이터가 필요 없으며(물론 학습 데이터를 활용해서 성능을 높이기도 한다) 대신 어떤 조건에서 보상을 줄 것인지에 대한 정책과 탐사할 환경이 필요한 알고리즘이다. 국내에선 이세돌과 커제를 무참히 무찌른 알파고의 학습 알고리즘으로 알려져있다. Q-Learning은 대표적인 강화 학습 알고리즘으로 '특정 상태에서 어떤 결정을 내리는 것이 미래 보상을 가장 높여줄 것'인지에 대한 정책 데이터를 지속적으로 업데이트 하는 알고리즘이다. 강화학습을 배울 때 가장 먼저 접하는 알고리즘이며 수학 수식들이 난무해 이해하고 싶지 않고 할 수도 없을 것 같..
-
conda tensorflow 설치 및 jupyter notebook 연결개발/삽질 기록 2018. 8. 3. 23:20
Conda 환경에서 tensorflow를 설치하는 방법 0. Prerequsite - Anaconda를 설치한다. - GPU를 사용할 경우 tensorflow를 사용할 수 있도록 CUDA, cuDNN 라이브러리를 설치한다. 1. tensorflow 가상 환경 생성 tensorflow를 사용하는 가상 환경을 하나 생성한다. 별도로 설정하고 싶은 환경이 있으면 생략하고 아니면 만들자. kwony@kwony:~$ conda create -n tensorflow pip \ python={ python 버전 입력 ex) 2.7, 3.42. 가상환경 활성화 1에서 만들어둔 가상 환경을 활성화한다. activate 명령어가 안먹히는 경우는 anaconda의 바이너리가 export가 제대로 안된것이니 확인해보도록 하자..
-
뉴럴네트워크(Neural Network)개발/인공지능 2017. 8. 18. 20:45
숫자 인식 코드를 분석 할 때 이미지 사이즈의 크기는 28x28이라서 총 784개의 feature를 두어서 구할 수 있었습니다. 그런데 실제로 사용하는 이미지는 이것보다 훨씬 크기가 큽니다. 바탕화면 해상도는 1920x1020이고 여기에 색깔을 넣기 위해 3차원까지 넣어서 총 요소(Element)들의 개수는 5,875,200(1920*1020*3)개가 됩니다. 요소들의 개수만큼 feature로 놓고 학습을 시킨다면 매우 시간이 오래 걸리겠죠? 그래서 인공지능 과학자들은 다른 방법을 고안했습니다. 과학자들은 연구에서 어려움이 있을 때마다 주로 자연에서 해답을 얻곤 하는데요 인공지능 뇌과학자들은 인간의 뇌의 뉴런구조를 본따서 이 문제를 해결하기로 했습니다. 인간의 뇌가 생각하는 방식을 컴퓨터에 이식 할 수 ..
-
오버피팅(Overfitting)개발/인공지능 2017. 8. 10. 21:18
학습 능률을 높인다는 것은 비용함수(Cost function)의 값을 줄이는 것입니다. 하지만 학습에 사용하는 Feature(쎄타라고 생각하시면 됩니다)의 개수가 일정하면 Gradient Decent와 같은 최적화 작업을 통해 통해 최적의 해에 도달 했다고 해도 절대적인 비용은 어쩔 수가 없습니다. 최대한 학습 데이터를 따르는 직선을 만들었지만 그래도 비용은 어쩔수가 없네요. 그런데 우리가 직선이 아니라 볼록한 함수를 이용해서 학습한다면 어떨까요? 쎄타2를 추가하고 이때의 x는 제곱으로 본다고 합시다. 여러차례 최적화 작업을 거치면서 아래로 볼록한 함수가 나온다면 데이터의 흐름을 잘 따를 수 있을 것 같습니다. 실제로 그림으로 그려보봐도 그렇네요. 데이터 흐름을 더 잘 따라가는 것 같습니다. 실제로 계산..
-
Logistic Regression (로지스틱 회귀)개발/인공지능 2017. 7. 31. 21:49
앞선 포스팅에서 나이에 따른 연봉 변화로 선형 회귀를 설명했었습니다. 이번에는 예시를 조금 변형해서 연봉이 5000만원이 넘는지 안넘는지를 결정하는 함수를 생각해봅시다. 먼저 연봉이 5000만원을 넘지 않는 경우를 0, 넘는 경우를 1로 생각하고 그래프를 그려볼까요? y축의 값이 0과 1밖에 없으니 그래프가 상당히 단조로워졌네요. 아마 30-32 사이에서 연봉이 5000만원으로 변화하는 지점이 있는 것 같습니다. 이 정보를 토대로 선형회귀를 해보면 아래 그림처럼 추세선을 만들어 줄 수 있을 것 같습니다. 대략 추세선의 값이 0.5 정도가 넘으면 연봉이 5000만원이 넘는다고 짐작 할 수 있겠네요. 이렇게 하면 뭐 더이상 손댈 것도 없을것 같습니다. 그런데 새로운 학습 데이터가 추가됐다고 해봅시다. 요렇게..
-
Linear Regression (선형회귀)개발/인공지능 2017. 7. 28. 20:50
앞선 포스팅에서 우리는 인공지능이란 '대량의 데이터를 학습해 가장 그럴듯한 미래를 예측한다'고 정의했습니다. 그리고 여기서 우리 개발자가 할 일은 대량의 데이터를 훌륭하게 학습시키는 알고리즘을 만드는 일이라고 말씀드렸습니다. 이제 학습 알고리즘에 대해서 공부해봐야겠죠? 마음은 벌써 알파고에 쓰인 딥러닝을 짜보고 싶지만, 지금 당장은 해볼 순 없으니 가장 기초적인 학습법인 선형회귀(Linear Regression)부터 천천히 공부해봅시다. 우리에게 아래 표처럼 나이에 따른 연봉 데이터가 있다고 가정해봅시다 실제데이터는 아닙니다. 제가 가공한거에요 헤헤 언듯 데이터를 분석해보니 나이가 많을수록 연봉을 더 많이 받는것 같습니다. 한번 차트로 볼까요? 그래프 상으로 표현해보니 실제로도 그러하네요. 위 자료를 통..
-
tensorflow 설치하면서 인공지능을 정의해보자카테고리 없음 2017. 7. 20. 21:55
인공지능이 정확히 무엇인지 생각해보기에 앞서서 Ubuntu 터미널에 tensorflow 설치 명령어 하나만 실행해둡시다.(혹시 GPU를 사용하는 버전으로 설치하고 싶으신 분은 tensorflow 사이트에서 확인해보시고 설치하셔야 합니다!) sudo pip install --upgrade tensorflow 인터넷 사양에 따라서 20-30분 정도 걸립니다. 딱 인공지능에 대해서 정의 해보기 좋은 시간이네요. 그럼 시작해볼까요? 지금 우리에게 가장 익숙한 인공지능은 알파고입니다. 알파고는 엄청난 양의 기보를 학습한 후에 어떤 위치에 수를 놓으면 유리한지를 알게 됐습니다. 자 그렇다면 인공지능은 결국 대량의 데이터를 학습한 결과물 이라고 손쉽게 정의해볼 수 있을 것 같습니다. 그런데 대량의 데이터라면 어떤 단..
-
개발자는 이제 인공지능을 공부해야 합니다.카테고리 없음 2017. 7. 17. 23:13
2016년 3월 이세돌과 알파고의 대결이 시작되기 전까지만해도 알파고의 승리를 점치는 사람은 거의 없었습니다. 경우의 수가 제한된 장기나 체스에 비해 바둑은 수가 거의 무한에 가까워 현재 컴퓨팅 능력으로는 기계가 이 모든 경우의 수를 계산하기는 무리라는 것이 대부분 바둑계 전문가들의 생각이었지요. 하지만 모두의 예상을 뒤엎고 알파고는 10년간 세계를 평정했던 이세돌을 4:1로 제압합니다. 그리고 올해 한층 더 진화된 알파고는 현 인간계 바둑랭킹 1위 커제를 상대로 단 한판도 내주지 않고 우승합니다. 알파고의 기세를 보니 당분간(어쩌면 평생) 이 기계를 이길 수 있는 인간은 나오지 않을 것 같습니다. (알파고를 상대로 거둔 이세돌의 1승은 인류의 마지막 승리가 될 것이라고 합니다) 바둑 경기가 시작되기 전..