2021.02.22

어렵지만 도전할 가치 있는 '강화학습 알고리즘' 직접 실험하기

Isaac Sacolick | InfoWorld
1990년대 대학원에 다닐 때, 필자가 가장 좋아하는 수업은 신경망이었다. 그 당시에는 텐서플로우(TensorFlow)나 파이토치(PyTorch), 케라스(Keras)가 존재하지 않았으므로, 교재의 공식대로 뉴런과 신경망, 학습 알고리즘을 직접 프로그래밍했다. 클라우드 컴퓨팅도 이용할 수 없었으므로 종종 밤을 새가며 순차적 실험을 코딩했다. 머신러닝 개념 증명을 수행하거나 엔드투엔드 MLOps(Machine Learning Operations) 수명 주기를 관리할 수 있는 알터릭스(Alteryx) 또는 데이터이쿠(Dataiku), 세이지메이커(SageMaker), SAS 같은 플랫폼도 없었다. 

필자는 강화학습 알고리즘에 가장 관심이 많았는데, 역 진자(Inverted Pendulum)을 안정화하기 위해 수백 개의 보상 함수를 작성했던 것을 기억한다. 그렇지만 한 번도 제대로 작동한 적이 없었고, 알고리즘을 잘못 코딩했는지, 덜 최적화된 보상 함수를 선택했는지, 불완전한 학습 매개 변수를 선택했는지 확인할 수도 없었다. 오늘은 역 진자 문제에 적용된 강화학습의 예와 구축 방법을 알아보자. 
 

강화학습이란?

강화학습은 교육 알고리즘이다. 객체는 현재 상태와 수행할 수 있는 행동이 있는 환경에서 작동한다. 이 경우, 객체는 직선으로 왼쪽이나 오른쪽으로 이동할 수 있는 카트 위에 놓인 역 진자다. 진자의 위치와 속도, 진자를 실은 카트는 상태를 나타낸다. 카트는 진자의 균형을 맞추기 위해 왼쪽 또는 오른쪽의 한 차원에서만 움직일 수 있다. 

규칙을 많이 만들어 카트의 행동을 프로그래밍하는 방법 대신, 카트에는 행동에 따라 결과를 점수화하는 보상 함수가 제공된다. 카트가 움직이면 보상 함수가 점수를 계산하고, 진자가 똑바로 세워지면 점수가 올라간다. 강화학습 알고리즘은 보상 함수를 사용해 함수의 점수를 기반으로 신경망을 조정한다. 

진자가 계속 떨어지기 때문에 초기 시도는 실패할 것이다. 그러나 충분한 시도와 잘 선택된 보상 기능, 최적으로 선택된 튜닝 매개 변수를 통해 알고리즘은 카트를 제어하고 진자의 균형을 맞추기 위한 올바른 동작을 학습한다. 

강화학습의 기본 사항에 대해 자세히 안내하는 기사가 많다. 강화학습의 개요를 읽거나 ‘기본’을 배울 수 있다. 또는 기본 수학과 알고리즘이나 연구 논문을 살펴보거나 실제 응용사례를 발견할 수도 있다. 

자세한 내용이나 실험을 하려면 프로그래밍 언어와 툴을 선택하고 클라우드 환경을 구성해야 한다. 솔직히 쉽지 않은 작업이므로 너무 깊게 관여하지 않고 배울 기회를 찾아보았다. 
 

1. AWS 딥레이서로 일과 여가를 결합하기

AWS는 2018년 11월 ‘머신러닝을 시작하는 가장 빠른 방법’으로 딥레이서(DeepRacer)를 출시했다. 2020년 12월에는 AWS 딥레이스 리그에 만 명 이상의 경쟁자가 모여 만 달러의 AWS 프로모션 크레딧이 포함된 최종 수상을 놓고 우승을 겨뤘다.  

딥레이서는 훌륭한 학습 도구이므로 경쟁에 놀라 떠나지 않길 바란다. 목표는 레이서가 선택한 경주장을 자율적으로 탐색하도록 훈련시키는 것이다.

딥레이서에 가입하면 트랙을 선택하고, 보상 함수를 코딩하며, 매개 변수를 조정할 수 있는 시뮬레이터를 이용할 수 있다. 기본 보상 함수로는 매개 변수를 조정해 레이서 훈련을 시작하고 성능을 평가할 수 있다. 여기에서부터 모델을 개선하고 알고리즘을 조정하기 위한 경주가 시작된다. 

