본문 바로가기
STEM - 학술세미나/전기정보공학

전자기학과 딥러닝? DNN 모델로 최적의 광학 구조 탐색하기!

by STEMSNU 2021. 6. 11.

 

전자기학과 딥러닝? DNN 모델로 최적의 광학 구조 탐색하기!

안녕하세요, 공우 12기 전혜성입니다. 지난 겨울, 융합과학기술대학원에서 진행하였던 재미있는 프로젝트에 대해 소개드리고자 합니다. 재미있게 읽어주시면 감사하겠습니다.

전자기파(EM waves) in layers

전자기파에 대해 배운지 오랜 시간이 지나도 어렴풋이 기억해낼 수 있는 한 가지 사실은, 이름 그대로 전기장과 자기장이 coupling 된 형태라는 점과 나아가 맥스웰 방정식을 통해 분석할 수 있다는 점일 것 같습니다. 나노광학구조를 설계하고 싶은데, 왜 맥스웰 방정식부터 들여다보게 되었을까요?

OLED나 태양전지와 같은 광학 소자는 실리콘이나 유기물질의 multi layer 구조로 이루어져 있습니다. 이에 입사된 빛이 후면전극까지 도달하면 전압을 발생시킬 수 있게 됩니다. 즉, 특정 구조의 투과율(transmittance)이나 반사율(reflectance), 흡수율을 통해 성능을 예측할 수 있으므로 맥스웰 방정식을 먼저 학습해야 했습니다.

Multi-layer 구조에서의 빛의 투과 및 반사

맥스웰방정식과 더불어 전자기파는 우리의 상식과 부합하게 연속적으로 나아가야 한다는 경계조건을 갖습니다. 방정식이 꽤 대칭적이지만, 완벽하게 대칭적이지 않기 때문에 신기한 현상이 발생합니다. 전자기파가 한 방향으로 입사할 때, 전기장이 입사면과 평행하게 진동하는 경우와 수직하게 진동하는지에 따라 투과 및 반사 특징이 매우 달라지게 되는 것입니다.

시뮬레이션을 할 때에는, 입사하는 빛의 진동 방향을 수평 또는 수직 두 방향 성분으로 분해할 수 있기 때문에 두 경우에 대해서 각각 따로 계산하여도 충분합니다. 따라서 각 layer에서 전기장의 +z방향 성분과 -z방향 성분 크기를 상수 계수로 잡으면 앞서 있었던 경계조건에 의해 인접한 layer에서 각 계수의 관계가 선형적임을 알 수 있습니다. 실제로 계산을 해보면 다음과 같이 행렬로 표현이 되는데, 재미있게도 n번째 layer에서의 전파된 후 layer 경계에서 변화가 일어나는 것을 독립적인 두 행렬의 순차적인 곱으로 표현할 수 있습니다.

그렇다면 마지막 layer에서의 계수를 첫 번째 layer에서의 계수로 표현할 수 있고, 입사계수를 1로 보고 반사, 투과 계수를 r와 t라고 놓으면 결국 미지수 2개인 선형 연립 방정식을 푸는 것과 같습니다.

이러한 과정을 전부 python 코드로 작성하면 작은 픽셀 공간에서의 전기장 크기를 시각적으로 나타낼 수 있고, 다음과 같은 애니메이션도 그려볼 수 있습니다. 그리고 layer 구조나 입사광선의 각도 및 파장에 따른 투과율 spectrum을 그려볼 수도 있죠.

여기까지도 사실 굉장히 흥미롭고 재미있는 전자기적 해석이 되지만, 저희는 여기서 나아가 특정한 광학적 성질을 갖는 multi layer 구조를 찾아보려고 합니다. 그렇기 위해서는 지금까지 한 과정을 역으로 해서 layer의 두께나 물질 종류를 해로 찾아야 하는데요, 이 과정에서 딥러닝 모델을 사용하여 정해진 시간 내에 가장 알맞는 솔루션을 찾아보려고 합니다.

DNN modeling

궁극적인 목표는 layer의 구성 물질과 두께의 범위 정도를 define한 상황에서 DNN을 학습 시켜서, desire spectrum을 input하면 적절한 두께를 output해주는 모델을 만드는 것 입니다.

여기서 DNN은 딥 뉴럴 네트워크를 의미하는데요, DNN모델은 미리 찾아놓은 input과 output 세트를 계속 대입해가며 실제 output 데이터와 예측 값이 최대한 일치하도록 이 뉴런 사이의 가중치나 바이어스가 조정되는 모델입니다. 저희 신경계와 비슷한 구조를 갖고 있죠. 이때 그 예측 성능의 지표가 되는 loss function과, 이 loss function 값에 따라 가중치나 bias를 얼마나 변화시킬 지 정하는 optimization method 등을 정해주어야 합니다.

