본문 바로가기
Math Basic

딥러닝 논문의 수식을 LaTex로 작성하기

by mjk0618 2023. 10. 6.

LaTex는 출판물을 위한 문서를 작성할 때 사용하는 시스템입니다. 공식 문서에서는 document preparation system for high-quality typesetting이라고 소개되어 있습니다. 참고로 LaTex의 발음은 공식적으로 ‘Lah-tech’ 또는 ‘Lay-tech’라고 합니다. 우리말로는 라텍 또는 레이텍이 될 것입니다. 일반적으로 논문이 LaTex로 작성되는데, 여기서는 LaTex에서 수식을 작성하는 방법에 대해서 구체적으로 알아보겠습니다. 마크다운 문서에서 수식을 작성할 때도 LaTex의 문법을 따르고, 티스토리와 같이 웹 페이지에서 수식을 작성할 수 있게 해주는 MathJax도 Latex과 같은 방식을 사용합니다.

 

본문에서는 정말 기본적인 수식 작성 방법은 알고 있다는 가정 하에 논문을 읽을 때 종종 등장하지만, 그때마다 일일히 찾아보기 번거로운 표현을 정리하였습니다.

 

수식 작성법을 알아보기 앞서, 논문의 수식이 어떻게 작성되었는지 확인하는 방법을 정리하겠습니다. 여러 분야에 걸쳐 학술 논문이나 보고서를 찾아볼 수 arXiv에서 논문을 보고 있는 상황이라고 가정합니다. 여기서 Deep contextualized representations의 사실상 시초인 ELMo에 대한 논문을 예시로 들겠습니다.

 

 

널리 알려진 사실이지만 arxiv 논문 url에서 arxiv의 x를 5로 바꾸면 pdf가 아닌 웹 페이지에서 논문을 읽을 수 있는 형식으로 변환됩니다.

 

예를 들어서 ELMo 논문, Deep contextualized word representations의 원래 url arxiv.org/abs/1802.05365에서 x를 5로 바꾸면 다음과 같이 페이지 리디렉션이 이루어지며 pdf가 아닌 html 페이지가 열립니다.

 

 

이제 이 페이지에서 크롬의 개발자 도구를 사용하여 손쉽게 LaTex 수식을 추출할 수 있습니다. 예를 들어서, ELMo 논문에서 Section 3.1에는 아래 이미지와 같이 언어 모델이 다음 토큰을 예측하는 방법을 모델링하는 수식이 있습니다.

 

 

F12를 눌러 개발자 도구를 열면 아래와 같이 현재 페이지의 html 소스를 볼 수 있습니다. 여기서 빨간 네모를 친 버튼을 클릭하고 화면에 마우스를 가져다 대면 마우스가 위치한 곳에 대한 구체적인 소스를 확인할 수 있습니다.

 

 

수식이 어떻게 작성되었는지를 확인하기 위해서 원하는 수식 위에 마우스를 위치하고 적절히 클릭하면 다음과 같은 코드를 볼 수가 있습니다. 종종 수식이 너무 길어서 감추어져 있는 경우에는 … 버튼을 눌러야 전체 수식을 확인할 수 있습니다. 여기서는 math 태그의 alttext 필드에 수식 정보가 저장되어 있는 것을 알 수 있습니다.

 

 

이 부분을 복사하고 마크다운 문서 등에 입력하면 다음과 같이 수식이 출력됩니다.

 

 

서론이 길었는데, 이제 본격적으로 LaTex 수식에 사용되는 여러가지 기호나 문법을 정리해보겠습니다.

 

먼저 수식 중간에 텍스트를 작성하는 방법입니다. 일반적으로 수식 입력기에서 글자를 타이핑하면, 수학 기호와 같이 이탤릭체로 표기되며 일부 단어나 문자에 대해서는 폰트가 일정하지 않을 때도 있습니다. 다음과 같이 softmax 함수를 입력하는 상황을 생각해보겠습니다. 수식 입력기에 그냥 입력하면 왼쪽과 같이 부자연스러운 텍스트가 출력됩니다. 이 때는 \textrm{softmax}를 사용하면 됩니다. \textrm은 텍스트를 로마체로 작성해줍니다. 참고로 일정하게 이탤릭체로 작성하고 싶으면 \textit를 사용하면 됩니다. 아래 수식의 두 번째 줄을 보면 미묘한 차이를 확인할 수 있습니다.

 

 

