10. Sequence Modeling: Recurrent and Recursive Nets

순환 신경망은 순차적 데이터를 처리하는 신경망들이다. 다층 망으로부터 순환 망으로 가기 위해서는, 1980년대 기계 학습과 통계적 모델에서 나온 초기 아이디어 중 하나를 차용해야 한다: 모델의 서로 다른 부분간 매개변수를 공유하는 것. 관련된 아이디어는 1차원 시간적 수열에 대해 컨볼루션을 쓰는 것이다. 표기를 쉽게 하기 위해, RNN은 시간 인덱스 t가 1부터 τ까지 변화하는 벡터 \mathbf{x}_{t}에 대해 적용하는 것으로 하자. 이 장은 계산 그래프의 아이디어를 순환을 포함하도록 확장한다.

10.1. Unfolding Computational Graphs

계산 그래프는 입력과 매개변수를 출력과 손실함수로 매핑하는 데 들어가는 계산들의 구조를 형식화하는 방법이다. 이 때 순환적 계산은 순환하지 않는 반복적 구조를 갖는 계산 그래프로 펼칠 수 있다. 순환적 신경망은 많은 다른 방법들로 만들 수 있다. 임의의 함수가 피드포워드 신경망으로 생각될 수 있듯이, 순환를 포함하는 임의의 함수 또한 순환적 신경망으로 표현될 수 있다. 순환적 망이 과거로부터 미래를 예측하는 작업을 수행하기 위해 학습되었을 경우, 이 망은 대개 \mathbf{h}_{t}를 과거의 t까지의 입력열 중 작업과 관련된 부분에 대한 노이즈 낀 요약으로 간주하도록 학습한다. 순환적 방정식인 \mathbf{h}_{t} = f(\mathbf{h}_{t-1}, \mathbf{x}_{t}; \mathbf{\theta})은 두 가지 다른 방식으로 볼 수 있다. 하나는 RNN을 생물학적 신경망처럼 모델의 물리적 구현 내에 존재할 수 있는 모든 컴포넌트의 노드를 담고 있는 그림을 그리는 것이다. 다른 방식은 RNN을 각 컴포넌트가 각 시간 시점마다 그 시점의 컴포넌트의 상태를 나타내는 변수 하나씩 여러 서로 다른 변수로 표현되는 펼쳐진 계산 그래프로 보는 것이다. 이런 펼침 과정은 두 가지 큰 이점을 가져다준다. 하나는 수열 길이에 상관없이 학습된 모델은 언제나 동일한 입력 크기를 가진다는 것인데, 이는 상태의 가변 크기 역사가 아니라 한 상태에서 다른 상태로의 전이로 특정되기 때문이다. 다른 이점은, 같은 매개변수에 대해서는 모든 시간대에 대해 같은 전이 함수를 사용할 수 있다는 점이다. 이 두 이점들로 인해, 모든 가능한 시간 시점에 대해 독립적인 모델을 학습할 필요가 없고, 모든 시간과 모든 길이 수열에 대해서 동작하는 하나의 모델을 학습하는 것으로 충분해진다. 순환적 그래프와 펼쳐진 그래프는 각각의 쓰이점이 있다.

10.2. Recurrent Neural Networks

그래프 펼치기와 매개변수 공유 아이디어를 차용하면, 폭넓은 범위의 순환적 신경망을 설게할 수 있다. 순환적 신경망에 대한 중요한 설계 패턴에는 다음 것들이 있다: 순환적 망이 각 시간별로 출력을 하고 은닉 유닛간 순환적 연결을 갖도록 하는 것. 순환적 망이 각 시간별로 출력을 하고 한 시점에서의 출력과 다음 시점으로의 은닉 유닛간에만 순환적 연결을 허용하는 것. 순환적 망이 전체 서열을 읽고 단일 출력을 낳게 한 뒤 은닉 유닛간 순환적 연결을 시키는 것. 이 중 첫 번째 형태는 튜링 기계에 의해 계산 가능한 임의의 함수는 유한 크기의 순환적 망에 의해 계산될 수 있다는 것 때문에 범용적이다. 이제 이 경우에 대해 전방 전파 식들을 구해 보자:

\mathbf{a}_{t} = \mathbf{b} + \mathbf{W} \mathbf{h}_{t-1} + \mathbf{U} \mathbf{x}_{t}