앞서 말한 궁극적인 모델을 스펙트럼으로부퍼 구조를 찾는 backward model이라고 한다면, 앞의 TMM을 재현하여 구조를 대입하면 스펙트럼을 그려주는 DNN 모델을 forward model이라 할 수 있습니다. Forward model을 만들면 backward model의 형성에 있어 필요한 많은 TMM 계산을 빠르게 수행할 수 있을 것입니다. 따라서 먼제 forward model을 만들었는데요, 실제로 TMM 코드보다 최소 27배 빠르게 연산이 가능하였고, 평균 transmittance 오차율도 0.01으로 충분히 작게 만들 수 있었습니다.

DNN 모델이 알려준 광학 구조, 이대로 괜찮은가?

위의 과정을 통해 backward 모델을 작성해보면 학습 결과가 썩 좋지 않다는 점을 확인할 수 있습니다. 이는 목표하는 스펙트럼에 대하여 이를 도출할 수 있는 layer 구조가 하나만 있는 것이 아니기 때문입니다. 즉, Input에 대하여 적합한 솔루션을 찾지 못하고 우왕좌왕하는, converge 하지 못하는 DNN이 형성됩니다. 이를 해결하기 위한 두 가지 방법이 있습니다.

우선 첫 번째로 기존에 제작한 forward model을 backward model 뒤에 결합하여 전체 모델을 학습시키고, backward model을 다시 떼어내는 것입니다. 이 경우, input과 output이 동일한 학습 데이터를 많이 제공하면 되는 것인데요, output으로 layer 구조를 알려주지 않아도 적절한 backward model을 찾아간다는 점이 매우 흥미롭습니다.

두 번째로는, 어느 방법을 동원해서라도 특정 스펙트럼에 대한 적절한 구조 하나만 찾으면 된다면, single-case optimization을 하는 것입니다. input을 상수 1로 하며 output을 스펙트럼과 같은 point를 갖는 구조 뒤에 기존에 제작한 forward model을 붙이고 앞서 설명한 것과 같이 학습시킨 후 떼어내봅니다. 이 경우, 학습을 통하여 input 1에 대하여 지정되는 가중치들이 곧 layer의 두께가 된다고 할 수 있습니다. 이러한 편법과 같은 방법을 통해서도 적절한 layer 구조를 찾아볼 수 있습니다.

전자기학과 ML, 사실은 찰떡궁합…?

전자기학 문제를 딥러닝으로 해결하는 것에는 큰 장점이 있습니다. 학습에 필요한 데이터 set를 정말 많이 형성할 수 있다는 것입니다. 예를 들어 MNIST 숫자 필기 이미지를 분류하는 문제에서는 이러한 필기 이미지를 아주 많이 찾아야 하는데, 제가 처음에 작성했던 TMM코드에 임의의 두께의 layer 구조를 10만번 20만번 대입하면 이러한 데이터가 3분만에 모두 생성할 수 있습니다.

전자기학 현상을 머신러닝으로 100% 완벽히 모사할 수 있는 프로그램을 만드는 것은 불가능할 수 있지만, 이러한 장점을 이용하여 최적의 해를 찾아가는 과정은 공학에 있어서 큰 장점이 될 수 있을 것 같습니다.

ML과 DNN 입문하기

저는 이 프로젝트를 계기로 DNN 모델링을 처음 접하게 되었습니다. 막연히 ML 코딩이나 DNN 코딩은 너무 어려울 것이라고 생각했었는데, 훌륭한 python 기반 framework인 keras와 tensorflow가 있다는 것을 알게 되었습니다. keras는 기존에 설정 되어 있는 loss function과 optimization method 등을 제공하므로 작성자는 이러한 요소들을 선택만 해주면 DNN을 활용한 간단한 모델을 쉽게 만들어낼 수 있습니다.

이와 더불어 kaggle이라는 사이트에서는 keras의 활용법에 대해 아주 세세히 설명하고 있으며, 직접 코드를 작성해보며 공부할 수 있는 환경을 제공합니다. ML 혹은 DNN에 입문하고 싶은 분이 계시다면, 위의 자료들을 참고하여 google colab으로 간단한 ML 모델을 작성해보며 첫 발걸음을 내딛을 수 있을 것 같습니다!

댓글