다음으로는 다양한 문자 기호를 입력하는 방법입니다. 딥러닝 논문을 보면 Loss term을 표기할 때 $\mathscr L$, 로그 가능도를 $\mathcal L$, 실수 집합을 $\mathbb R$과 같이 표현합니다. 이 각각의 상황에서 사용하는 문법은 다음과 같습니다.

 

 

참고로 l을 필기체로 사용하는 경우가 종종 있는데 이 경우에는 \ell을 사용하면 $\ell$이 출력됩니다.

 

수식의 양변을 비교할 때 근사, 유사, 같지 않음은 각각 \approx, \sim, \neq를 사용하여 다음과 같이 나타냅니다. 참고로 단순 대소 비교는 그냥 부등호를 사용하면 되고, 크거나 같음 등은 ge(greater equal), le를 사용하면 됩니다. 그리고 훨씬 크거나 작다는 의미로 사용하는 두 개의 부등호는 gg, ll을 사용합니다. 이를 순서대로 나타내면 아래와 같습니다.

 

 

RNN 계열의 논문을 읽을 때면, 순방향(forward)와 역방향(backward) RNN, LSTM에 대한 표현을 볼 수 있습니다. 이 때 문자 위에 오른쪽, 왼쪽 화살표로 방향을 표시하는데 각각 \overrightarrow, \overleftarrow를 사용하여 다음과 같이 표기할 수 있습니다.

 

 

집합이나 부분집합에 대한 기호도 자주 등장합니다. 먼저 합집합과 교집합은 \cup, \cap을 사용하고, 진부분집합은 \subset, 부분집합은 \subseteq를 사용합니다. 어떤 집합의 원소일 경우에는 \in을 사용합니다.

 

 

증명 과정을 나타낼 때에는 수식을 여러 줄에 걸쳐서 작성해야 합니다. 이 때 수식을 정렬하려면, 수식의 시작과 끝에 각각 \end{align}과 \begin{align}을 추가하면 다음과 같이 됩니다. 참고로 각 =앞에는 &를 붙여서 a &= \frac{2}{4}와 같이 작성해야 합니다.

 

 

그런데 이렇게 수식을 작성하면 줄마다 번호가 생깁니다. 이 때는 align 뒤에 *을 추가하면 다음과 같이 번호 없이 여러 줄의 수식을 작성할 수 있습니다.

 

 

참고로 \tag{n}을 사용하면 수식에 임의의 번호를 붙일 수 있습니다. 이 문법은 당연히 여러 줄의 수식이 아니어도 사용할 수 있습니다.

 

 

전치(transpose)를 표현하는데 사용하는 기호는 \intercal입니다. 거듭제곱을 표현할 때는 ^를 사용하기 때문에 다음과 같이 ^\intercal을 사용하면 전치를 표현할 수 있습니다.

 

 

LaTex 수식은 인라인(inline)모드와 디스플레이(display)모드가 있습니다. 디스플레이 모드는 본문에서는 이미지를 사용하였지만, 수식을 별도로 출력합니다. 인라인 모드는 이 글에서 본 것 같이 글 중간에 수식을 사용하는 것입니다. 그런데 인라인 모드에서 일부 기호를 사용하면 기대한 것과 다르게 출력됩니다.

 

대표적인 예시가 부분합 기호(\sum)입니다. 우리말로는 보통 시그마라고 하는데, 인라인 모드로 이를 사용할 경우 아래와 위 끝이 $\sum_i^n$과 같이 기호의 오른쪽에 출력됩니다. 인라인 모드에서 원래와 같이 기호 위 아래에 표기하기 위해서는 \limits를 사용하면 됩니다. 예를 들어서 \sum\limits_{j=1}이라고 하면, $\sum\limits_{j=1}$와 같이 출력됩니다.

 

이상으로 LaTex 수식에서 사용하는 여러 기호와 표현을 작성하는 방법을 알아보았습니다. 주로 딥러닝 논문에서 발견할 수 있는 수식 위주로 작성하였는데, 이후 새로 추가할 만한 내용이 생기면 계속해서 수정할 예정입니다.

'Math Basic' 카테고리의 다른 글

[통계] 분산과 표준편차를 구분하는 이유  (0) 2023.03.10

댓글