티스토리 뷰

Hobby/Book

[Book] 제대로 배우는 수학적 최적화

생각많은 소심남 2021. 10. 24. 17:33

(해당 포스트에서 소개하고 있는 "제대로 배우는 수학적 최적화" 책은 한빛미디어로부터 제공받았음을 알려드립니다.)

 

제대로 배우는 수학적 최적화

국내 유일의 수학적 최적화 기본 지식을 안내하는 입문서

hanbit.co.kr

 아마 중학교 때부터 사람들이 방정식이라는 것을 접하고, 수학이라는 게 참 어려운 것이 답, 혹은 해를 찾는 것이라는 것을 깨닫는다. 물론 이차방정식, 삼차방정식은 해를 풀 수 있는 기법들이 제공되어 쉽게 풀 수 있다고는 하지만, 이런 식들을 다른 식들과 연계되면 그 해를 구하는 과정이 조금 더 복잡해진다. 재미있는 것은 대학교를 졸업하고, 취업을 해도 이 해를 구하는 과정은 계속된다는 것이다. 오히려 학생때 접했던 것처럼 명확한 수학 공식이 아니라, 글로 표현된 현상을 이해하고, 이에 대한 최적점을 찾는 것이다. 보통 이런 과정을 Optimization, 최적화라고 표현하는 것 같다.

 인공지능 영역에서도 이 최적화과정이 필요하다. 신경망을 학습시킬 때도 예측값과 실제값간의 오차를 줄이기 위한 최적의 해를 찾아야 하고, 강화학습을 적용해서 길을 찾는 에이전트를 학습시킬때도, 각 상태가 제공하는 정보를 조합하여 최적의 경로, 혹은 정책을 찾는 일을 해야 한다. 물론 현재는 이런 최적화를 자동으로 해주는 도구들도 많이 나와있기 때문에, 예전처럼 현상을 수식으로 모델링하고, 손으로 직접 풀어야하는 수고로움은 조금 덜어졌지만, 그래도 단순히 도구를 쓰는 것에서 넘어서, 원론적으로 최적화에 대한 이해를 하려면, 그런 수고로움도 어느정도 감내해야 하지 않을까 싶다.

제대로 배우는 수학적 최적화

이번에 소개할 책은 전형적인 "수학"책이다. 아마 고등학교때 접했던 "수학의 정석"이나, 혹시 대학교에서 수학 관련 수업을 듣고 오래 지났다면, 이 책이 익숙해지기 전까지는 조금 시간이 필요할 것이다. 여기서 전형적인 "수학"책이라고 한 것은 책안에 담고 있는 내용들이 실무에서 바로 적용할 수 있을 법한 어떤 실용적인 기법들을 담고 있는 것이 아니라, 수많은 정의와 정리, 증명, 그리고 예시들이 담겨져 있다는 것이다. (사실 책 소개 홈페이지에서 책의 난이도를 초중급으로 표기했는데, 개인적으로는 이 책에서 다루고 있는 내용은 적어도 중고급의 수준은 아닌가 싶다.)

나는 개인적인 필요성에 의해서 이 책을 선택했다. 사실 하고 있는 일이기도 하지만, 주어진 데이터들이 있을때, 이를 어떻게 하면 선형 방정식으로 잘 모델링하고, 이에 대한 최적화를 수행하는 것이 필요하다. 강화학습에서도 우리가 모르는 환경에 대해서 잘 모델링하고, 이 모델에 대한 해를 찾아야 최적제어를 할 수 있는데, 그런 과정이 너무 어렵다. 특히 나는 수학 전공도 아니었기 때문에, 단순히 해석학에서 다루는 수준의 내용만 알고 있었던 터라, 기본적인 최적화 이론에 대한 복습부터 예시에 적용해볼 수 있는 이론들에 대해서 살펴볼 필요가 있었다.

이 책은 전체적으로 다음과 같이 크게 4가지 영역으로 나눠서 책의 내용을 설명하고 있다.

  • 수학적 최적화 입문
  • 선형 계획 (Linear Programming)
  • 비선형 계획 (Non-Linear Programming)
  • 정수 계획과 조합 최적법 (Integer Programming & Combinational Optimization)

보통 수학적 최적화이라고 하면 언급되는 연속 최적화 문제와 조합 최적화 문제에 대한 내용이 담겨져 있으며, 각 주제별로 배우고 싶은 독자도 입문 파트에 소개되어 있는 패스대로 책을 살펴보면 전반적인 최적화 내용을 살펴볼 수 있다. 이 책이 좋은 점은 정의와 정리의 내용을 뒷바침할 수 있는 다양한 예시들이 제공되는 점이고, 각 장별 마지막에 제공되는 연습문제에도 해설이 달려있어, 내용 복습에 도움이 될 수 있다는 것이다. 특히 비교적 최근에 많이 다뤄지는 조합최적법에서는 아마 알고리즘에 대해서 공부한 사람이라면 한번쯤 들어봤을 법한 동적 계획법이나 외판원 문제에 대한 수학적 해석법이 담겨있어서, 단순히 코드로 문제 해결을 구현하기 보다는 문제에 대한 원론적인 이해를 해보려는 사람한테는 지식을 넓게 확장시킬 수 있지 않을까 생각된다.

책의 원서가 일본어로 되어있다보니, 책에서 번역된 용어들이 한문에서 읽어온 것처럼 부자연스러운 부분은 살짝 있다. 서두에서도 언급했다시피 나는 최적화 수업을 들어본 적이 없기 때문에 바르게 쓰이는 용어에 대해서는 잘 알지 못하나 duality같은 용어를 쌍대로 표현하고, 어떤 용어는 영어 그대로 풀어쓴 부분도 있어서 좀 어색한 느낌이 있었다. 내용과는 별개인 것이긴 하지만...

사실 최적화 이론에 대해서 공개된 강의나 책이 많지 않기 때문에 일반적인 사람이 단순히 호기심만 가지고 접근하기에는 너무 심화된 주제이긴 하다. 나같은 경우에도 찾다찾다 Stanford에서 공개한 Convex Optimization 강의(Boyd 교수가 진행한 내용인데, 무료로 수강할 수 있다.)를 통해서 대략적인 내용만 파악하는 정도였었고, 내용 자체가 너무 어려웠다.

 

Convex Optimization

This course concentrates on recognizing and solving convex optimization problems that arise in applications. The syllabus includes: convex sets, functions, and optimization problems; basics of convex analysis; least-squares, linear and quadratic programs,

www.edx.org

그래도 어느 정도 입문부터 최적화에 활용할 수 있는 알고리즘이나 도구, 예시에 대한 소개가 곁들여진 책이 나와서 옆에 두고 볼 만한 책이라 생각한다. 뭔가 실무에 바로 적용할 수 있는 마법과 같은 책이 아니지만, 책에서 소개된 이론에 대한 명확한 이해가 이뤄진다면, 최적화가 필요한 다른 분야에도 쉽게 적용할 수 있지 않을까 싶다.

댓글