요걸 Neural Network로 구현해볼까 하거든
그런데 이걸 분명히 배워서 개념은 이해되는데
피드백이 어떤과정으로 이루어지는지 어떻게 구현하면 좋을지
개념이 안잡혀 횽아들 좀 도와줘~
댓글 11
억!! 가슴 빵빵이다
억(211.45)2005-07-04 16:14
저건 거의 뽕일 가능성이 90% 이상..... -_-;
****(61.102)2005-07-04 16:41
뽕이라도 좋다 @.@
헉(218.237)2005-07-04 17:02
Neural Network -> 신경망을 말하는거냐? 일반적으로 신경망은 비추다. 어느정도 돌려서 훈련을 시켜야 하고, 게임용으로 신경망은 잘 않써. 차라리 A* 트리 알고리즘 변형을 찾아봐라. 그게 실제로도 많이 쓰인다.
두루마리(210.110)2005-07-04 17:10
일반적인 neural net 얘기라면, 우선 수많은 상황(input)에 대한 best solution이 next state(output)로 정의된 training set을 가지고 있어야 할 거구요... 그다음으로 이러한 best solution과 neural net에서 구해진 solution 사이의 차이(cost, error)를 잘 정의해줘야 하는데... 두 가지 다 어려운 문제-_-.
ㅎ(141.223)2005-07-04 17:21
저 여햏 뽕을 살짝 만저주면 신경이 곤두설꺼같어. 이히히
현쓰(218.238)2005-07-04 17:23
좀 feasible한 방법으로는 우선 reinforcement learning으로 구현할 수 있습니다. 내가 상대의 말을 땄을 때 그 말의 중요도에 따라 positive reinforcement를, 내 말을 잃었을 때 negative reinforcement를 주는 식으로 하는거죠. 다음으로 이런 discrete한 reinforcement를 받아서 연속된 값으로 출력을 주는 neural net을 따로 하나 정의하고, 이 neural net의 output을 error (maximum positive reinforcement - current reinforcement) 로 해서 훈련시키면 됩니다.
ㅎ(141.223)2005-07-04 17:27
두번째로 트럭 제어할때 주로 쓰는 방법인데... 우선 상대의 king을 따거나 내 king을 잃을 때까지 게임을 합니다. 매 state마다의 neuron들의 output을 다 기록해 두고요, 게임이 끝나면 게임 결과를 앞에서의 reinforcement와 마찬가지로 error로 정의해서, 그 error를 원래 state의 역순으로 backpropagation 하는 건데.. 말로는 설명하기 힘드네요
ㅎ(141.223)2005-07-04 17:31
initial -> NN of state 1 -> NN of state 2 -> NN of state 3 ...하는 식으로, state k-1에서의 output이 state k에서의 input이 되죠? 그럼 이 모든 state 전체를 하나의 거대한 neural net으로 볼 수 있죠... output은 마지막 state에서의 결과가 되구요... 이 하나의 거대한 neural net을 훈련시키는겁니다.
ㅎ(141.223)2005-07-04 17:33
로봇이나 기계제어 어플리케이션의 경우, 어느 방법이든 보통 10만번 정도의 iteration을 해야 하는데, 일단 이정도까지 훈련이 되고 나면 성능이 "상당히" 괜찮아집니다. 더구나 두 가지 구현방법 모두 online learning(그때그때 들어오는 input에 대한 학습)이 가능하기 때문에 이후의 성능 향상도 용이하구요... 그치만 체스게임은 기계제어보다 로직이 훨씬 복잡하니 수백만 번 정도 돌려야겠네요; hidden layer와 각 layer별 hidden node의 개수를 정하는 것도 어렵겠습니다.
억!! 가슴 빵빵이다
저건 거의 뽕일 가능성이 90% 이상..... -_-;
뽕이라도 좋다 @.@
Neural Network -> 신경망을 말하는거냐? 일반적으로 신경망은 비추다. 어느정도 돌려서 훈련을 시켜야 하고, 게임용으로 신경망은 잘 않써. 차라리 A* 트리 알고리즘 변형을 찾아봐라. 그게 실제로도 많이 쓰인다.
일반적인 neural net 얘기라면, 우선 수많은 상황(input)에 대한 best solution이 next state(output)로 정의된 training set을 가지고 있어야 할 거구요... 그다음으로 이러한 best solution과 neural net에서 구해진 solution 사이의 차이(cost, error)를 잘 정의해줘야 하는데... 두 가지 다 어려운 문제-_-.
저 여햏 뽕을 살짝 만저주면 신경이 곤두설꺼같어. 이히히
좀 feasible한 방법으로는 우선 reinforcement learning으로 구현할 수 있습니다. 내가 상대의 말을 땄을 때 그 말의 중요도에 따라 positive reinforcement를, 내 말을 잃었을 때 negative reinforcement를 주는 식으로 하는거죠. 다음으로 이런 discrete한 reinforcement를 받아서 연속된 값으로 출력을 주는 neural net을 따로 하나 정의하고, 이 neural net의 output을 error (maximum positive reinforcement - current reinforcement) 로 해서 훈련시키면 됩니다.
두번째로 트럭 제어할때 주로 쓰는 방법인데... 우선 상대의 king을 따거나 내 king을 잃을 때까지 게임을 합니다. 매 state마다의 neuron들의 output을 다 기록해 두고요, 게임이 끝나면 게임 결과를 앞에서의 reinforcement와 마찬가지로 error로 정의해서, 그 error를 원래 state의 역순으로 backpropagation 하는 건데.. 말로는 설명하기 힘드네요
initial -> NN of state 1 -> NN of state 2 -> NN of state 3 ...하는 식으로, state k-1에서의 output이 state k에서의 input이 되죠? 그럼 이 모든 state 전체를 하나의 거대한 neural net으로 볼 수 있죠... output은 마지막 state에서의 결과가 되구요... 이 하나의 거대한 neural net을 훈련시키는겁니다.
로봇이나 기계제어 어플리케이션의 경우, 어느 방법이든 보통 10만번 정도의 iteration을 해야 하는데, 일단 이정도까지 훈련이 되고 나면 성능이 "상당히" 괜찮아집니다. 더구나 두 가지 구현방법 모두 online learning(그때그때 들어오는 input에 대한 학습)이 가능하기 때문에 이후의 성능 향상도 용이하구요... 그치만 체스게임은 기계제어보다 로직이 훨씬 복잡하니 수백만 번 정도 돌려야겠네요; hidden layer와 각 layer별 hidden node의 개수를 정하는 것도 어렵겠습니다.
아직도 코딩까지 가는데는 멀지만 그래도 많은 도움이 됬어요 166횽 고마워요