\mathbf{h}_{t} = \tanh(\mathbf{a}_{t})

\mathbf{o}_{t} = \mathbf{c} + \mathbf{V}\mathbf{h}_{t}

\hat{\mathbf{y}}_{t} = \mathrm{softmax}(\mathbf{o}_{t})

이 때 경사 계산은 전방 전파를 한 뒤 역방향으로 역전파를 한다. 이 수행 시간은 O(\tau)이며 병렬화로 줄이는 것이 불가능하다. 이를 시간을 통한 역전파라 한다.

10.2.1. Teacher Forcing and Networks with Output Recurrence

두 번째 경우로 망의 순환적 연결이 한 시점에서의 출력과 다음 시점으로의 은닉 유닛간에만 존재하는 경우는 은닉-은닉 순환 연결이 없으므로 덜 강력하다. 이런 모델은 교사 강제로 학습할 수 있다. 교사 강제는 최대가능도 기준으로부터 유도되는 과정으로, 학습 과정에서 모델이 실제 참값 출력 y_{t}를 시간 t + 1의 입력으로 받는 것이다. 교사 강제는 본래는 은닉-은닉 순환 연결이 없는 모델에서 시간을 통한 역전파를 하지 않기 위해 고안되었지만, 은닉-은닉 순환 연결이 있는 모델에도 어느 시점에서의 출력과 다음 시점에서의 다른 값 사이의 연결은 존재하기 때문에 여전히 적용 가능하다. 엄격한 교사 강제의 단점은 망이 개회로 모드, 그러니까 출력이 입력으로 다시 들어오는 경우로서 차후에 사용될 가능성이 있을 때 생긴다. 이 문제를 해결하는 방법은 교사 강제 입력과 자유 가동 입력을 동시에 학습하는 것이다. 다른 방법은 생성된 값이나 실제 데이터 값을 무작위적으로 입력으로 사용함으로써 학습 시점에서 관측된 입력과 테스트 시점에서 관측된 입력간의 차이를 완화시키는 것이 있다.

10.2.2. Computing the Gradient in a Recurrent Neural Network

순환 망을 통해 경사를 게산하는 것은 간단하며, 펼쳐진 계산 그래프에 일반화된 역전파 알고리즘을 사용하면 된다. 계산 그래프의 내부 노드에 대한 경사를 계산했다면, 매개 변수 노드에 대한 경사를 얻을 수 있다.

10.2.3. Recurrent Networks as Directed Graphical Models

지금까지 알아본 순환적 망에서는 손실 L_{t}는 대상 \mathbf{y}_{t}와 출력 \mathbf{o}_{t}간의 교차 엔트로피였다. 예측적 로그 가능도 학습 목적함수를 쓸 때에는, RNN을 학습해서 이전 입력이 주어진 상황 하에 다음 원소의 조건부 확률분포를 추정한다. 그래프 모델에서의 간선은 어떤 변수가 다른 변수에 직접적으로 의존하는지를 나타낸다. RNN을 그래프 모델로 나타내는 하나의 방법은 완전 그래프의 구조를 가져 임의의 y값의 쌍 사이에 직접적 의존성을 표현할 수 있도록 그래프 모델을 정의하는 것이다. 은닉 유닛 \mathbf{h}_{t}를 확률변수로 간주했을 때 얻어지는 RNN의 그래프 모델 구조는 고려하기에 더 흥미롭다. 그래프 모델을 효과적으로 매개화하더라도, 일부 연산들은 계산적으로 난점을 갖고 있다. 순환 망이 매개변수의 숫자를 줄이는 데에 대한 댓가는 매개 변수를 최적화하는 것이 어려워진다는 것이다. 순환적 망에서 사용되는 매개변수 공유는 같은 매개변수가 서로 다른 시점에서도 쓰일 수 있다는 가정에 의존한다. 즉, 시간 t에서의 변수가 주어졌을 때 시간 t + 1에서의 변수에 대한 조건부확률분포는 비유동적, 즉 이전 시점과 다음 시점간의 관계가 t에 의존하지 않는다는 것이다. RNN을 그래프 모델로 보는 관점을 완성하기 위해서는, 모델로부터 표본을 추출하는 방법을 설명할 필요가 있다. 이에는 수열의 길이를 판정하는 메커니즘이 필요하다. 출력이 어떤 어휘에서 얻어진 부호라고 한다면, 열의 끝에 해당하는 특별한 부호를 추가할 수 있다. 다른 선택지는 모델에 각 시점마다 생성을 지속할지 중지할지를 결정하는 추가적인 베르누이 출력을 도입하는 것이다. 또 다른 방법으로는 열 길이 자체를 모델링하는 추가 출력을 더하는 방법도 있다.

