게시물 목록

Friday, June 23, 2023

정보열역학(information thermodynamics) 공부의 계기

최근에 생각중인 주제는 여러 구성요소가 있는 시스템에서 협력 및 동기화라는 현상을 정보 교환이라는 관점에서 보는 것이다. 물리학에서의 정보라는 것은 일상에서의 정보와 상당부분 통하기는 한다. 그런데 정보가 많다 혹은 적다 라는 것이, 상황과 해석에 따라 일상에서의 의미와 같을 때도 있고 다를 때도 있다 보니 처음엔 상당히 헷갈릴 수도 있다.


통신이론에서 출발하여 전기전자공학에서 널리 언급되는 섀넌의 정보엔트로피가 물리학자들의 엔트로피와 기본적으로 동일한 양이라는 점은 널리 알려져 있는데, 정보열역학이라고 하는 분야는 에너지 교환뿐만 아니라 정보 교환(계의 구성요소가 서로의 상태를 탐지해서 피드백을 주는 것)까지 포함해서 열역학을 기술하고자 하면서 그 둘의 구체적 접점을 보다 비자명하게 탐색한다.


정보열역학 하면 주로 맥스웰의 악마, 질라르드 엔진(Szilard engine) 같은 아주 단순화된 모형계에 대한 연구를 떠올린다. 이것이 2000년대쯤부터는 Sagawa, Parrondo 등의 여러 파이오니어를 통해 연속적 동역학을 가진 시스템들에까지 확장되었고, 극히 최근에는 생체계에서의 정보처리 (정보교환이 있어야 생체 내 과정들이 정밀해짐. Leighton and Sivak 등) 혹은 아예 란다우어 원리를 필두로 한 미시적 계산장치들에 대한 이론적 분석 (Wolpert, Crutchfield 등) 등에도 적용되고 있다. 후자의 경우 나는 아날로그 딥러닝의 효율 분석 및 개선에도 적용될수 있을거라고 전망하고 있다.


내가 정보열역학에 관심이 생긴 것은 정보라는 것이 통계열역학 분야의 외곽에 약간 억지로(?) 들어와 있는 것이 아니라, 시스템을 두 하위 시스템으로 쪼개는 단순한 처리만으로도 매우 자연스럽게 정보의 개념을 고려하게 되므로 상당히 중심적인 양이라는 생각을 하게 되어서 그렇다. 즉, Szilard engine에서의 measurement and feedback을 통한 정보 처리 과정은 사실 아주 특별하고 새로운 것이 아니며, 상호작용하는 여러 구성요소를 가진 물리계라면 으레 존재하는 것이다.


각 하위 시스템에 대해 2법칙을 썼을 때, 전체 시스템에는 정보 개념이 없더라도 각 하위 시스템에 대한 2법칙에는 정보 개념이 들어가게 된다. 만약에 협력하는 여러 개체로 구성된 어떤 기계가 바깥에 유용한 일을 해 줄 때, 각 개체의 열효율을 2법칙에 부합하게 쓰면 그 효율에도 정보개념이 들어간다. 전체 효율과 하위시스템의 효율이 어떤 관계가 있는지, 정보교환이 클때 여러가지 이례적 현상들이 나타나지는 않을지 등을 연구하면 재미있을 듯하다. 이는 우리 연구실의 중심 토픽인 active matter의 집단현상에서도 중요할 수 있지 않을까 생각한다. Active matter가 일으키는 여러 재미있는 현상들의 가장 중심에는 결국 주변 환경에서 특정한 종류의 신호를 강화시키는 정류(rectification) 효과가 있다고 믿고 있는데, 이 정류라는 것이 다름아니라 measurement and feedback과 거의 동일한 것 같기 떄문이다.


일본 쪽 연구자 분들이 특히 잘하는 확률열역학 이론 분야에서, 정보개념까지 같이 생각하는 연구들이 속속 나오고 있는데 이들의 연구를 따라가 보면 좀더 우아하고 보편적으로 이론을 전개하는 방법을 배울 수 있지 않을까 한다. 7~8월에 일본출장이 예정돼 있는데 그 전에 여러가지 질문거리들을 꼭 준비해서 가야겠다.


Facebook에서 이 글 보기: 링크

Saturday, June 3, 2023

역전파(backpropagation)의 참된 중요성 이해하기: 자동미분과의 연장선에서

이제 와서 부끄러운 얘기일 수 있으나 그동안 머신러닝에서 gradient update에 사용되는 backpropagation에 대해, 그냥 gradient를 계산하기 위한 테크닉으로써 딥러닝이 현실적인 비용으로 작동할수 있게 하는 돌파구에 불과할(?) 뿐, 뉴럴넷의 작동 이유를 이론적으로 이해하는 데에는 별로 중요하지 않다고 생각해서 별로 신경을 안 썼었다.


