블럭 장난감 제조 공정 최적화 AI경진대회

강화학습에 대해 질문드립니다...!

2020.06.20 22:43 7,954 Views

안녕하세요.

우선 매번 좋은 학습의 기회를 열어주시는 데이콘, 그리고 주최측 분들께 무한한 감사의 말씀 드립니다.

저는 운이 좋게도 현재 리더보드 1위에 랭크되어 있는데요,

지금 저 점수는 Event 결정에 유전알고리즘(baseline을 조금 변형했습니다)을 사용하고

MOL 값은 제 나름대로 만든 최적화 알고리즘을 적용해서 얻어낸 결과입니다.

슬프게도 MOL값 결정에 학습 없이 최적화만 한 경우엔 감점이 있을 것이라고 하네요ㅠ

리더보드에서 저는 그냥 허수라고 생각하셔도 될 것 같습니다...!


사실 저는 이제 막 딥러닝을 입문해서 공부하고 있는 학생이고,

이번 기회에 강화학습을 개념적 수준에서 가볍게 접해보았습니다. (굉장히 어렵더군요...^^)

그러다 문득, 과연 이번 대회의 TASK - 특히 MOL input값을 결정하는 것에서

강화학습이 최적화를 outperform 할 수 있는지 의문이 들었습니다.


제가 MOL input 값을 최적화 할 때 꽤나 여러가지 복잡한 상황들(예를 들면 특정 시각의 input의 output이 언제인지, 각 item별 input이 available한 시간이 언제인지 등)을 고려해서 모델링을 했는데

강화학습 Environment에 이런 상황들을 구현하는 게 가능한지 궁금하고,

또 실제로 Environment가 그러한 복잡성을 가지게 되었을 때는 결국 최적화와 다름없는 결과가 나오는 게 아닌가 의문이 듭니다.


그리고 강화학습 모델이 좋은 결과를 내었다 하더라도,

이게 주어진 Environment(order)가 바뀌었을 때에도 마찬가지로 좋은 결과를 보장하는지가 궁금합니다.


마지막으로 Reward 함수(score 계산 식)가 바뀌게 되면 처음부터 다시 fit 과정을 거쳐야 한다는 점에서

오히려 모델의 재사용성이 떨어지는 게 아닌가.. 하는 의문도 듭니다.


제가 강화학습을 잘 몰라서 이런 의문점이 가득한데,

여러분의 의견과 가르침을 기다리겠습니다!

로그인이 필요합니다
0 / 1000
나단단단단단단단단단단단단단단단단단단단
2020.06.20 23:09

저도 부족하지만 의견을 조금 적어보겠습니다.

제 생각에는 최근 강화학습이라고 불리는 Deep RL 또한 딥러닝의 일종입니다. 이 말은 데이터가 아주 많이 필요하다는 뜻입니다. 이 데이터를 제너레이팅 하는것은 환경의 역할이겠죠. 단적인 예로 최근 OpenAI의 Hide&Seek같은 경우 억단위의 스탭으로 실험을 진행했죠. 에이전트가 env를 이해하기 위해선 환경에 대한 정보를 제너레이팅하는것이 필요합니다. 

나단단단단단단단단단단단단단단단단단단단
2020.06.21 00:16

하지만 이 대회의 문제는 상당히 정적입니다. env를 만들 순 있지만 고정된 상황이 진행되는것이고, state라고 부를만한것도 뭐 굳이 분류하자면 수요가 있겠지만 그마저도 고정이 되어있죠. 저도 이런 이유로 고민을 많이 했었습니다. 제가 만든 베이스라인에서는 현재까지의 추정 BLK  생산량을 state로 사용하긴 했습니다. 한마디로 제가 생각한것은 에이전트가 문제 자체에 대한 이해를 하기엔 주어진것이 조금 부족하다는 것입니다.

최상혁
2020.06.20 23:16

오 그 부분은 올려주신 코드에서 저도 확인했습니다. 추정 생산량이라 어떻게 보면 공정 조건을 정확하게 반영하지 못할 것 같다고 생각했습니다. 저는 그런 점에서 state에 필요한 정보를 반영하기가 어렵다는 생각이 듭니다.

나단단단단단단단단단단단단단단단단단단단
2020.06.20 23:07

1. env에 복잡한 상황을 구현하는게 가능한가?
저는 구현이 가능하다고 생각합니다. 하지만 env가 복잡해질수록 에이전트가 수렴한다는 보장은 줄어들것 같습니다.

나단단단단단단단단단단단단단단단단단단단
2020.06.20 23:08