10.2.4. Modeling Sequences Conditioned on Context with RNNs

일반적으로 RNN의 그래프 모델은 y변수들간의 결합분포뿐만을 표현하는 것이 아니라 \mathbf{x}가 주어졌을 때 y에 대한 조건부 분포도 표현할 수 있다. 이전까지는 \mathbf{x}_{t} 벡터들을 입력으로 받았지만 단일 벡터 \mathbf{x}만을 입력으로 받을 수도 있다. 이는 각 시각에 대한 추가 입력, 초기 상태 \mathbf{h}_{0}에 대한 추가 입력, 또는 그 모두로 잡을 수도 있다. RNN이 벡터들 \mathbf{x}_{t}을 입력으로 받는 것도 가능하다.

10.3. Bidirectional RNNs

지금까지 거론했던 순환 망은 인과적 구조, 즉 시간 t에서의 상태가 과거의 정보와 현재 입력만을 갖는 구조를 갖고 있다. 하지만 많은 응용들에서 예측값이 전체 입력에 의존해야 할 경우가 있다. 이를 위해서 양방향 순환 신경망이 고안되었다. 이름이 제안하듯, 양방향 RNN은 열의 시작부터 시간에 따라 전방으로 진행하는 RNN과 열의 끝부터 시간에 따라 후방으로 진행하는 RNN을 결합시킨다. 이 발상은 이미지 같은 2차원 입력에는 4개의 RNN을 씀으로써 자연스럽게 확장될 수 있다.

10.4. Encoder-Decoder Sequence-to-Sequence Architectures

이 장에서는 RNN을 통해 입력 열로부터 가변 길이의 출력 열을 학습하는 법을 알아보자. RNN의 입력은 문맥으로 불리기도 한다. 가변 길이 배열을 다른 가변 길이 배열로 매핑하는 가장 간단한 RNN 구조는 2014년에 제안되었으며, 하나는 다른 기계 번역 시스템으로부터 생성된 채점 제안에 기반하며 다른 하나는 독립된 순환 망을 통해 번역들을 생성한다. 이는 암호화기-복호화기 구조라 불리는데, 암호화기/읽기/입력 RNN이 입력을 처리해 복호화기/쓰기/출력 RNN이 출력 열을 생성한다. 문맥이 벡터라면, 복호화기 RNN은 벡터-수열 RNN이다. 이 때 복호화기는 은닉층과 같은 크기를 가져야 하지만, 암호화기에는 그런 제한이 없다. 이 구조의 분명한 한계는 암호화기 RNN이 출력하는 문맥은 긴 열을 요약하기에는 너무 작다는 것이다. 이를 보정하기 위해 열의 항목들을 출력 열의 항목들과 연관짓는 주목 메커니즘을 동비하였다.

10.5. Deep Recurrent Networks

대부분 RNN의 계산은 세 블록의 매개변수와 연관된 변환으로 분해될 수 있다: 입력으로부터 은닉 상태로, 이전 은닉 상태로부터 다음 은닉 상태로, 은닉 상태로부터 출력으로. 이 연산 각각에 깊이를 더하는 것이 좋을까? 실험적으로는 그렇다. 2013년의 연구에서는 RNN의 상태를 복수의 층으로 분해하는 것에서 유의미한 이득을 입증하였다.

10.6. Recursive Neural Networks

재귀 신경망은 순환 망에 대한 또 다른 일반화를 나타낸다. 여기서는 다른 종류의 계산 그래프를 사용하는데, 이는 RNN의 사슬형 구조가 아닌 깊은 트리로 구조화된다. 재귀 망의 순환 망에 대한 이점은 같은 길이의 열에 대해 그 깊이는 \tau가 아니라 O(\log \tau)로 줄어들 수 있다는 점이다. 재귀 망에 대해서 많은 변형이 존재한다.

