프로그래밍/AI 13

케라스를 사용한 인공신경망 소개

케라스를 사용한 인공신경망 소개 자연으로부터 영감을 받은 발명품들(새 -> 비행기, 산우엉 -> 벨크로)처럼 인공신경망도 뇌 구조로부터 영감을 받음 새를 보고 비행기를 만들었지만, 날개를 펄럭일 필요는 없는 것처럼 인공신 경망도 생물학적 뉴런에서 점점 멀어지고 있다. 10장에서는 인공 신경망의 초창기 구조, 다중 퍼셉트론, 케라스를 소개 함 뉴런을 사용한 논리 연산 매컬러와 피츠가 생물학적 뉴런에서 착안한 매우 단순한 신경망 모델을 제안함 (MCP) McCulloch-Pitts 모델에서 사용한 가설은 다음과 같다. 1. 뉴런은 활성화되거나 혹은 활성화되지 않은 2 가지 상태이다. 즉, 뉴런의 활성화는 all-or-none 프로세스이다. 2. 어떤 뉴런을 흥분되게 (excited) 하려면 2개 이상의 고정..

프로그래밍/AI 2021.02.02

Bias and Vairance

Bias and Vairance 고양이와 개사진을 보여주면서 분류하는 문제라면, 사람이 풀경우 거의 틀리지 않을것입니다. 이런 문제를 AI가 풀었다고 가정할 때, 각 케이스별로, 현재 AI가 갖고있는 편향과 편차에 대한 문제를 진단할 수 있습니다. - 훈련용 데이터 오차율 개발용 데이터 오차율 결과 Case 1(Error Percentage) 1% 11% High Variance Case 2(Error Percentage) 15% 16% High Bias Case 3(Error Percentage) 15% 30% High Bias & High Variance Case 4(Error Percentage) 0.5% 1% Low Bias & Low Variance 만약, 문제가 복잡해지고, 맞추기 어려워 질 ..

프로그래밍/AI 2019.05.05

Double-Dueling-dqn 분석

Double-Dueling-dqn 분석 핵심 3가지 Conv Network 사람이 화면을 보고 플레이 하는것처럼, 합성곱 신경망을 통해 학습 Experience Replay 과거 경험했던 히스토리를 기반으로, 일정 주기마다 학습한다. Correlation 현상 완화 Sperate network Q Target을 따로 두어, 일정 주기마다 Main-Q Network를 업데이트한다. Atari이후 DQN 을 개선하기 위한여러가지 방법들이 나왔으며, 그중 하나는 Dueling이다. Dueling Q-Table의 Q(가치)값을 아래처럼 2개로 나눌 수 있다. 어떤 행동을 하지 않아도, 그 상태에 자체의 가치 해당 State에서 행동을 함으로 서 얻는 가치 self.streamAC,self.streamVC = t..

프로그래밍/AI 2019.05.05

Ubuntu Tensorflow-gpu 설치

Tensorflow-gpu 설치 NVIDIA Cuda, Tensorflow의 버전에 따라 호환 이슈가 생길 수 있습니다. 그러므로, tensorflow-gpu 설치 가이드에 명시한 버전들로 Cuda를 설치하는것을 권장합니다. 세팅한 장비는 XPS 랩탑에서 설치했으며 OS, GPU는 다음과 같습니다. OS : ubnutu 18.04 GPU : NVIDIA 960M Install CUDA with apt Ubuntu를 사용하시는 분들이라면, tensorflow gpu install guide에서 "Install CUDA with apt" 섹션을 참고해서 설치하시는게 가장 빠릅니다. 가이드를 따라가면서, 문제가 생기는 부분들은 구글링을 통해서 고치실수 있을겁니다. 트러블 슈팅 링크 아래 링크는 설치하면서 li..

프로그래밍/AI 2019.05.05

Vanilla-Policy 코드 분석

Vanilla-Policy-Cart-Pole 플레이한 history 리스트를 가지고 역순으로 순회하면서 discount factor를 적용하는 부분이 재미있었습니다. def discount_rewards(r): """ take 1D float array of rewards and compute discounted reward """ discounted_r = np.zeros_like(r) running_add = 0 for t in reversed(xrange(0, r.size)): running_add = running_add * gamma + r[t] discounted_r[t] = running_add return discounted_r python에 익숙하지 않아, 이 부분도 갸우뚱 했는데요. s..

프로그래밍/AI 2019.04.29

Q-Network 코드 분석

Q-Network 분석 Loss를 targetQ와 PredictQ의 차이값으로 설정하여 Weight 값들이 TargetQ에 형태로 접근하는 것이 인상적이었습니다. # loss = (targetQ - PredictQ)^2 loss = tf.reduce_sum(tf.square(nextQ - Qout)) np.identity(16)[s:s+1] 아래 코드에서 feed_dict에 input state를 넣어주는 코드가 어떤 의미인지, 왜 이렇게 작성했는지 이해하지 못했었습니다. # Feed Forward inputs1 = tf.placeholder(shape=[1, 16], dtype=tf.float32) W = tf.Variable(tf.random_uniform([16,4], 0, 0.01)) Qout =..

프로그래밍/AI 2019.04.28

Open AI Gym 시작하기

Open AI Gym 시작하기 Gym은 강화학습 알고리즘을 개발, 비교하기 위한 개발 도구이며, Tensorflow나 Theano 같은 수치 계산 라이브러리와도 호환됩니다. 설치 pip 명령어를 통해 gym을 설치합니다.(python 3.5+) pip install gym 환경들 아래는 최소 예제 코드입니다. 이 코드는 CarPole-v0 환경을 1000번의 스텝을 반복하며 렌더링합니다. 아래 코드를 실행하게 되면 고전적인 cart-pole problem 윈도우 창을 볼 수 있습니다. import gym env = gym.make('CartPole-v0') env.reset() for _ in range(1000): env.render() env.step(env.action_space.sample()) ..

프로그래밍/AI 2019.04.13