2. 최적화와 다름없는 결과가 나오는가?
이부분은 좀 더 비관적인것 같습니다. 아무래도 RL이 탐색을 잘한다고 보긴 어렵기때문에 의도를 가진 탐색이 도와주지 않는다면 오히려 더 부족할것 같습니다.

최상혁
2020.06.20 23:17

앗 제가 이 질문에서 여쭤보는 것은 RL이 '아무리 잘해도' 최적화와 거의 비슷한 결과를 가져다주지 않을까 하는 것이었습니다.
RL에 주어지는 정보가 많아질수록 RL이 취할 수 있는 action의 방향이 제한되는 게 아닌가 하고 생각했습니다. 혹시 이 부분에 대해선 어떻게 생각하시나요?

나단단단단단단단단단단단단단단단단단단단
2020.06.20 23:28

RL에 주어지는 정보가 많아질수록 RL이 취할 수 있는 action의 방향이 제한되는 게 아닌가 하고 생각했습니다.
이 문장이 잘 이해가 안되는데 어떤 상황인지 풀어서 말씀해주실수 있으실까요?

최상혁
2020.06.20 23:44

state가 주어지지 않으면 완전 random한 action을 취하게 되는 것으로 아는데,
최적화 알고리즘을 구현할 때 사용한 정보들을 RL 모델에 투입할수록 결국 RL이 최적화처럼 행동하도록 유도되는 게 아닌가 하는 말이었습니다.
이게 사실 제가 만든 최적화 알고리즘을 어떻게 하면 RL로 구현할 수 있을까 고민하던 중에 든 의문인데요, 제가 최적화 과정에서 활용한 정보들을 RL 모델에 state로 제공하면 결국 RL이 (잘해봤자) 제가 만든 알고리즘처럼 행동하게 될 것 같다는 생각이 들어서 그랬습니다... 

최상혁
2020.06.20 23:44

사실 이렇게 생각하면 RL은 엄청 복잡한 Env(주식시장이나 바둑)가 아니고서는 human-level performance를 능가할 수 없는 것 같기도 합니다.

나단단단단단단단단단단단단단단단단단단단
2020.06.20 23:52

아 한마디로 다양성이 없는 state를 넣으면 맹목적으로 reward만을 위한 학습이 되지 않느냐 이 말씀이신것 같군요... 
그건 맞는것 같습니다 하지만... 제가 위에서 말한 state에 추정값을 넣은 이유는 그 값이 정확하든 아니든 그 상태를 추정할 수 있기 때문이였습니다. 입력 자체가 다양하지 않을 수 밖에 없는 지금 상황에선 어쩔수 없다고 생각됩니다.

나단단단단단단단단단단단단단단단단단단단
2020.06.21 00:18

제가 느끼기에 중요한것은 현재 상태를 다른 상태와 구별해서 잘 표현할 수 있는가? 가 중요한게 아닌가 싶습니다. 정확한 정보가 의미가 있을때는... 좀 더 다양한 수요가 들어오면서 그 수요끼리의 구분이 명확하게 되기 위해서는 그런 정확함 또한 필요할것이라 생각합니다.

최상혁
2020.06.20 23:52

음... 맞습니다! 그런 정보를 찾아내는 건 개발자의 역량이겠지요.
답변 감사드립니다 :D 앞으로 공부 열심히 해야겠네요~ 편안한 밤 되세요!

나단단단단단단단단단단단단단단단단단단단
2020.06.21 00:05

저도 생각을 정리할 수 있는 좋은 기회였습니다. 감사합니다.

나단단단단단단단단단단단단단단단단단단단
2020.06.20 23:07

3. 수요가 바뀌었을때도 좋은 결과를 보장 할 수 있는가?
이 부분은 반대로 긍정적일것 같습니다. 하지만 이대로가 아니라 수요가 예를들어 1000가지정도 주어졌다고 하면 그 1000가지를 골고루 잘 수행할 수 있는 에이전트를 만드는것은 다른 방법들에 비해 수월할것이라고 생각됩니다. 그 이후에 들어오는 1001번째 방법에 대해선 학습 없이도 수행할 수 있겠죠. 오히려 다른 방법(유전/최적화)들에 비해서 긍정적이지 않을까 싶습니다. 

최상혁
2020.06.20 23:18

음... 그런 의미에서 데이터가 많이 필요한 것이군요!

나단단단단단단단단단단단단단단단단단단단
2020.06.20 23:07

수요가 바뀌면 reward가 바뀌는 문제는 적절한 reward 함수를 만들어서 이 수요에 대해 얼마나 잘하는지에 대한 비율로 표현되는 metric를 만들면 되지 않을까 싶습니다.

최상혁
2020.06.20 23:18

의견 정말 감사합니다!!