10.7. The Challenge of Long-Term Dependencies

순환 망에서 장기적 의존성을 학습하는 데 있어 수학적 난점은 경사가 여러 단계에 걸쳐 전파되면 사라지거나 폭발한다는 점이다. 순환 망은 같은 함수를 한 시점에 하나씩 여러 번 합성한다. 이는 행렬 곱과 닮았기 때문에, 행렬의 고유값 크기만큼 가중치가 계속 스케일링된다. 이 문제는 순환 망에 대해 특히 나타난다. 이런 사라지거나 폭발하는 경사 문제는 서로 다른 연구자들에 의해 독립적으로 발견되었다.

10.8. Echo State Networks

\mathbf{h}_{t-1}에서 \mathbf{h}_{t}로의 순환 가중치 매핑과 \mathbf{x}_{t}에서 \mathbf{h}_{t}로의 입력 가중치 매핑은 순환 망에서 가장 학습하기 어려운 매개변수들이다. 이를 피하기 위해 오직 출력 가중치만을 학습하는 접근법이 메아리 상태 망, 액체 상태 기계에 적용되었다. 이 둘은 모두 은닉 유닛들이 입력의 다른 면들을 수집했을 수 있는 시간적 특성을 축적하기 때문에 비축 계산법으로 불린다. 이런 비축 계산법 순환 망을 생각하는 한 가지 방법은 이를 커널 기계와 비슷하게 생각하는 것이다. 이는 임의 길이의 열을 선형 예측기를 적용해 관심 있는 문제를 풀 수 있는 고정 길이 벡터로 매핑한다. 여기서 중요한 질문이 있다: 입력과 순환 가중치를 어떻게 설정해야 풍부한 기록들이 순환 신경망 상태로 표현될 수 있을까? 이에 대한 답은 순환 망을 동역학계로 보고 그 동역학계가 안정성의 극단에 있음을 간주하고 입력과 순환 가중치를 세팅하는 것이다. 이 때 중요한 특성은 자코비안의 고유값의 최대 절대값인 스펙트럼 반경이다. 이는 각 단계마다 차이값을 그 스펙트럼 반경만큼 스케일링하는 역할을 한다. \lvert \lambda \rvert > 1이면 편차 크기는 지수적으로 커진다. \lvert \lambda \rvert < 1이면 지수적으로 작아진다. 물론, 비선형이 존재할 경우 이의 도함수가 많은 곳에서 0일 수 있으므로 큰 스펙트럼 반경으로부터 발생하는 폭발을 방지할 수 있다. 지금까지 역전파에서 반복된 행렬곱에 대해 이야기한 것들은 전방 전파에도 똑같이 적용될 수 있다. 선형 변환 \mathbf{W}^{T}\mathbf{h}L^{2} 길이를 항상 수축시킨다면, 이 변환을 수축성이라 한다. 스펙트럼 반경이 1보다 작으면 \mathbf{h}_{t}에서 \mathbf{h}_{t+1}의 매핑은 수축성이다. 자코비안 행렬은 \mathbf{h}_{t}의 작은 변화가 한 단계 앞으로 얼마만큼 전파하는지, 또는 역전파 중 \mathbf{h}_{t+1}의 경사가 한 단계 뒤로 얼마만큼 전파하는지를 나타낸다. 비선형 변환이라면, 자코비안은 각 단계마다 바뀔 수 있으므로 동역학은 더 복잡해진다. 메아리 상태 망의 전략은 가중치를 고정해 스펙트럼 반경을 고정함으로써 정보가 시간에 따라 전방으로 전파되면서도 포화 비선형 함수의 안정화 효과 아래에서 폭발하는 것은 방지하는 것이다. 최근에는, ESN에서 가중치를 세팅하는 방식들은 완전 학습 가능한 순환 망에서 가중치를 초기화하는 데도 쓰일 수 있으며 이는 장기 의존성을 학습하는 데도 도움이 된다는 것이 알려졌다.

10.9. Leaky Units and Other Strategies for Multiple Time Scales

장기적 의존성에 대처하는 하나의 방법은 복수의 시간 스케일에 대해 동작하는 모델을 설계해 모델의 일부분은 세밀하게 조정된 시간 스케일에 대해 동작함으로써 작은 세부 사항들을 다루고 모델의 다른 부분은 성기게 조정된 시간 스케일에 대해 동작함으로써 멀리 떨어진 과거로부터 현재로 정보를 더 효과적으로 전달하는 것이다.

