초심자가 이해하는 LSTM
딥러닝 전문가가 아닌 입장에서 항상 좋은 공부를 하기 위해 노력 중입니다. 이해가 안되면 새로 배우고 이해가 된 것은 더 확장하는 일의 반복입니다. 평생 공부가 적성에 맞으니까 그렇게 힘들지는 않습니다. 그런데, 제가 배운 것을 가르치다보면 학생들이 특히 LSTM이 어렵다는 이야기를 많이 합니다. 내부 작동 원리에 대한 이해가 부족하다보니 실제 LSTM을 응용하기 쉽지 않은 것 같습니다. Keras라는 멋진 도구가 제 힘을 발휘하지 못하는 경우가 많습니다. 위 그림은 Chis Olah의 LSTM 개념도입니다. 어렵죠? 게이트에 익숙한 공학자가 아니면 참으로 난감한 그림입니다. 딥러닝이든 뭐든 계산은 결국 함수니까 함수의 기본으로 돌아가 생각해봅니다. 함수는 입력과 출력을 연결하는 그 무엇(?)입니다. 수학은 모르는 것은 모른채로 놔두고 생각하기 위해 존재하는 도구라고 느낍니다. 그 무엇이 무엇인지는 모르지만 하여튼 입력 -?-> 출력을 만듭니다. 딥러닝의 계산도 입력 -> 출력으로 연결되고 그 함수 내용은 전혀 모르는 것입니다. 그런데, 입력->출력으로 한 번에 이어지지 않고 점진적으로 출력까지 '다가가는' 경우가 있습니다. 예를 들어 여러분 앞에 계단이 있다고 상상합니다. 이 계단은 모두 10개의 단계로 되어 있습니다. 2층에서 1층으로 내려간다고 합시다. 여러분은 선택할 수 있습니다. 한 번에 10개 단계를 뛰어 넘어 1층까지 내려갈 것인지 아니면 한 계단씩 밟아가며 내려갈 것인지. 입력->출력처럼 한 번에 결과를 얻으려면 뛰세요! 다리는 아주 아프겠지만. 현실에서는 한 계단 씩 내려가는 것이 안전합니다. 그런데, 이 경우 몇 번 정도 내려가면 우리가 1층에 도달했다고 말할까요? 가령 2칸 내려간 다음 1층에 도달했다고 말할 수 있을까요? 그렇지는 않습니다. 그러나 앞서 했던 일(2칸 내려가기)을 지속한다면 언젠가는 1층에 도달합니다. 같은 행동을 지속한다는 가정만 있으면 2칸 내려가기는 1층에 도달하...