간단한 타임 트라이얼부터 일대일 경주까지 20개 이상의 트랙 중에서 선택할 수 있다. 또한 물리적 딥레이서를 구입해 알고리즘을 로드하고 트랙을 설계해 경쟁력 있는 레이스를 펼칠 수 있다. 

필자의 경우, 제공된 보상 함수를 개선하는 방법을 찾는 데 오래 걸리지는 않았다. 기본 함수는 딥레이서가 트랙 중앙에서 얼마나 멀리 있는지 점수를 매기며, 레이서가 중앙선에 있을 때 가장 높은 점수를 받는다. 레이서의 조향 각도를 고려해 중앙선을 향할 때 더 높은 보상을 주도록 알고리즘을 개선했다. 

두 번째 모델과 10분간의 훈련만으로 딥레이서가 트랙의 26%를 돌았다는 사실에 기분이 꽤 좋았다. 물론, 장애물과 다른 레이서들을 고려하면 필자의 단순한 모델은 거의 작동을 하지 못했다. 딥레이서 성능을 스스로 개선하거나, 다른 사람의 코드 라이브러리레이싱 경험에서 배울 수도 있다. 
 

2. 최근 업적에서 영감 받기

비즈니스, 학계, 정부 조직이 강화학습을 실행하고 성공하는 실제 사례를 찾는 것은 어렵지 않다. 다음의 최근 헤드라인을 예로 들 수 있다:

• 상대편끼리 번갈아가며 얼음을 가로질러 스톤을 밀어 표적에 올려 점수를 올리는 경기를 수행하는 컬링 로봇. 로봇이 전략, 컴퓨터 비전, 운동 기술을 혼용해 한국의 유명 컬링 팀과 경쟁할 수도 있다.
• 빙엄턴 대학 연구진은 첨단 계통형성(grid-forming) 광전지 인버터 제어 기술에 강화학습을 적용하고 있다. 전력망에서 더 많은 양의 태양열 전력을 안정적으로 지원하는 방법을 개발하는 것이 목표다. 
• ‘강화학습은 최초의 지능 계산 이론’에 대해 AI 학계 전문가에게 직접 배워보자. 2020년에 발표된 ‘최고의 머신러닝 백서’를 참고할 수도 있다.
• 미 육군은 강화학습을 사용해 서로 다른 전투 지역에 있는 차량들의 협력을 꾀하고 있다. 
• 식료품점 추천 엔진은 강화학습을 사용하는 개인화 및 추천 엔진인 마이크로소프트 마이크로소프트 퍼스널라이저(Microsoft Personalizer)의 사용례 중 하나다. 

AI와 강화학습 관련 뉴스를 추적할 수 있는 좋은 사이트가 많다. AI 트렌드AI 뉴스, AI 비즈니스, MIT 뉴스의 AI 페이지, 사이언스데일리의 AI 페이지, 버클리 AI 리서치 블로그 등을 추천한다. 
 

3. 코드 예제로 실험하기

강화학습이라는 여정을 시작하기 전에 코딩 예제나 책을 확인하는 것이 좋으며, 특히 익숙한 문제에 적용할 때는 더욱 그렇다. 다음 몇 가지를 검토해보자.

• 강화학습은 루빅 큐브를 해결하고, 딥 Q-러닝을 사용해 아타리(Atari) 사의 벽돌깨기(Breakout) 게임을 수행하고 있다. 
• 강화학습 코드 저장소에는 ‘강화학습: 소개(Reinforcement Learning: An Introduction)’ 책의 예제가 있다. ‘파이썬을 사용한 실습 강화학습’과 텐서플로우 및 파이토치를 사용한 ‘심층 강화학습 과정’도 검토할 만한 저장소다.
어썸-rl(Awesome-rl), RL코드(RLCode), 케라스-rl(keras-rl), 유대시티RL위드텐서플로우(RL with TensorFlow)은 많은 이들의 추천을 받은 저장소다.

마지막으로 강화학습 전문지식을 개발할 준비가 됐다면 코세라(Coursera), 하버드, MIT, 스탠포드, 유대시티, 유데미 등의 교육 과정, 또는 무료 강좌도 고려해 보자.

예시를 통해 가르치고 배우는 것이 얼마나 어려운지 고려해보면, 강화학습과 다른 비지도(unsupervised) 학습 기술은 성장과 기회의 영역이라 할 수 있다. 지금 당장은 머신러닝 기술에 몇 단계 뒤처져 있더라도, 강화학습을 이해하는 것은 학계, 산업, 정부가 과학과 알고리즘에 집중하는 동안 전문성을 개발할 수 있는 기회가 될 것이다. editor@itworld.co.kr 