10.9.1. Adding Skip Connections through Time

성긴 시간 스케일을 얻는 하나의 방법은 먼 과거의 변수로부터 현재의 변수로 직접적인 연결을 추가하는 것이다. 경사는 시점의 개수에 따라 지수적으로 사라지거나 폭발할 수 있다.

10.9.2. Leaky Units and a Spectrum of Different Time Scales

도함수의 곱에 대한 경로를 얻는 또 다른 방법은 선형 자가 연결을 가진 유닛과 그 연결 중 하나 근처에 가중치를 두는 것이다. 선형 자가 연결을 가진 은닉 유닛은 연속된 평균과 비슷하게 동작할 수 있는데, 이를 새는 유닛이라 한다. d개의 시점을 통한 건너뛰기 연결은 유닛이 항상 d 시점 이전의 값으로부터 영향을 받을 수 있음을 보장한다. 새는 유닛에 사용되는 시간 상수들을 세팅하는 데는 2가지 방식이 있는데, 하나는 상수값으로 고정하는 것이고 하나는 자유 매개변수로 설정해 학습하는 것이다.

10.9.3. Removing Connections

장기적 의존성을 다루는 또 다른 접근법은 복수의 시간 스케일에서 RNN의 상태를 구성할 때 정보의 흐름이 더 느린 시간 스케일일 때 긴 거리를 더 쉽게 이동하도록 하는 것이다. 이는 건너뜀 연결과는 다른데, 길이 1의 연결을 적극적으로 제거하고 이를 더 긴 연결로 대체하기 때문이다. 순환 유닛의 그룹이 서로 다른 시간 스케일에 대해 동작하도록 강제하는 또 다른 방법들도 존재한다.

10.10. The Long Short-Term Memory and Other Gated RNNs

실용적으로 가장 효과적인 수열 모델은 게이트 RNN이라 불리며, 이에는 장단기 기억게이트 순환 유닛에 기반한 망이 있다. 누수 유닛처럼, 게이트 RNN은 시간을 통한 경로를 만들어 도함수가 폭발하거나 사라지지 않도록 한다. 누수 유닛은 망이 오랜 시간에 걸쳐 정보를 누적하도록 하지만, 게이트 RNN은 오래 된 상태를 어느 시점에 잊을지를 결정한다.

10.10.1 LSTM

자가 순환을 도입해 경사가 긴 시간 동안 흐르는 경로를 제공하는 아이디어는 초기 장단기 기억 모델의 핵심이었다. 원소별로 비선형 함수를 입력과 순환 유닛의 아핀 변환에 적용하는 대신, LSTM 순환 망은 내부 순환(자가 순환)을 갖는 “LSTM 셀”을 RNN의 외부 순환에 비해 추가로 가진다. 자가 순환 가중치는 이 가중치를 시그모이드 유닛을 통해 0과 1 사이의 값으로 세팅하는 망각 게이트 유닛 f_{i, t}에 의해 제어된다. 외부 입력 게이트 g_{i, t}는 망각 게이트와 비슷하게 계산되지만, 고유한 매개변수가 있다. 출력 h_{i, t} 역시도 시그모이드 유닛을 쓰는 출력 게이트 q_{i, t}를 통해 중지될 수 있다. LSTM 망은 장기 의존성을 배우는 데 설계된 인공 데이터셋을 통해 단순한 순환 구조에 비해 장기 의존성을 더 쉽게 배울 수 있는 것이 입증되었다.

10.10.2. Other Gated RNNs

LSTM 구조에서 어떤 부분들이 꼭 필요할까? 이에 대한 답 일부는 게이트 순환 유닛, GRU로 알려진 최근의 연구로 답해진다. 이 외에도 이 설계에 대한 여러 변종들이 존재한다.

10.11. Optimization for Long-Term Dependencies

RNN을 여러 시점에 걸쳐 최적화하면 경사가 사라지거나 폭발할 수 있는데, 이계도함수도 일계도함수가 사라지는 것과 동시에 사라질 수 있다.

10.11.1. Clipping Gradients

