개발/인공지능
-
Q-Network개발/인공지능 2018. 9. 12. 22:10
Q-Network 앞선 포스트에서 다룬 Q-Learning은 초기 학습 데이터 없이 주변을 탐사해가며 보상값을 최대화 하는 방향으로 환경 데이터의 파라미터의 값을 지속적으로 업데이트 하는 알고리즘이다. 그런데 만약 4x4처럼 작고 단순한 환경이 아니라 5000x5000이고 각 환경별로 선택 할 수 있는 경우의 수가 수십가지가 된다면 기존 알고리즘으로는 시간도 오래 걸릴 뿐만 아니라 모든 환경 데이터 값을 관리하는 것도 불가능하다. 이 문제는 Linear/Logical Regression에서도 겪어보았다. 학습에 사용되는 이미지의 크기가 커질수록 Feature의 값이 많아지게돼 기존의 방식 대로는 학습이 불가능했었다. 당시엔 이 문제를 해결하기 위해 Feature단위로 값을 분석하지 않고 인간의 뇌 구조를..
-
Q-Learning in Non-Deterministic World개발/인공지능 2018. 8. 19. 13:11
그림 1. Non Deterministic은 한가지 행동이 여러가지 결과를 만들 수 있는 환경을 의미한다. 그림1에서 빨간선은 Agent가 이동하기로 의도한 방향이고 파란선은 에이전트가 실제로 이동한 방향이다. Deterministic한 상황에서는 에이전트가 의도한 대로 항상 오른쪽으로만 이동한다. 그런데 그림 1과 같은 상황에서는 에이전트가 그림처럼 오른쪽으로도 이동할 수도 있고 위로도 이동할 수도 있다. 이처럼 한가지의 행동(Action)이 여러가지 결과를 내는 환경을 Non-Deterministic이라 부른다. 앞선 포스트에서 설명한 Q-Learning은 예전에 알고리즘 시간에 배웠던 Dynamic Programming(이하 DP)과 여러모로 유사한데 DP는 에이전트가 취한 행동이 항상 고정된 결과..
-
Q-Learning개발/인공지능 2018. 8. 19. 09:50
강화학습은 주변의 상태를 지속적으로 탐사해가며 미래에 주어지는 '보상' 값을 활용해 최적의 알고리즘을 찾는 학습법이다. 초기 학습데이터가 필요한 딥러닝과는 달리 초기의 학습데이터가 필요 없으며(물론 학습 데이터를 활용해서 성능을 높이기도 한다) 대신 어떤 조건에서 보상을 줄 것인지에 대한 정책과 탐사할 환경이 필요한 알고리즘이다. 국내에선 이세돌과 커제를 무참히 무찌른 알파고의 학습 알고리즘으로 알려져있다. Q-Learning은 대표적인 강화 학습 알고리즘으로 '특정 상태에서 어떤 결정을 내리는 것이 미래 보상을 가장 높여줄 것'인지에 대한 정책 데이터를 지속적으로 업데이트 하는 알고리즘이다. 강화학습을 배울 때 가장 먼저 접하는 알고리즘이며 수학 수식들이 난무해 이해하고 싶지 않고 할 수도 없을 것 같..
-
파이썬으로 AI 개발할 때 유용한 패키지 모음개발/인공지능 2018. 8. 7. 22:01
파이썬으로 인공지능을 개발할 때 자주 사용하는 패키지 세가지를 정리해봤다. 1. Pandas csv형태로 된 데이터 파일을 일어올 수 있는 라이브러리를 제공. 엑셀 파일을 함수 호출 한번으로 파이썬에서 사용할 수 있는 객체로 변환할 수 있다. 데이터 셋이 엑셀의 형태로 되어있는 경우가 많아 데이터 분석을 할 때 자주 사용하는 패키지중에 하나다. import pandas pd df_data = pd.read_excel('data.xlsx', encoding='utf-8') # 엑셀 데이터 읽어오기 리턴된 객체인 df_data에는 행을 추가하거나 삭제할 수 있는 기본적인 기능뿐만 아니라 새로운 속성을 추가하고 다른 데이터와 합칠 수 있는 기능도 제공한다. 꽤 많은 기능이 있으니 직접 사용하면서 익혀보는게 좋..
-
뉴럴네트워크(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는 제곱으로 본다고 합시다. 여러차례 최적화 작업을 거치면서 아래로 볼록한 함수가 나온다면 데이터의 흐름을 잘 따를 수 있을 것 같습니다. 실제로 그림으로 그려보봐도 그렇네요. 데이터 흐름을 더 잘 따라가는 것 같습니다. 실제로 계산..
-
숫자인식 코드 분석해보기개발/인공지능 2017. 8. 3. 20:49
지난 포스팅에서 인공지능 이론중 가장 간단한 Linear Regression과 Logistic Regression에 대해서 설명했습니다. 이번 포스팅에선 tensorflow 튜토리얼에 있는 숫자 인식 코드를 차근차근 분석해가며 어떻게 우리가 배운 이론이 접목되었는지 공부해보는 시간을 가지려고 합니다. 먼저 숫자 인식 코드는 여기를 공식 튜토리얼 페이지는 여기를 클릭하면 볼 수 있습니다. 튜토리얼 페이지를 클릭하시면 MNIST라는 단어를 보실 수 있을겁니다. 이건 컴퓨터 비전에 사용되는 데이터 셋을 말하는 용어니 너무 주의깊게 보시지 않아도 괜찮아요. 그냥 이런 이미지를 가지고 있다는 것만 기억하시면 됩니다! 위의 이미지들은 우리가 숫자를 직접 손으로 쓸 때의 이미지들입니다. 우리가 만든 숫자 인식 인공지..
-
Softmax와 Cross entropy개발/인공지능 2017. 8. 3. 20:36
학습시키는 데이터의 Feature가 3가지이고 이 데이터들을 총 3개의 분류로 나눈다고 해봅시다. 이때 우리는 하나의 feature에 대하여 총 3가지로 분류해줄 weight값이 필요합니다. 만약 데이터의 Feature들을 x1, x2, x3라고 표현하면 x1이 첫번째 분류, 두번째 분류 그리고 세번째 분류로 나눠 질 수 있도록 값을 조정하는 weight값이 필요하게됩니다. 그림으로 표현하면 더 알아보기 쉽습니다. x1, x2, x3의 집합을 X, Wi,j값의 집합을 W, bi의 집합을 B로 표현하면 위 식은 S = Wx + B로 표현 할 수 있겠네요. 그리고 이 값이 가장 큰 것으로 분류되게 됩니다. 하지만 학습을 하려면 내가 낸 결과물이 얼마나 비슷한지도 알아야합니다. 내가 고른 값이 옳다 하더라도 ..