SW/인공지능

인공지능 : RNN 문제 : Vanishing Gradient Problem

얇은생각 2019. 7. 18. 07:30
반응형

인공지능 : RNN 문제 : Vanishing Gradient Problem


Vanishing Gradient Problem

오늘은 RNN과 함께 존재하는 거대한 문제에 뛰어들겠습니다. 


우선 수학 용어에 대해 너무 깊이 파고들지 않고 명확하게 설명될 것입니다. 그리고 더 중요한 것은 이 문제에 대한 해결책을 심층 학습 시리즈의 다음 기사에서 논의할 것입니다.


그렇다면, Vanishing Gradient Problem라고 하는 것은 무엇일까요?




RNN 뒤에 있는 사람들

Vanishing Gradient Problem는 1991년 처음 발견되었습니다. 천재 과학자이자 창립자 중 한 사람으로, 오늘날 RNN과 LSTM을 사용하는 방식에 큰 기여를 했습니다.


몬트리올 대학의 요수아 벵기오 교수입니다. 그는 또한 Vanishing Gradient Problem를 발견했지만 1994년에 썼습니다. 요슈아는 특히 심층학습과 RNN의 한계를 넘어서는 또 다른 사람입니다.


몬트리올 대학에서 그의 프로필을 확인하면, 그가 500개 이상의 연구 논문에 기여했다는 것을 알 수 있을 것입니다.




Vanishing Gradient Problem

기억하시겠지만, 경사 강하 알고리즘은 네트워크에 최적 설정이 될 비용 기능의 글로벌 최소값을 찾습니다.


또한 기억하시겠지만, 정보는 입력 뉴런에서 출력 뉴런으로 신경 네트워크를 통해 이동하며, 오차는 계산되어 네트워크를 통해 다시 전파되어 가중치를 업데이트합니다.


RNN에서도 꽤 비슷하게 작동하지만, 여기 좀 더 많은 것이 있습니다.


첫째, 정보는 RNN에서 시간 단위로 이동하며, 이는 이전 시점의 정보가 다음 시점의 입력으로 사용됨을 의미합니다.


둘째로, 각 시점에서 비용 기능 또는 오류를 계산할 수 있습니다.


기본적으로 교육 중에 비용 기능은 결과(아래 이미지의 빨간색 원)를 원하는 출력과 비교합니다.


따라서 이러한 모든 빨간색 원에 대해 시계열 전체에 걸쳐 이러한 값을 가지게 됩니다.




하나의 오류 용어에 초점을 맞추도록 하겠습니다.


비용 기능 등을 계산한 결과, 이제 가중치를 업데이트해야 하므로 비용 기능을 네트워크를 통해 다시 전파하려고 합니다.


본질적으로, 이 비용 함수와 관련된 산출물의 계산에 참여한 모든 뉴런들은 오류를 최소화하기 위해 가중치를 업데이트해야 합니다. RNN은 단지 이 출력층 바로 밑에 있는 뉴런이 아니라, 모든 뉴런이 훨씬 오래 전에 기여했다는 것입니다. 그래서, 이 뉴런들에게 시간을 거슬러 다시 전파해야 합니다.


이 문제는 wrec(가중 반복) 업데이트와 관련이 있습니다. 즉, 숨겨진 계층을 비연속 시간 루프의 자체로 연결하는 데 사용되는 가중치입니다.


예를 들어, xt-3에서 xt-2로 가려면 xt-3을 wrec로 곱합니다. 그런 다음, xt-2에서 xt-1까지 다시 xt-2를 wrec로 곱합니다. 그래서, 같은 가중치를 여러 번 곱합니다. 여기서 문제가 발생합니다. 어떤 것을 작은 숫자로 곱하면, 구한 값은 매우 빠르게 감소합니다.


우리가 알다시피, 가중치는 0에 가까운 임의의 값을 가진 신경 네트워크의 시작 부분에서 할당됩니다. 그리고 거기서부터 네트워크는 훈련시킵니다. 그러나 wrec에 가까운 wrec로 시작하여 xt, xt-1, xt-2, xt-3...를 이 값으로 곱하면 각 곱셈에 따라 기울기가 점점 줄어듭니다.




네트워크에 무엇을 의미합니까?

gradient가 낮을수록 네트워크가 가중치를 업데이트하는 것이 어려워지고 최종 결과에 도달하는 데 시간이 더 오래 걸립니다.


예를 들어, 1000 에폭이면 시점 t의 최종 가중치를 구하기에 충분하지만, 이 시점에서 매우 낮은 기울기로 인해 시점 t-3의 가중치를 교육하기에는 충분하지 않을 수 있습니다. 하지만 네트워크의 절반이 제대로 훈련되지 않을 뿐 아니라 문제가 되고 있습니다.


이전 계층의 출력은 추가 계층의 입력으로 사용됩니다. 따라서, 시간 t에 대한 교육은 훈련되지 않은 계층에서 오는 입력에 기반하여 항상 수행됩니다. 그래서, Vanishing Gradient Problem때문에, 네트워크 전체가 제대로 훈련되지 않고 있습니다.


요약하자면, wrec이 작으면 gradient 문제가 소멸되고 wrec이 크면 폭발적으로 gradient 문제가 발생합니다.


Vanishing Gradient Problem의 경우, 네트워크를 더 많이 통과할수록 gradient가 낮아지고 가중치를 훈련하는 것이 더 어려워집니다. 이는 네트워크 전체에 걸친 모든 추가 가중치에 도미노 효과를 줍니다.


그것이 현재의 신경망을 사용하는 데 주된 장애물입니다. 이제 이 문제에 대한 가능한 해결책이 무엇인지 확인해 보겠습니다.




Vanishing Gradient Problem의 해결책

경사가 폭발할 경우 다음을 수행할 수 있습니다.


특정 지점 이후에 역프로파싱을 중지합니다. 이는 일반적으로 모든 가중치가 업데이트되지 않기 때문에 최적이 아닙니다.

Gradient에 패널티를 주거나 인위적으로 줄입니다.

경사도에 최대 한도를 적용합니다.


기울기가 사라지는 경우 다음을 수행할 수 있습니다 : 

Gradient 가 사라질 가능성이 최소화되도록 가중치를 초기화합니다.

Echo State Networks는 소멸되는 Vanishing Gradient Problem를 해결하도록 설계되었습니다.

LSTM(Long Term Memory Network)를 사용합니다.


LSTM은 RNN을 구현하는 데 필요한 네트워크로 간주되며, 다음 기사에서 이 솔루션에 대해 자세히 논의할 예정입니다.

반응형