순환 망에서 많은 시점 동안 계산되는 강하게 비선형인 함수들은 그 도함수의 크기가 아주 크거나 아주 작을 수 있다. 이 때 생기는 난점은, 매개변수 경사가 매우 클 때, 경사 하강 매개변수 업데이트가 매개변수를 목적 함수가 큰 쪽으로 이동시켜 현재 해에 도달하기까지 수행한 작업들을 무효화시킨다는 점이다. 이에 대해 실용적으로 쓰인 간단한 해법은 경사를 깎아내는 것이다.

10.11.2. Regularizing to Encourage Information Flow

경사 깎아내기는 경사 폭발에 대처하는 데 도움을 주지만, 경사가 사라지는 문제에 대해서는 도움이 되지 않는다. 경사가 사라지는 문제에 대처하고 장기 의존성을 더 잘 표현하기 위해서는, 펼쳐진 순환 구조의 계산 그래프에서 경사의 곱이 1 근처가 되는 경로를 만드는 아이디어를 쓸 수 있다. 하나의 방법은 LSTM이나 다른 자가 순환 게이팅 메커니즘을 쓰는 것이고, 다른 하나는 매개변수를 정규화하거나 제한해 정보의 흐름을 유도하는 것이다. 이의 단점은 언어 모델링처럼 데이터가 풍부한 경우에는 LSTM만큼 효과적이지 못하다는 것이다.

10.12. Explicit Memory

어떤 지식은 암시적일 수도 있고 어떤 지식은 명시적일 수도 있다. 신경망은 암시적인 지식을 저장하는 데는 뛰어나지만, 작동 기억 시스템과 비슷한 부분은 없기 때문에 사실을 기억하기는 어렵다. 이를 위해, 연관 메커니즘에 의해 접근될 수 있는 기억 세포의 집합을 포함하는 기억 망이 2014년에 도입되었다. 이후에는 신경 튜링 기계가 고안되었는데, 이는 어떤 동작이 수행되어야 하는지에 대한 명시적인 지도 없이도임의의 내용을 읽고 기억 세포에 쓸 수 있으며 이러한 명시적인 신호 없이도 내용 기반의 약한 주의 메커니즘을 통해 엔드 투 엔드 학습을 수행하는 것이 가능하다. 각 기억 세포는 LSMT이나 GRU의 기억 세포의 확장으로 볼 수 있다. 차이점은 망은 어느 세포가 읽기나 쓰기를 담당할지를 선택하는 내부 상태를 출력한다는 것이다. 정확한 정수 주소를 제공하는 함수를 최적화하기는 어렵기 때문에, NTM은 여러 기억 세포들로부터 읽기나 쓰기를 동시에 수행해야 한다. 이런 기억 세포들은 LSTM이나 GRU의 기억 세포처럼 단일 스칼라를 저장하는 대신 벡터를 포함하도록 증강된다. 여기에는 두 가지 이유가 있는데 하나는 기억 세포에 접근하는 연산량이 증가했기 때문이고 다른 이유는 이것이 읽기나 쓰기를 담당하는 가중치가 그 세포의 함수가 되는 내용 기반 주소 방식을 가능케 하기 때문이다. 이에 반해, 기억의 내용을 가리킬 때에는 위치 기반 주소 방식은 불가능하다. 기억 세포의 내용이 대다수의 시점에 복제된다면, 그가 담은 정보는 시간에 따라 전방 전파되고, 경사는 사라지거나 폭발하지 않고 후방으로 전파될 수 있다. 명시적 기억 방식은 일반적 RNN이나 LSTM RNN이 학습할 수 없는 작업들도 모델이 학습할 수 있도록 하는 것으로 보인다. 이러한 이점이 생기는 하나의 이유는 정보와 경사가 매우 오랜 시간 동안 전파될 수 있기 때문일 수 있다. 기억 세포의 가중평균을 통한 역전파에 대한 대안으로, 기억 주소 가중치를 확률로 표현하거나 추계적으로 단 하나의 세포만 읽도록 할 수 있다. 약하거나 (역전파를 허용하는) 추계적이고 강하거나에 상관없이, 주소를 선택하는 메커니즘은 주목 메커니즘과 동일하다. 순환 신경망은 심층 학습을 순차적 데이터에 확장할 수 있는 방법을 제공한다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중