2021.02.22

어렵지만 도전할 가치 있는 '강화학습 알고리즘' 직접 실험하기

Isaac Sacolick | InfoWorld
1990년대 대학원에 다닐 때, 필자가 가장 좋아하는 수업은 신경망이었다. 그 당시에는 텐서플로우(TensorFlow)나 파이토치(PyTorch), 케라스(Keras)가 존재하지 않았으므로, 교재의 공식대로 뉴런과 신경망, 학습 알고리즘을 직접 프로그래밍했다. 클라우드 컴퓨팅도 이용할 수 없었으므로 종종 밤을 새가며 순차적 실험을 코딩했다. 머신러닝 개념 증명을 수행하거나 엔드투엔드 MLOps(Machine Learning Operations) 수명 주기를 관리할 수 있는 알터릭스(Alteryx) 또는 데이터이쿠(Dataiku), 세이지메이커(SageMaker), SAS 같은 플랫폼도 없었다. 

필자는 강화학습 알고리즘에 가장 관심이 많았는데, 역 진자(Inverted Pendulum)을 안정화하기 위해 수백 개의 보상 함수를 작성했던 것을 기억한다. 그렇지만 한 번도 제대로 작동한 적이 없었고, 알고리즘을 잘못 코딩했는지, 덜 최적화된 보상 함수를 선택했는지, 불완전한 학습 매개 변수를 선택했는지 확인할 수도 없었다. 오늘은 역 진자 문제에 적용된 강화학습의 예와 구축 방법을 알아보자. 
 

강화학습이란?

강화학습은 교육 알고리즘이다. 객체는 현재 상태와 수행할 수 있는 행동이 있는 환경에서 작동한다. 이 경우, 객체는 직선으로 왼쪽이나 오른쪽으로 이동할 수 있는 카트 위에 놓인 역 진자다. 진자의 위치와 속도, 진자를 실은 카트는 상태를 나타낸다. 카트는 진자의 균형을 맞추기 위해 왼쪽 또는 오른쪽의 한 차원에서만 움직일 수 있다. 

규칙을 많이 만들어 카트의 행동을 프로그래밍하는 방법 대신, 카트에는 행동에 따라 결과를 점수화하는 보상 함수가 제공된다. 카트가 움직이면 보상 함수가 점수를 계산하고, 진자가 똑바로 세워지면 점수가 올라간다. 강화학습 알고리즘은 보상 함수를 사용해 함수의 점수를 기반으로 신경망을 조정한다. 

진자가 계속 떨어지기 때문에 초기 시도는 실패할 것이다. 그러나 충분한 시도와 잘 선택된 보상 기능, 최적으로 선택된 튜닝 매개 변수를 통해 알고리즘은 카트를 제어하고 진자의 균형을 맞추기 위한 올바른 동작을 학습한다. 

강화학습의 기본 사항에 대해 자세히 안내하는 기사가 많다. 강화학습의 개요를 읽거나 ‘기본’을 배울 수 있다. 또는 기본 수학과 알고리즘이나 연구 논문을 살펴보거나 실제 응용사례를 발견할 수도 있다. 

자세한 내용이나 실험을 하려면 프로그래밍 언어와 툴을 선택하고 클라우드 환경을 구성해야 한다. 솔직히 쉽지 않은 작업이므로 너무 깊게 관여하지 않고 배울 기회를 찾아보았다. 
 

1. AWS 딥레이서로 일과 여가를 결합하기

AWS는 2018년 11월 ‘머신러닝을 시작하는 가장 빠른 방법’으로 딥레이서(DeepRacer)를 출시했다. 2020년 12월에는 AWS 딥레이스 리그에 만 명 이상의 경쟁자가 모여 만 달러의 AWS 프로모션 크레딧이 포함된 최종 수상을 놓고 우승을 겨뤘다.  

딥레이서는 훌륭한 학습 도구이므로 경쟁에 놀라 떠나지 않길 바란다. 목표는 레이서가 선택한 경주장을 자율적으로 탐색하도록 훈련시키는 것이다.

딥레이서에 가입하면 트랙을 선택하고, 보상 함수를 코딩하며, 매개 변수를 조정할 수 있는 시뮬레이터를 이용할 수 있다. 기본 보상 함수로는 매개 변수를 조정해 레이서 훈련을 시작하고 성능을 평가할 수 있다. 여기에서부터 모델을 개선하고 알고리즘을 조정하기 위한 경주가 시작된다. 

