Search
moon
sun

9_3.4. title: 왜 이해되지 않던 것이 갑자기 이해되기 시작했을까?

생성
엔트리포인트
최종 수정
고유번호 수동 지정
이전 첫 영구메모의
고유번호 결합
🚀 prev note
♻️ next note
🚀 next note
관련 임시노트
고유번호
2 more properties
문득 어떤 강의(참고1) 을 보다가, 갑자기 그 전까지는 정말 막막하고 이해가 되지 않던 동일한 내용이 이해가 되는 것을 느꼈다. 당연히 사람이 어떻게 학습할 수 있을까에 대해서 정말 많이 고민하던 입장에서 이것이 너무 궁금할 수밖에 없었다.❗이게 (참고1) 왜 이제서야 이해되었을까? 이것을 고민하다 보니, 추상화 능력과 러닝커브와도 관련이 있지 않을까? 하는 생각이 들었다. 왜 이렇게 이해가 안되지 하는 답답함이 들 때마다 이 글을 꺼내 보면 좋겠다. 내가 이 내용을 이해할 수 있었던 이유에 대한 길고 긴 해석을 담고 있는 글이다.
전체적으로는 🌍9_3. title: 추상화, 구체화를 하는 이유는 빠른 내용 전달이다. 추상적인 생각을 그 자체로 받아들이면 안되는 이유는 구체화(해석)의 자유성 때문이다. 와 연관이 있고, 왜 어떤 책은 누구에게 좋지만 누구에게 좋지 않은가에 대한 논의와도 연관이 있다 (참고3). 수학의 일반식이 어려운 경험은 한번쯤 있을 것이고, 일반화하면 이론이 복잡해진다는 의견(참고2) 에 대해서 동의하는가?
내가 어떤 강의에서 이해하려고 하는 Transformer 이라는 이론이 있다고 쳐 보자. 이를 이해하기 위해서는 어디부터 완벽히 알아야 할까? seq2seq 라는 것을 알기 위해서는 RNN 이라는 것을 알아야 하고, RNN 을 알기 위해서는 RNN 구조가 돌아가는 방식, 구조 속의 구조, 구조 내 역전파까지... 모두 알아야 한다. 구조 속의 구조를 알기 위해서는 왜 그런 구조가 등장했는지 알아야 한다. DNN 을 이해해야 하고, 그것과 관련된 내용도 모두 학습해야 한다. RNN 의 역전파를 이해하기 위해서는 모든 함수들에 대한 미분연산을 어느정도는 꿰고 있어야 하고, convex 와 non-convex, optimization theory 도 이해하고 있어야 한다. regression 와 같은 확률이론도 이해해야 한다. 이런 연산들이 실제로 어떻게 이루어지는지, 어떻게 더 컴퓨터에서 효율적으로 연산하는지 알기 위해 선형대수학, 주파수 도메인 연산, 컴퓨터구조, 운영체제도 알아야 하고 GPU 와 CPU 같은 프로세서의 차이도 알아야 한다. 언제까지 내려갈 것인가?
왜냐하면 RNN 자체도 추상화된 단위이기 때문에 더 상위의 개념을 이용하기 위해서는 추상화된 개념을 더 구체적인 내용으로 분해하지 말고 일단 그대로 받아들이는 것이 더 빠르다 (📖188p, 추상화가 중요한 이유. "다윈이 참새에 관한 구체적인 관찰내용을 추상화하지 않았다면, 절대 다양한 종에 적용되는 진화의 일반원칙을 발견하지 못했을 것이다." 이 책을 쓴 사람도 개발자일까?). 그리고 아래로 파고 내려가다 보면 위에서 예를 들었듯 지식은 밑바닥이 없다.
🌍9_1. title: 지식에는 절대적인 밑바닥이나 근본이 없다. 가 보여주듯 나는 고등학교 공부조차도 밑바닥에서 시작하는 공부가 아니라는 사실을 깨달았다. 어디가 밑바닥인가? 그냥 RNN 셀 자체를 밑바닥으로 보면 안 되는건가? Seq2Seq 을 이해하기 위해 softmax 레이어에서 overflow 🧠tensorflow 에서는 stop_gradient 는 자신 tensor 그 자체를 return 하며 softmax 의 사례를 들며 그 예시를 보여주고 있다. 그림으로 그리면 (그림) 과 같다. 를 막기 위한 원리와 그 구현법까지 이해하려고 해야 할까? 답은 아니다! 였다.
나는 최근 빠르게 학습할 수 있는 사람을 동경해 오고, 가까이하고 싶어했다 (참고 : ). 빠르게 학습하는 사람 (러닝커브가 높은 사람) 은 다윈이 그랬듯 📖188p, 추상화가 중요한 이유. "다윈이 참새에 관한 구체적인 관찰내용을 추상화하지 않았다면, 절대 다양한 종에 적용되는 진화의 일반원칙을 발견하지 못했을 것이다." 이 책을 쓴 사람도 개발자일까? 추상화를 굉장히 잘 받아들인다. 그렇다면 내가 과거에 했던 이러한 (정리가 잘 돼 있으면 그 부분부터 가는게 맞는 것 아닌가?) 질문 ❗사실 이 부분 (참고1) 은 잘 와닿지 않는다. 정리가 잘 돼 있으면 그 부분부터 가는게 맞는거 아닌가? 이 너무나 당연한 것인데 받아들이지 못하고 있었기 때문에 정말 멍청한 질문이었다는 것을 새삼 깨닫게 된다.
위 내용을 모두 이해했다면, 조금 생각이 빠른 독자라면 라는 결론을 미리 내리게 되었을 수 있다. 하지만, 지식의 특성이 애초에 위에 기술한 바와 같기 때문에 어떤 내용을 설명하기도 까다로울 수밖에 없다. 모든 사람이 지식을 습득하는 방향은 조금씩 달랐기 때문에, 개개인이 정의하는 어떤 개념의 밑바닥은 조금씩 달랐을 것이다. 또한, 설명을 하더라도 어떤 청자를 고려하는지에 따라서 또 달라진다. 가령 이 세미나에서 강연자는 Context vector 이 도대체 무엇인지 한 마디도 꺼내지 않는다. 그 이유는, context vector 가 그 사람과 그 사람이 기대하는 청중의 머릿속에 이미 '당연한 공리' 처럼 있을 것이라고 취급되기 때문이다. 나쁜 것이 절대 아니다. 모든 것을 설명할 수는 없기 때문이다. context vector 이라는 컨셉에 대한 지식이 있는 사람들에게는 너무나도 군더더기없는 설명일 테다. 어떤 유명하고 좋은 강의의 댓글에 감사하다고 이해가 너무 잘 된다고 떠들고 있더라도 나에게 이해가 되지 않을 수 있는 이유가 이것이고, 수강생의 90% 가 수강을 포기했다는 아인슈타인의 대학 강의가 몇몇 수강생들에게 황홀한 강의였을 수 있는 이유가 이것이다.
내가 은연중 bottom-up 공부를 하며 습득한 지식이, 내가 지금 seq2seq 을 transformer 의 밑바닥으로 이해해도 된다는 확신을 주는 데 도움을 주었을 것이다. 또는, 다른 top-down 공부를 하면서 다른 방식으로 습득하게 된 지식이 운 좋게 저기에 끼워맞춰져서 쉽게 이해할 수 있게 된 것. 예를 들어 나는 지금도 저 강연에서 말하는, deep natural language processing (자연어처리, 기계번역) 에서 말하는 context vector 이 무엇을 의미하는 지, 어떤 정보를 담고있는지 잘 모른다. 정말이다. 하지만 나는 deep computer vision (이하 deep CV) 을 조금 더 많이 공부했다. Deep CV 에서 🧠We use the InfoNCE (참고1) /NT-Xent (참고2) /N-pairs (참고3) loss, which can be interpreted in the following way: 1. We treat each image in the batch as if it had its own class. 2. Then, we have two examples (a pair of augmented views) for each "class". 3. Each view's representation is compared to every possible pair's one (for both augmented versions). 4. We use the temperature-scaled cosine similarity of compared representations as logits. 5. Finally, we use categorical cross-entropy as the "classification" loss 같이 괴랄한 것을 top-down 으로 탐구하게 되면서, deep CV 에서 (예를 들어, 🧠training an image classification model with Supervised Contrastive Learning is performed in two phases, (1) Training an encoder to learn to produce vector representations of input images (참고1) such that representations of images in the same class will be more similar compared to representations of images in different classes. (2) Training a classifier on top of the frozen encoder.) 자주 언급되는 representation vector 이라는 컨셉과 context vector 이라는 컨셉이 비슷하지 않을까? 하고 추론할 수 있게 되는 것. 그래서 저 내용이 이해가 되기 시작한 것. 딱 그것 뿐이다.
만약 추상화해서 이해하는 능력이 더욱 뛰어난 사람은, "음, 지금은 잘 모르겠지만 약간 이런 거겠지" 하고 전체 맥락을 모두 이해할 수 있겠지. 그런 능력이 또다시 부러워지는 순간이다.
참고
4.