그런데 얼마전에 물리 및 ai 기반 그래픽스 쪽에서 공부하는 분이 읽고 계신 Hamiltonian neural network 관련 논문을 함께 디스커션 할 기회가 있었는데, 얘기하다 보니 이게 절대 그렇지가 않은 듯... 뉴럴넷에서의 backprop뿐만 아니라 오히려 그것의 원관념(?)에 해당하는, 동역학을 가진 시스템의 최적화 등에서 많이 쓰는 자동미분(automatic differentiation)을 함께 보면 이쪽 패러다임이 왜 중요한 것인지, 왜 흥미로운 것인지 잘 이해하게 되는 듯하다.


여러 가지 함수 (그 각각의 미분을 symbolic하게 알고 있는) 각각을 노드(node)로 생각하면, 그것들을 graph로 연결시켜서 합성함수를 만들 수 있다. 이렇게 만든 함수도 그림으로 표현되어 있을 뿐, 결국 인풋과 아웃풋을 갖는 그냥 수학적인 함수일 것이다.


근데 이 함수를 수치적으로 미분을 한다고 하면, 이 함수에 두 개의 서로 아주 가까운 인풋을 넣고, 그 아웃풋을 비교해서 근사적으로 미분계수(도함수의 값)을 구해야 한다 (미분계수는 평균 기울기의 극한이니까). 이것은 번거로운 일이고, 인풋의 차이는 최대한 작아야 하는데 함수가가 커다랄수록 출력 함수값의 에러는 쌓일 테니, 에러가 잘 매니지돼서 원하는대로 잘 working할지 알기 어렵다. 그리고 각 인풋에 대해 이 도함수를 evaluate할 때 매번 새롭게 해야 한다.


근데 각 노드의 도함수를 symbolic하게 알고 있다면, 그걸 체인룰(합성함수의 미분)을 통해 조합해서 사칙연산만으로 도함수를 구할 수 있다. 이렇게 아무리 새롭게 graph로 연결을 지어서 만든 새로운 함수에 대해서도, 도함수와 그 값을 비교적 쉽게 얻을 수 있는 것이 바로 체인룰을 영리하게 사용한 자동미분이라고 이해해볼수 있다.


반면에 함수의 꼴조차도 아예 모를 경우에는, (ReLU나 Sigmoid 등의 꼴을 주로 갖는) perceptron을 일종의 '비선형의 최소 단위'로 간주하여 아주 많이 조합한 multi-layer perceptron으로 모형화해야 하며, 이것으로 임의의 함수를 shaping할 수 있다는 보편근사정리가 있다. 그리고 이게 바로 가장 간단한 뉴럴넷인 것이다.


그런 면에서 뉴럴넷의 역전파를, 위에서 말한 graph로 표현된 합성함수에 대해 사용하는 자동미분과 연장선상에서 이해하게 된다. 함수의 틀이 정해져 있느냐, 아니면 그조차도 몰라서 무작정 수많은 퍼셉트론의 조합으로 두었느냐만 다를 뿐이다. 수학적으로야 backprop이 자동미분의 리버스버전의 일종일 뿐이니까 더욱 명확한것 같고.


특히 physics-informed neural network (PINN) 를 보면 뉴럴넷 자체를 어떤 해밀토니안이나 액션 같은 함수 (및 범함수)의 proxy로 생각할때가 많은데, 이럴때는 꼭 최적화를 위한 SGD에서의 gradient 계산이 아니더라도(이건 그냥 패키지를 갖다 쓰면 되니까), 해밀턴 역학 특성상 뉴럴넷이라는 커다란 함수를 여러 변수로 미분한 도함수를 생각해야 할 때가 많이 있고 이럴 때 자동미분을 잘 이해하고 직접 사용해야 하는듯하다. 해밀토니안 내지는 액션을 미분을 해야 실제 물리 방정식을 얻을 수 있어서 그렇다.


암튼 이렇게 새로운 시각을 얻게 되니 backprop의 중요성에 대해 더 깊이 이해한 것 같고, 이런 것을 딥러닝 이전부터 활용하고 발전시켜 온 공학적 최적화 분야나 그래픽스 등도 무척 재밌는 분야인 것 같다.


Facebook에서 이 글 보기: https://bit.ly/3IXFdcv

(해당 포스트의 덧글타래에 이쪽 방법론의 박사급, 교수급 선생님들이 도움을 주셨으므로 읽어주신 분들 중 더 자세한 관심이 있으시다면 이쪽을 참고해주시면 유익할 것입니다)