간단한 타임 트라이얼부터 일대일 경주까지 20개 이상의 트랙 중에서 선택할 수 있다. 또한 물리적 딥레이서를 구입해 알고리즘을 로드하고 트랙을 설계해 경쟁력 있는 레이스를 펼칠 수 있다. 

필자의 경우, 제공된 보상 함수를 개선하는 방법을 찾는 데 오래 걸리지는 않았다. 기본 함수는 딥레이서가 트랙 중앙에서 얼마나 멀리 있는지 점수를 매기며, 레이서가 중앙선에 있을 때 가장 높은 점수를 받는다. 레이서의 조향 각도를 고려해 중앙선을 향할 때 더 높은 보상을 주도록 알고리즘을 개선했다. 

두 번째 모델과 10분간의 훈련만으로 딥레이서가 트랙의 26%를 돌았다는 사실에 기분이 꽤 좋았다. 물론, 장애물과 다른 레이서들을 고려하면 필자의 단순한 모델은 거의 작동을 하지 못했다. 딥레이서 성능을 스스로 개선하거나, 다른 사람의 코드 라이브러리레이싱 경험에서 배울 수도 있다. 
 

2. 최근 업적에서 영감 받기

비즈니스, 학계, 정부 조직이 강화학습을 실행하고 성공하는 실제 사례를 찾는 것은 어렵지 않다. 다음의 최근 헤드라인을 예로 들 수 있다:

• 상대편끼리 번갈아가며 얼음을 가로질러 스톤을 밀어 표적에 올려 점수를 올리는 경기를 수행하는 컬링 로봇. 로봇이 전략, 컴퓨터 비전, 운동 기술을 혼용해 한국의 유명 컬링 팀과 경쟁할 수도 있다.
• 빙엄턴 대학 연구진은 첨단 계통형성(grid-forming) 광전지 인버터 제어 기술에 강화학습을 적용하고 있다. 전력망에서 더 많은 양의 태양열 전력을 안정적으로 지원하는 방법을 개발하는 것이 목표다. 
• ‘강화학습은 최초의 지능 계산 이론’에 대해 AI 학계 전문가에게 직접 배워보자. 2020년에 발표된 ‘최고의 머신러닝 백서’를 참고할 수도 있다.
• 미 육군은 강화학습을 사용해 서로 다른 전투 지역에 있는 차량들의 협력을 꾀하고 있다. 
• 식료품점 추천 엔진은 강화학습을 사용하는 개인화 및 추천 엔진인 마이크로소프트 마이크로소프트 퍼스널라이저(Microsoft Personalizer)의 사용례 중 하나다. 

AI와 강화학습 관련 뉴스를 추적할 수 있는 좋은 사이트가 많다. AI 트렌드AI 뉴스, AI 비즈니스, MIT 뉴스의 AI 페이지, 사이언스데일리의 AI 페이지, 버클리 AI 리서치 블로그 등을 추천한다. 
 

3. 코드 예제로 실험하기

강화학습이라는 여정을 시작하기 전에 코딩 예제나 책을 확인하는 것이 좋으며, 특히 익숙한 문제에 적용할 때는 더욱 그렇다. 다음 몇 가지를 검토해보자.

• 강화학습은 루빅 큐브를 해결하고, 딥 Q-러닝을 사용해 아타리(Atari) 사의 벽돌깨기(Breakout) 게임을 수행하고 있다. 
• 강화학습 코드 저장소에는 ‘강화학습: 소개(Reinforcement Learning: An Introduction)’ 책의 예제가 있다. ‘파이썬을 사용한 실습 강화학습’과 텐서플로우 및 파이토치를 사용한 ‘심층 강화학습 과정’도 검토할 만한 저장소다.
어썸-rl(Awesome-rl), RL코드(RLCode), 케라스-rl(keras-rl), 유대시티RL위드텐서플로우(RL with TensorFlow)은 많은 이들의 추천을 받은 저장소다.

마지막으로 강화학습 전문지식을 개발할 준비가 됐다면 코세라(Coursera), 하버드, MIT, 스탠포드, 유대시티, 유데미 등의 교육 과정, 또는 무료 강좌도 고려해 보자.

예시를 통해 가르치고 배우는 것이 얼마나 어려운지 고려해보면, 강화학습과 다른 비지도(unsupervised) 학습 기술은 성장과 기회의 영역이라 할 수 있다. 지금 당장은 머신러닝 기술에 몇 단계 뒤처져 있더라도, 강화학습을 이해하는 것은 학계, 산업, 정부가 과학과 알고리즘에 집중하는 동안 전문성을 개발할 수 있는 기회가 될 것이다. editor@itworld.co.kr 


X