블랙박스(Blackbox)라고?

소수 (Prime number)가 어떤 규칙을 가지는지, 가장 큰 소수는 얼마인지 등등에 대한 이론 연구를 하는 수학 전공이 있다. 정수론이라고 한다. 수학과 천재들 중에서도 최고들이 도전하는 분야다. 그런 정수론을 자기 평생의 연구 주제로 삼은 장이탕은 베이징대 수학과를 졸업하고, 나이 서른 여섯에 겨우겨우 퍼듀에서 수학 박사 학위 받고나서도 나이 50줄에 들어설 때까지 교수는 커녕 강사자리 하나 못 잡고 마트 캐셔로 살았었다. 그 천재가 쌍둥이 소수 (3과 5, 11과 13등 두 수의 차이가 일정한 소수들의 그룹)가 무한히 존재함을 증명하고, 하버드에서 강연을 한 적이 있었는데, Q&A 시간에 어느 분이 이렇게 질문하더라.

“암호학을 하는 사람 입장에서, 당신의 연구로 앞으로 10년간 암호 체계가 완전히 변할 것 같다는 느낌을 받는다. 그런데 이걸 주변 사람들이 알아듣기 쉽게 설명하기 너무 힘든데, 좀 좋은 아이디어가 있는가?”

보통 사람들은 “그런 2,3,5,7,11 같은 숫자 찾는 것도 연구가 있어?”, “그게 어디 쓰이는거야?”, “그냥 공대 나와서 기계 만드는게 백배 더 효율적인거 아냐?” 라고 할 것이다. 그러나 당신들이 알고 있는 그 공학의 기계 만드는 지식은 모두 수학에 의지하고 있고, 암호학, 슬롯 머신 등등 복잡한 조합으로 기계적인 해독이 불가능하도록 만드는 보안 시스템들은 소수에 규칙이 있다는게 알려지는 순간 원시시대에서 다시 시작해야할 수준으로 어마어마한 지식이다.

참고로, 컴퓨터가 만들어내는 랜덤 데이터는 엄밀히 말하면 랜덤이 아니고 나름대로의 규칙을 따른다. 아니라면 코딩할 때 랜덤 데이터 생성하면서 Seed 정해놓으면 같은 값이 나올 수가 있을까? 이런 약점이 있기 때문에 일본에서는 한동안 동네별 슬롯머신들의 승률 & 패턴을 알아내서 판매하는 잡지도 있었다. (자기들이 실컷 빼먹고 난 다음에 ㅋㅋ) 결국 저런 암호들은 초고난이도의 정수론에 대한 지식을 바탕으로 만들어진다. 기계 만드는 손 기술이 더 인류에게 유용한 지식이라고 판단하시는 분들, 자신만의 세계로 천재들의 연구가 가지는 가치를 함부로 재단하지 말아주셨으면 좋겠다.

아뭏튼, 장이탕 교수님의 그 대답 때문에 아직도 그 날의 Q&A를 생생하게 기억하고 있다.

“사람들은 모르는 이야기를 듣고 이해를 못 하면 자신의 부족함을 탓하는게 아니라, 화를 내더라. 설명하지 않는 걸 추천한다.”

문자로 옮겨놓으니 굉장히 거만해보이는데, 정작 강연 당일은 농담조의, 그렇지만 평생의 연구를 이해 못 해주는 사람들 속에서 좌절했던 천재 수학자의 비애가 느껴지는 말투였었다.

요즘 외부 미팅을 많이 하면서, Neural net 모델을 블랙박스 (Blackbox)라고 주장하는 사람들과 자주 부딪히게 된다. 그런 미팅을 하고 있으면 속이 답답해진다.

“블랙박스란 없습니다. 어떻게 계산되는지 모른다는건 자기가 몰라서 그런거에요. Neural net이 결국은 Logit을 여러개 엮어놓은건데, Logit이 학부시절 배우셨을 회귀분석 식이랑 생긴 형태가 같습니다. 곱하기 계산을 따라가기만하면 다 알 수 있는데, 자기들이 잘 모르는걸 감춘다고 블랙박스라는거에요.”

이런 대화를 할 때, 자기가 잘 몰랐다는 걸 인정하고 물러서는게 아니라, “이건 어떤 학교 교수가 이야기한 내용이다, 너는 교수 아니지 않냐”는 반응부터 시작해서 “나는 무조건 맞다”, “니가 좀 안다고 자랑하는거냐?”는 식의 불편한 표정을 만나게 되면 답답함^2이 된다.

네X버 어느 만화의 댓글을 봤더니 “상대에게 아무리 전달해줘도 변할 가능성이 없으면 더 이상 인생과 감정을 소모하지 않는게 현명하다”고 하던데, 그 장이탕 교수님의 비애 섞인 답변과 오버랩이 퐉~ 되더라. (정작 블랙박스 아니라는 설명은 쌍둥이 소수 무한개 증명과는 비교도 안 될만큼 쉬운 이야기인데도…)

 

1. 블랙박스 vs. 화이트박스

수업 시간에 설명용으로 쓰는 슬라이드 중 하나를 가져와 봤다.

복잡한 줄 알았던 Neural network 계산이 사실은 Logistic regression 몇 개의 결합에 불과하다는 걸 보여주는 슬라이드다. 물론 Neural net을 구성하는 구조, 이걸 응용하는 방식에 따라 다양한 종류의 variation이 생기겠지만, 어쨌건 원리는 크게 변하지 않는다.

수업을 들으신 분들은 알겠지만, 저런 계산 구조를 지탱하기 위해서 어떤 방식으로 컴퓨팅 자원을 활용하고, 계산 효율화를 위해서 어떻게 구조를 수정하는지, 계산 목적에 따라 어떤 타입의 네트워크를 고르는지는 단순한 지식도 아니고, 듣는다고 바로 이해하기도 어렵다는 걸 충분히 공감한다. 하지만, 큰 그림을 하나씩 쪼개보면 Logistic regression 이라는게 눈에 보이고, 그 Logistic regression이 학부 고학년 때 봤을 (쪼끔) 고급 통계학 수업에서 봤던 Linear regression의 응용 버젼인 걸 감안하면, 이걸 블랙박스라고 이야기하는 사람들은 정말 깊이 반성해야한다.

이런 글을 읽고서도 여전히 블랙박스라고 우긴다면, 진짜 “문과” or “코더”라서 저런 Regression을 한번도 해본적이 없거나, 아니면 학부 때 공부를 안 했던 걸 스스로 인증샷 날리는 것 아닌가?

지금도 블랙박스라고 우기고 계신 어느 학교의 교수님, 제가 미팅에서 만났던 어느 개발자가 봤다는 그 글을 쓰신 그 교수님, 지금이라도 글을 내려서 더 이상 쪽팔리는 일이 없으셨으면 좋겠습니다. 당신께서 학부 고학년도 이해할만한 내용도 모르고 쓰신 글 때문에, 연구하느라 고생하는 박사 시절 친구들이 도매금으로 싸잡혀서 무시당하는 걸 보기가 너무 안타깝습니다.

 

2. 연구과제

데이터 사이언스 강의에 학교 연구실에 있다는 학생들이 자주 찾아온다. 박사 연구생부터 석사 들어가서 연구 주제 찾고 있다는 학생, 심지어는 학부 고학년들도 심심찮게 보인다. 이 분들이 학교에서 다들 배우셔야되는 내용일텐데, 왜 외부에서 수업을 들어야겠다는 생각을 하게 되셨을까?

저 위에서 필자가 “깠던” 그 교수님이 특이한 케이스가 아니기 때문이라고 조심스레 짐작해본다.

건축물의 안전성 점검을 지진 측정하듯이 S파, P파 같은거 쏴서 테스트하는게 아니라, 저렴한 센서 몇 개만 설치하고 그 센서들의 정보를 머신러닝으로 처리해서 안전도 여부를 평가할 수 있다며 프로젝트를 땄던 어느 교수님 이야기를 들었다. (학생 당사자 분의 개인 정보 보호를 위해 적용 분야를 약간 바꾸었으니 양해바랍니다. 사실 이런 케이스가 벌써 여러 건 있어서 적용 분야를 바꾸면 자기 이야기처럼 들릴 수강생 분이 많을 것 같기는 하지만…)

  • 처음 수업에 왔을 때만해도, “교수님이 여기서 TensorFlow 쓰는 법 배워와서 적용하라고 하셔서요” 라던 수강생분.
  • 첫 주가 지나고 나니 “그럼 무슨 모델을 쓰는게 좋은건가요? 꼭 딥러닝 안 써도 될 수도 있겠네요?” 라고 질문이 바뀌고
  • 둘째 주가 지나고 나니 “모델을 어떤 걸 쓰느냐가 중요한게 아니네요, 데이터를 어떻게 처리하느냐가 훨씬 더 중요하네요”가 되고,
  • 셋째 주가 지나고 나니 “데이터 전처리가 어떤 모델을 쓰느냐랑 연관되어 있네요, 근데 데이터는 센서를 어디에 설치하느냐로 받는데….”
  • 넷째 주가 지나고 나니 “센서 위치, 데이터 처리, 모델 선정이 전부 다 도메인 지식이 필수인거 같은데, 이건 교수님께 여쭤봐야겠죠?”

수업 끝나고 한 달 쯤 지나고 난 다음에, 뭘해야할지 전혀 감이 잡히질 않는데, 교수님께서 하나도 안 도와주시고, 물어봐도 모르시는거 같고, 메일로 쓰기도 힘들어서 직접 찾아왔다고 연거푸 죄송하다는 말을 하더라. 진짜 안타까워서 아는 만큼 도와줬는데, 필자도 그 분의 전공 분야 지식 없이 데이터 모델링만 하는 사람이라 직접적인 도움이 될 수는 없었다.

왜 이런 이야기를 하느냐?

학교 교수님들이 “머신러닝”이라는 Buzzword를 이용해서 프로젝트를 따지만 정작 본인은 잘 모르는 상태인 경우가 많다는 것도 알고, 수업은 공부하다가 가르치는 상황이고, 그 공부도 통계학 깊이가 얕다보니 제대로 안 된 상태에서 학생들을 방황하게 만드는 경우가 많다는 걸 계속 목격하고 있기 때문이다.

블랙박스라고 언급하는 어느 교수의 글을 봤다는 그 분이 필자에게 우기기를 시전한건, 이런 관점에서 봤을 때 그렇게 놀랄만한 일도 아니다. 지식으로 사람들을 선도해야하는 자리에 계시는 분들이 알지도 못하고 블랙박스라니.

 

나가며 – 사상누각

단순히 데이터로 그래프 그려놓고 “빅데이터 분석”이라고 이름을 다는 신문기사가 은근히 많다. 언젠가 썼던 글처럼 빅데이터가 뭔지에 대한 정의조차도 모르는 상태에서 일단 잘 팔리니까 앞에 “빅”이라는 단어를 붙이고 보는걸로 밖에 안 보인다.

블랙박스라고 우기는 분들도 마찬가지다. 일단 딥러닝이라는 단어, 인공지능이라는 단어가 Buzzword니까, 그런 단어를 이용해서 세일즈를 하지만, 정작 이 계산을 잘 모르니까 그냥 모르는 건 블랙박스라고 퉁치자고 접근하는 것 같다.

친구들과 술자리에서 그런 분들을 “오스트랄로피테쿠스”라고 부른다. 무시하는 격한 표현에 기분 나쁘신가?

“사람들은 모르는 이야기를 듣고 이해를 못 하면 자신의 부족함을 탓하는게 아니라, 화를 내더라. 설명하지 않는 걸 추천한다.”

무시당하고 싶지 않으면 셋(넷) 중 하나를 해야한다.

  • 아는 체를 하지 말거나,
  • 몰랐던 티가 안 나도록 빨리 배우거나,
  • 최소한 모르는 걸 부끄러워 하거나
  • (잘 알고 있는 사람들 눈에 안 띄거나)

단순 이미지 인식, 문자 인식 예제 같은 정형화된 데이터들 말고, 정말 Live 데이터로 모델 만들어보고, 뭔가 부족한 것 같아서 이것저것 고민해본 사람들이라면 누구나 공감할 것이라고 생각한다. 화려해보이는 모델들을 많이 아는게 중요한게 아니라, 통계학이라는 기초 체력이 훨씬 더 중요하다는 걸. 아마 저 위에 나오는 스토리들에 등장하는 공학 교수님들의 문제의 근본 원인은 통계학이라는 기초 체력의 부족일 것이다. Neural net에 Boltzman을 어떻게 활용해서, 계산 알고리즘에 어떤 Monte Carlo를 더 추가해서, 어떤 이미지 인식에서 몇 %의 추가적인 성과를 얻어냈다고 이야기하는 논문을 정리하는 블로깅을 하는게 아니라, 계속해서 수리통계학적인 관점을 강조하는 블로깅을 하는 이유도 여기에 있다. 어차피 기초가 없는 대형 건물은 사상누각에 불과하니까.

아래는 어딘가에서 본 댓글인데, 블랙박스 정도의 하찮은 지식과 급은 다른 이야기지만 어쨌건 이 글 주제랑 참 닮은 것 같아서 긁어왔다. (참고로 필자의 네X버 아이디는 p로 시작하지 않는다. 오해 ㄴㄴ)

 

You may also like...

23 Responses

  1. kjw1oo 댓글:

    신경망이 블랙박스라는건 근본이 회귀분석인게 문제인 것이 아니라..
    그 회귀분석들이 엮이면서 층이 만들어지고 비선형화를 거치면서 또 다른 층과 다시 엮이면서 신경망 모델이 만들어 지는데 그 안에 존재하는 수십, 수백만의 weight들을 전부 추적하여 의미를 찾거나 부여하기 어렵기 때문에 블랙박스라고 하는거 아닌가요?
    블랙박스가 아니라고 한다면 회귀분석과 같이 어느 정도 분석이 가능해야 하지 않을까 생각합니다.
    예를 들어 흔히 말하는 블랙 박스가 아니라고 한다면 정확하다고 단정하여 말할 수 없지만 Tree model은 entropy 감소율로 설명이 가능하고, 회귀분석을 포함해서 L1, L2 규제를 각각 사용하는 LASSO, RIDGE, Elastic Net 3형제도 feature weights들을 보고 feature selection을 하는 등의 활용이 가능하고, SVM은 커널로 설명할 수 있죠.
    하지만 복잡하게 얽혀있는 신경망 모델의 weight들이나 모델 내에서의 어떤 값으로부터 실제로 어떠한 의미를 추출할 수 있는지 여쭙고 싶습니다.
    만약 회귀분석 하듯이 신경망 weight들에서 p value부터 시작하는 온갖 통계량 및 의미를 추출가능하다면 정말 좋긴 하겠네요 ㅠ

    • Keith 댓글:

      Factor Analysis가 Autoencoder 모델의 Regression 버젼이라고 생각하면 제 논리를 따라오기 쉬울겁니다.
      FA가 하는 작업이 Latent variable을 찾는 작업이라고 하지만, 사실은 입력 변수에 가중치를 주는 신규 변수 A, B, C, D…를 찾아내는 작업이지 않습니까?
      1개 stage 밖에 없는 상황이라 쉽게 Latent variable들에 들어가는 가중치를 추적할 수 있어서 블랙박스라는 이야기를 안 하는 걸 껍니다.
      Autoencoder도 병목 전에 Hidden layer의 숫자가 1개, 병목 후에도 1개 있는 간단한 Toy 모델이라고 치면, 최초 입력 변수가 어떤 가중치를 받아서 Hidden layer 1번에 투입되고, 그 값이 병목에 있는 (사실상의) Latent variable에 어떤 가중치로 입력되고 있는지 추적할 수가 있습니다.

      물론 Hidden layer의 숫자가 굉장히 많아지면 추적이 어려워지는건 사실입니다만, 입력변수가 N개일때 N차원 공간의 어떤 구역을 Hidden layer에서 활용하고 있는지를 그래프로 그려놓고 나면,
      공간의 연쇄 (첫번째 N차원 공간의 특정 좌표 범위 -> 그 좌표 범위를 새로운 Vector space로 표현 -> 새 공간에서 다시 특정 좌표 범위….)로 설명할 수 있습니다.
      우주 공간 비유로 설명하면, 우리 은하라는 좌표를 잡고, 그걸 확대해서 은하 전체를 새로운 공간으로 설정한 다음, 그 중 태양계라는 좌표를 잡고, 다시 태양계를 새 공간으로 설정한 다음, 지구라는 좌표를 잡고…. 가 되는거죠.
      CNN을 예로 들자면, 집중하는 좌표의 범위가 좁혀질수록 지구형 행성, 지구인이 살 수 있는 행성이 꼭 우리은하, 태양계, 지구만 있는게 아니니까, 여러개의 집중 좌표들이 생겨날 겁니다. 우리은하 다음은 태양계와 켄타우루스, 태양계에서는 지구와 금성/화성, 켄타우루스에서는 켄타우루스a와 b, 지구에서는 온대, 냉대 기후지역, 화성에서는 물이 있는 남/북극 등등으로 연결되는 공간의 연쇄가, 얼굴 인식하는 CNN 모듈에서 눈썹, 눈, 코, 입, 턱선 좌표를 hidden layer 1에서 집중 좌표로 잡고, hidden layer 2에서는 눈의 눈동자 색상, 동공의 크기를 보고, 코에서는 콧대의 높이, 콧구멍의 위치 등등을 보는거라고 생각하면 될 것 같습니다.

      FA 작업을 k 단계에 걸쳐서 반복하는 작업이라는 점, 우리은하 -> 지구의 온대 기후 지역으로 흘러오는 공간의 연쇄로 이해하면 신경망 모델의 weight들이 어떤 방식으로 작동하고 있는지, 그래서 dropout을 어떤 지점에서 하는게 유용한지, boltzman 스타일로 stochasticity를 모델에 넣을 때 어느 hidden layer에서 더 유용할지를 모두 직관적으로 골라볼 수 있게 됩니다.

      • kjw1oo 댓글:

        사실 어느 hidden layer가 유용한지는 학습 중 weight들의 histogram을 살펴봐도 어느정도 알 수 있죠.

        제가 말하고 싶은 것은 어떤 신경망을 통해 우수한 결과가 나왔다고 했을 때, 어떤 feature가 제일 설명력이 좋더라.. 라는 이야기를 하는게 어렵다는 겁니다.
        예를 들어 제가 진행했던 프로젝트 중에 주식 예측 신경망이 있었습니다. (예시입니다. 실제로는 좀 더 현실적인 거였어요 ㅋ..) 정말 운이 좋아서 잘 예측했고 내일 주식이 오를 것이라고 예측 결과가 나왔습니다. 그런데 어떤 feature를 주로 사용해 이 결과를 얻어냈는지 알 수가 없다는 겁니다. 레이어를 따라 가중하며 탐색해 나가더라도 그게 의미를 가지는지는.. question mark입니다. 적어도 제가 했을 때는 유의미한 결과를 얻지 못했고, 이러한 방식으로 feature selection한 결과를 실제로 운용하시는 분들한테 가져가니, 이 주식을 예측하는데 이러한 feature가 중요하다는 것은 말도 안되는 결과라고 일축하셨던 기억이 있네요. 그나마 이건 일반 DNN이라 추적을 시도해봤었는데 LSTM같은 재귀성을 가지는 경우에는 추적자체가 쉽지 않더군요.
        또한 hyperparameter 조정 측면에서도 설명하기 어려운 부분이 있습니다. 예를들어 SVM을 사용할 때 Gamma, Degree 등의 hyperparameter는 그 의미가 명확하고, 조정했을 때 어떠한 결과가 나올지 쉽게 예상이 가능합니다. 그러나 신경망에서 주로 조정하는 batch_size, learning_rate, regularization_ratio, hidden_units, hidden_layers, dropout_keep_prob, 특정 모델에서는 더 무수히 많은 parameter가 존재하는데 input마다, label마다, 모델마다 다 다르고, 왜 특정 hyper parameter 조합에서 잘 작동하는지 명쾌하게 설명할 수가 없고, 평가 결과 보고 복잡도, 과적합 여부 등을 보면서 조정하긴 하지만, 결국에는 감에 의존하거나 trial and error가 대부분입니다. (심지어 논문들도 trial and error로 실험에 사용할 파라미터를 정했다라는 표현이 적지 않고요 ㅡㅡ..)
        CNN 모듈이 feature extraction을 하는 방식은 보통 첫번째에서 전체적인 윤곽(= 패턴이 가장 강한 부분)을 잡고, 그 다음 layer부터 세세한 부분을 보아 가는 것의 시각화는 제가 기억하기로 중간 layer들 마다 Deconvolutional layer를 재구축하여 시각화에 성공했다고 알고 있습니다. 하지만 최신 모델들을 보면 CNN을 100층 이상 쌓는 추세이기에 ..ㅡㅡ..
        그런데 그게 잘되는 이유를 명쾌하게 설명한 것은 그 모델을 제시한 당사자조차 그렇지 못하더군요. 예를 들어 resnet같은 경우 Residual connection을 통해서 gradient vanishing을 줄이면서도 층을 깊게 쌓을 수 있게 되고 특징을 많이 얻을 수 있게 됬다는 것이 주요 포인트인데 해당 논문 보시면 알겠지만 확신을 하는 표현이 없습니다. 거의 experiment, trial and error 로 만들어져 있어요.
        autoencoder, 특히 RBM같은 경우에는 추적하기 어느정도 가능하긴 하지만 여전히 신경망이 어떠한 feature를 유용하게 사용해서 결과를 냈는지 깔끔하게 설명이 안된다고 봅니다. 그렇기 때문에 interpretable neural network 분야가 따로 만들어질 만큼 연구주제가 된다고 생각합니다. Bayesian approach나 attention기법 등 다양한 기법을 통해 시도되고 있죠
        잡소리가 많았는데 신경망이 아직은 블랙박스 모델이라고 생각하는 사람으로써 생각을 적어 보았습니다. 아직은 더 연구가 필요하고 흥미로운 연구주제라고 생각합니다.
        시간이 지나서 모델이 더 복잡해져서 더 해석불능이 될지, 아니면 모든게 설명가능하게 될지 궁금하네요 ㅎㅎ..

        • Keith 댓글:

          어느 Hidden layer가 유용한지에 대한 답변을 써 놓은게 아닙니다.
          제 답변이 적절하게 전달되었다는 느낌이 안 들어서 안타깝네요.
          입력 변수 x1, x2, x3…. 중 어떤 변수가 가장 중요하다는게 포인트가 아니라, 그 변수들 뒤에 숨어있는 latent variable을 활용하는데, 그걸 한번만 latent 작업을 하는게 FA, 여러번 작업하는게 Neural net이라고 설명해놨습니다. 당연히 최초 입력변수들 중 어떤 변수에 가중치가 많았다는 이야기를 할 수 있습니다. 문제는 가중치를 곱하는데만 집중하다가 latent variable이라는게 무슨 뜻인지를 놓치는 경우가 많은데 있는거죠. 글에 예시들었던대로, 중간고사 20과목 시험 점수 중 대학 입시에 가장 결정적인 시험 과목 점수는 꼭 국, 영, 수가 아닐 수 있습니다. latent variable 중 체력 or 근성이 가장 중요한 변수였다면, 근성에 가장 큰 영향을 받는 벼락치기 암기 과목들이 대학 입시의 결정적인 factor 인 것처럼 나올 수 있어요.
          굳이 Blackbox라고 부르겠다면, latent variable들에게 이름을 붙이기가 애매모호하다고 하면 이해하고 받아들입니다. Domain knowledge 없이 선뜻 특정 latent variable에 이름을 달기는 어려우니까요. 대신 뭐가 어떻게 돌아가는지 몰라서 blackbox라고 하면 받아들이지 못하겠다는 말을 하고 있는겁니다.

          모델 저자가 왜 그런 모델이 잘 돌아가는지 설명 못하는건 그 분이 scientist가 아니라 engineer이기 때문이겠죠. CNN에서 layer를 100층씩 쌓았는데 중간에 dropout을 안 쓸리는 없을 것이고, dropout을 언제, 어떻게 쓰는게 더 좋을지에 대한 thought experiment는 activation function을 뭘 쓰는지, latent variable들을 layer마다 몇 개씩 쓰고 있는지 등으로 얼마든지 해 볼 수 있습니다. experiment, trial and error가 들어갈 수 밖에 없는 computational stat 모델들의 명백한 한계는 공부하던 시절부터 지금까지 한번도 부인한 적이 없습니다만, 무작정 layer를 추가하는건 아니라는 점, blackbox가 아니라 논리적인 빌드업이 있다는 점은 꼭 강조하고 싶습니다.

          참고로 어떤 수학 모델을 현실 데이터에 적용하는 작업을 Calibration이라고 부릅니다. 실제 데이터에서 나오는 수치를 이용해서 파라미터를 보정하는 겁니다. 꼭 머신러닝이 아니라 computational approach를 하는 모든 분야에서 실제 데이터를 이용한 파라미터 보정은 흔한 일입니다. 수학적으로 만들어낸 모델이 현실을 100% 담아내는게 아닌 Toy model일 수 밖에 없기 때문에, 놓친 부분에서 발생하는 요소들을 모델 내재화하기 위해서 타협을 하는거에요. Trial and error는 데이터 작업에서 지극히 당연한 일입니다.

          전반적으로, kjw1oo님의 댓글에서 기존의 공대 출신들, 학부 이상의 수학과 통계학 공부를 안 하신 분들에게서 봤던 한계가 느껴집니다. Neural net의 모양에 따라 여러 이름이 붙어 있습니다만, 원리가 모두 Factor Analysis라는 점, 중첩 구조가 Tree 모델이라는 점을 이해하고 들어가면 그 어떤 모델도 Blackbox일 수 없습니다. LSTM 처럼 재입력이 발생하는 모델이 아무리 구조가 복잡해도 원리는 다 똑같아요. 그리고 금융 시장의 어떤 데이터를 설명하는 신경망 모델을 만들었는데 잘 맞았다고 주장하시는지는 모르겠습니다만, 그런 예시를 드는 것 자체가 랜덤 데이터의 성격에 대한 이해가 부족하기 때문이지 아닐까 싶습니다. 비판조에 답변 들으시는 분이 기분 나쁘실 수 있다는 점 이해합니다만, 대답하는 저 역시 답을 쓰면서 가슴이 답답해집니다.

          • kjw1oo 댓글:

            금융모델에 대해서는 진짜 무조건 그렇게 말하실거 같아서 일부러 주석까지 달았는데 전달되지 않은 건지 일부러 그러신건지는 모르겠지만 당연히 그런 비현실적인 것은 아닙니다 ㅎㅎㅎㅎ
            비판이 문제신게 아니라 핀트가 좀 어긋나고 있어요. 진짜 이해를 못하신건지 이해를 안하시는 건지..
            모델자체가 블랙박스라는 의미는 당연히 각 parameter의 의미와 중간에 나오는 embedding latent variable 얘기라고 생각하면서 썼는데 여기서부터도 이미 많이 핀트가 어긋나고 있음을 느낍니다. 그리고 특정 domain이 있다고 latent variable을 완전히 해석할 수 있는 건 아니라고 봅니다. 실제로 해석하기가 어려운 이 embedding vector를 통해 뭔가를 해보려는 노력이 많이 있구요.
            resnet 논문을 읽어보시지 않으셨군요.. 나름 이미지 인식 모델의 큰 발자취를 남긴 모델인데 시간나시면 한번 읽어보시길 바랍니다. 논문에서는 기본적으로 dropout 안썼습니다. 그러면서도 기존 VGG보다 좋은 성능을 보여줬지요. 아마 나중에는 기본적으로 사용하긴 했을 겁니다. 저도 무작정 layer를 추가하는 것이 좋다고 생각한적은 없습니다만 실제로 좋은 결과가 나오기 때문에 시도한게 아닌가 싶네요.
            Trial and error 가 잘못되었다고 말한적 없는 것같은데 그렇게 해석하신 것도 안타까운 부분이군요.. 애초에 가설이 있으면 당연히 실험이 있고 실험이 있으면 Trial and error는 당연한거구요.. 여기서 포인트는 다른 논리적인 설명이 가능한 부분이 없다는게 포인트였습니다..
            black box라는 것의 범위가 제 생각과 많이 다른것 같습니다. 정말 input과 output만 있어야지 black box라고 생각하시는 걸로 보이는데 저는 애매한 부분이 많다면 black box라고 생각하고 말한것입니다.
            참 대답하시는걸 이해를 다하면서도 이리도 대화가 안되는게 답답하긴 하네요.
            Black box라고 주장하시는걸 제가 black box인거 같다고 하시는게 기분 나쁘실 수 있다는 점 이해합니다. 저 역시 글을 쓰면서 가슴이 답답해지네요

          • Keith 댓글:

            지적해주신 덕분에 ResNet이나 DenseNet 같은 모델들을 잘 몰랐던 부분이 있나 싶어서 다시 한번 봤습니다. 일종의 LSTM 스타일로 layer 몇 개를 휙휙 건너뛰도록 설계해서 variable 수준의 dropout을 피하도록, layer 단위의 dropout을 실행하는 모델로 알고 있었는데, 주먹구구식 dropout을 안 하는게 장점이라고 모델 설명을 해 놨네요. 앞으로 설명할 때 주의하도록 하겠습니다. 좋은 지적 감사합니다.

            embedding latent variable 이라는 표현은 제가 익숙칠 않은데 latent variable을 embedding 한다는게 무슨 뜻인지 여쭤봐도 될까요? Factor Analysis를 바탕으로 Latent variable을 찾아내는 작업이 Neural net의 기본형이라는 제 관점을 이해하고 있는데 선뜻 Blackbox라는 표현을 쓸 수 있는지 저는 잘 모르겠습니다. Blackbox의 정의가 다르다면 어쩌겠습니까만, 적어도 제가 만나는 기업체 분들이 Blackbox라는 표현을 쓸 때는 “뭐 하는지 하나도 모르니까”라는 내용을 축약한 영어 표현이거든요.

            논리적인 설명이 어디까지 가능한지에 대한 생각도 저랑 많이 다른 것 같습니다. 저는 activation function이나 layer당 variable의 숫자에 함축된 latent variable에 대한 추론 같은 걸로 꽤나 논리적인 설명이 가능하다고 주장하고 있고, 그 때문에 더더욱 Blackbox라는 표현이 거북합니다. 아마 kjw1oo님은 수학적으로 딱 떨어지는 설명이 더 필요하다고 생각하시는가 보네요. 결국 이것도 Blackbox라는 용어에 대한 다른 정의를 갖고 있기 때문이지 않을까 싶기는 합니다.

            아뭏튼 본인의 시선을 담은 댓글에 감사드립니다. 저는 이런 댓글이 많이 달리는 블로그 주인이 되고 싶습니다 ^^

          • kjw1oo 댓글:

            아 그리고 금융모델 그건 애초에 회사에서 준 주식 예측보다는 현실적이지만 기본적으로 (제가 생각하기에는) 불가능한 미션이었고 힘들것 같다고 했는데 회사에서 하라그래서 했을 뿐 다른 이유는 없습니다. 결과도 그냥 그저그렇게 나왔고 결과 분석하는 과정에서 나온 부분을 이야기 한 부분입니다. 이 부분 태클 들어올거같아서 신경써서 실제로는 random work 예측이 아니라고 어필하면서 썼는데 딱 노리시네요 ㅠ

          • Keith 댓글:

            random walk에 대한 관점은 둘째문제고, neural net 으로 그 문제에 도전했다는 말씀이 더 거북했었습니다. neural net이 필요한 분야는 데이터에 uncertainty가 없는 이미지 인식, 언어 처리 같은 부분이라고 생각하거든요. 그래서 제가 더더욱 neural net 기반의 모델들에 관심이 없기도 하구요.

          • kjw1oo 댓글:

            정확히는 중간에 신경망 중간 중간나오는 결과물이 latent variable이라고도 하고 embedding 되서 나온 vector라고 해서 embedding vector라고도 하고 latent representation이라고 하는데 다 똑같은 말이지만 제가 섞어 쓴거네요. 더 정확히 나아간다면 factor analysis 관점에서는 latent variable이라고 표현하는 경우가 많죠. embedding vector는 특정 신경망을 거쳐 나온 (embedding)된 결과물을 말합니다. 최근에는 NLP에서 주로 사용하는 용어가 됬죠.
            쩃든 결국에는 같은 말인데 사용하는 용도에 따라 다른 경우네요. 층 사이 embedding vector에서 의미를 끌어내는 작업은 다양하게 있어 왔지만 autoencoder, 특히 VAE 말고는 그렇게까지 인상적인 것은 아직 본적이 없네요. 혹시 그런 사례 알고계신다면 공유 부탁드립니다.
            기업체분들이 블랙박스라고 주장하시는건 들어보니 그거긴 하네요.
            ‘어 그거 블랙박스라던데? 공부안해도 되겠네?’ 라는 마인드 같긴 하네요. 그렇게 생각하니까 심하게 거부감 들만 하네요 ㅋㅋㅋㅋㅋ 이건 생각도 못했네요. 회사들어와서 실제로 블랙박스라고 하고 관심은 많이 가지시는 것 같은데 아무도 제대로 공부하시는 분이 없긴 합니다. 금융 공학하시는분들 조차도….
            네 keith님께서 말씀하신데로 제 기준에서는 수학적으로 설명이 딱딱 되야 블랙박스라고 생각했는데 그게 사람들이 무지한 핑계가 된다면 확실히 지양해야할 부분이긴 하네요.

  2. emily 댓글:

    kjw1oo님 🙂
    좋은 질문 해주셔서~ 감사해요.
    두 분 댓글 보면서 저도 많이 배우고 있어요 ^^

    그렇지만, kjw1oo님글에서 글쓴이(논문저자시겠죠?)가 ‘잘 되는 이유를 명쾌하게 설명한 것은 그 모델을 제시한 당사자도 모른다’는 표현이 뭔가 학자답지(?)않아서 슬펐네요.
    -> 제가 아직 깊게 공부해보지 못했고, 또 해당 모델을 직접 구현해보지 않아서 그런 거겠죠? ^^;;

    에공, 아직은 더 많은 연구가 필요한 분야구나 수준에서 두 분 말씀해주신 내용정리하면서 주말에 관련 논문 찾아보려고 합니다.

    정말 저는 kjw1oo님과 같은 분들이 달아주시는 댓글을 너무너무 사랑합니다♡
    여기 강의 들으실 계획있으시면, 꼭 같이 들을 수 있었으면 해요.
    (->혹시 뵙게 되면, 저도 제 분야 준비하고 있는 거 꼭꼭 들려드릴게요!모델링 하신 거 주식 좋아하진 않지만;; 굉장히 궁금한데요?)

  3. han 댓글:

    딥뉴럴넷에 데이터 때려 집어넣으면 뭐든지 잘나온다. 내부구조는 모르겠고, 알아서 잘나온다, 하지만 왜 잘나오는지 모른다 그러니 블랙박스 모델이다 –> 노답인간

    그냥 logistic regression들의 결합일뿐이다. 블랙박스가 아니다

    각 레이어 마다 생기는 weight들이 서로 얽혀있어서 각각이 어떤의미를 가진지 추적하기 어렵고, 어떤 feature가 유용한지 뽑아내기 어렵다. 그래서 블랙박스다.

    전 맨위 같은 사람들빼고 두분 다 맞는말 같습니다. 블랙박스를 바라보는 관점이다를뿐..

    생각도 정리되고 많이 배워 갑니다. 항상 좋은글 감사합니다^^

    • 지나가던버섯 댓글:

      지나가다가…… 저도 han님 댓글에 공감합니다. Black box를 어떻게 정의하느냐의 차이일 뿐, 두분의 말씀이 다 일릴가 있다고 여겨지네요. 물론 글 본문에서 말씀하신 그런 ‘블랙박스’ 언급은 당연히 노답이라고 생각합니다..

  4. 안녕하세요 댓글:

    블랙박스의 정의부터 하고 나서의 토론이 되어야 하겠네요..

    • Keith 댓글:

      글쎄요. 아무리 생각해봐도 윗 댓글 다신분들이 딥러닝을 제대로 배웠다는 생각이 들질 않습니다. 기껏해야 중첩된 Layer 계산에 불과한데, 계산식도 다 쓸 수 있어서 그걸로 방정식도 만들고, 방정식 바탕으로 TensorFlow, H2O, MXNet 같은 계산 툴도 나오는 마당인데, 왜 이걸 수학식으로 엄밀하게 Define할 수가 없다고 하는지 납득이 안 됩니다. 각각의 Layer를 더 추가하는 부분에 대해서는 모든 Non-parametric model들이 그렇듯이 직관적인 설명을 비켜갈 수는 없겠지만, 어쨌건 Non-parametric model들도 엄연히 통계학 대학원에서 다루는 학문의 일부입니다. 통계학 대학원 수업 여러개에서 Non-parametric model들을 만났습니다만, 절 가르쳤던 그 어떤 교수님도 Blackbox라는 용어를 쓰진 않았습니다. 언제나 수식은 직관을 표현하기 위한 도구고, 계산은 그 직관을 추상의 단계에서 끄집어 내리는 작업에 불과한데요.

  5. tro 댓글:

    kjw1oo님과 같은생각입니다 “그 회귀분석들이 엮이면서 층이 만들어지고 비선형화를 거치면서 또 다른 층과 다시 엮이면서 신경망 모델이 만들어 지는데 그 안에 존재하는 수십, 수백만의 weight들을 전부 추적하여 의미를 찾거나 부여하기 어렵기 때문에 블랙박스라고 하는거 아닌가요?”라고 첫댓글에 쓰셨는데 많이 공감되는 부분입니다
    이미지인식만 보더라도 개고양이 구별하는 걸 보더라도 어느 은닉층의 노드에서 이것이 무엇의 역활을 지니는가 가중치의 높고 낮음의 결과를 보는게 중요한게 아니라 그 수치가 이미지에서 어느 위치 어떤 부위의 특징점을 유사하게 보았고 어떤 패턴을 유사한걸로 보고있는지에 대한 의미를 파악할수 없음에 그 부분을 알수 없어서 블랙박스라고 표현하는 것이죠 그 이 이미지 구분에 있어서 어느 특징점 영역을 구분하는것이고 어느 패턴으로 구분하고있는지에대한 설명을 할수가없습니다
    전체 윤곽에서 다음 layer부터 세세한 부분을 보아 가는 것에서 의미를 두는것만 대략 파악될뿐 이 가중치가 어느 부분을 말하는건지 정확히 알수없는데 무엇을 설명한다는것인가요
    구조적으로 전체 닮은 패턴 영역-> 그 영역속에 비슷한 특징점을 찾아가는 구조의 이해는 누구나 알고 있는것입니다 중요한건 그 가중치들이 정확히 어떤 부분의 위치에서 중요한 패턴으로 보고있고 계산되고 있는지에대한 정보파악은 알수없는게 현실입니다

    • Keith 댓글:

      Pooling 계산을 직접해보고, 그 때 쓰는 Filter (or Sliding window)들을 바꿔서 써 보신적 있으신가요? 저는 해 봤습니다. 제 수업시간에도 보여줘요. Filter들을 바꿔쓰면 이미지의 윤곽만 남기는 부분이 달라지거든요. 이게 그래픽 툴들에서 이미지 처리할 때 쓰는 필터와 같은 겁니다. 결국 이미지 필터 중 하나를 이용해서 CNN이 이미지 인식을 하는데 활용하고, 그래픽 툴들이랑 다른 점은 Pooling되었던 정보를 다시 원래 이미지로 복구시키면서 어떤 필터를 써서 윤곽의 어느 부분을 남길지 결정하는게 아니라, 그 해당 이미지가 어떤 동물인지, 어떤 사람인지 맞추기 위해 Pooling되었던 값들을 비교하는 것 아닌가요? 모든 Weight들을 손으로 계산하는게 시간낭비니까 계산 기계에게 맡기는거지, 인간이 계산을 못하는게 아닙니다. 자세한 내용을 블로그에 모두 쓸 수는 없습니다만, 저는 이렇게 배웠고, 이런 방식으로 수업시간에 가르칩니다.

      이해를 돕기 위해서 GAN을 예시로 들면, GAN은 Generator가 Latent variable을 이용합니다. 그 때 쓰는 Latent variable들이 어디서 나온걸까요? 사실 Deep Learning이라는 작업이 Layer 1개가 더 추가될 때마다 새로운 Latent Variable을 찾는 작업이라고도 할 수 있습니다. 이 각각의 Node에게 요건 “눈”, “코”, “입”이라고 따로 이름을 붙이기 어려운 부분이 Factor Analysis할 때 결과값을 놓고 무조건 Factor 1은 언어 능력, Factor 2는 수학 능력일거라고 이름 붙이기 어려운 부분과 일맥상통하죠. 그렇다고 해도, 데이터 샘플을 늘려서 역산을 하면 경험적으로 언어 능력, 수학 능력 변수를 찾아낼 수 있게 됩니다. 마찬가지 맥락으로 이미지 인식에서도 눈, 코, 입을 구분해낼 수 있어요. 다만 Latent variable들이 들어간 Layer가 손으로 계산하기 너무 부담스럽게 많은만큼 하나하나 추적하기가 힘들 뿐인거죠. 추적할 양이 많아서 힘들다는게 추적이 불가능하다는 말과 동의어는 아닙니다. 최소한 이미지 Net의 성능을 더 끌어올리고 싶으면 어느 부분에서 문제가 있고, 그걸 어떻게 고쳐야한다는 이론적인 이해를 갖고 있으면 Net의 모양을 거기에 맞춰서 수정하게 되겠죠. 단순하게 Parameter tuning하는 주먹구구식 방식으로 하겠다면 어쩔수 없습니다만, 모델을 Elegant하게 만들어야한다는 통계학적 훈련을 받은 사람들에게는 귀찮아서 안 하는 도전이지, 불가능해서 안 하는 도전은 아닙니다.

  6. tro 댓글:

    학습되는 이미지로부터 코든 얼굴이든 입이든 어떤 특징점영역을 유사하게 보고있는지도 파악 할수가없는게 현실인데 어떻게 파악한다는것이죠
    수치만보고 이게 코를 비슷하게 보고 특징점영역을 보고있는지 눈을 보고있는건지 귀를보고있는건지 모르기 때문에 블랙박스라고 표현하는겁니다

  7. bonobono 댓글:

    아마도 기본 개념이 있는 학생이라면 텐서 플로 코드를 보고서도 이게 결국 로지스틱 회귀의 결합이라는 걸 쉽게 알 수 있을 겁니다. Weight*input+bias 형태를 띠고 있다는 것이 코드에도 너무 명백하게 나오니까요. 다만 비즈니스 하시는 분들이 블랙박스 개념을 남발하는 것은 확실히 그런 경향이 없다고는 못 하겠죠. 그 분들은 ‘내가 모르니까’ 블랙박스라는 단어를 실제로 남용하고 있죠.
    저는 엔지니어라 그런지(데이터 엔지니어는 아닙니다. 원래 Software Engineering 전공이고요. SW품질관리 쪽 때문에 이쪽으로 공부를 시작했지만 아직은 수학 공부, 통계학 공부도 일천하고, 코드나 몇줄 짜고 있죠… 궁극적인 목표는 데이터 엔지니어가 맞습니다만ㅎㅎ) 비즈니스쪽 분들이 그렇게 단어를 남용해도 상대적으로는 덜 불편하더군요. 아무래도 공학도들은 효율을 위해 일정 이상의 노력이나 비용이 드는 절차나 정확한 값을 무시하고 넘어가는 경향이 있기 때문일 겁니다. 공학도는 기본적으로 최소 비용으로 가능한 효과 크게+베끼고 재사용해서라도 현실화 <- 요게 목표인 사람들이기 때문이다보니…. keith님이 불편함을 크게 느끼시는 것은 무지를 자랑하는 이들에 대한 짜증과 더불어 아마도 데이터 '사이언티스트' 이기 때문에 느끼는 답답함이 아닐까 합니다.
    한국 비즈니스 풍토가 좀 '사이언티스트'와 '엔지니어'를 구분하고, 둘이 각자의 영역에 충실하게 임할 수 있도록 조성이 되어야 할 텐데 말이죠. (현실은 엔지니어들조차 목소리 큰 비즈니스 쪽 사람들이 '우기는' 대로 해줘야 하는 상황이지만…)
    여담으로, 글은 항상 잘 읽고 있습니다. 공부하다가 게을러질 때 스스로 채찍질하러 들어오는 블로그입니다. 언젠가 저도 많이 성장해서 필드에서 뵙고 싶기도 하네요. ^0^

    • Keith 댓글:

      bonobono님 말씀에 공감합니다. 어쩌면 제가 너무 무리한(?) 요구를 시장에 하고 있는건지도 모르겠네요. 설령 그렇다고해도 제 입장에서 눈에 거슬리는 포인트들을 지적 안 하고 넘어가기는 쉽지 않습니다만….
      공부하시는데 얼마나 많은 채찍질이 될지는 모르겠습니다만, 제 부족한 View에 공감해주시는 것만으로도 감사드립니다.

      • bonobono 댓글:

        환영(?) 감사드립니다. 저도 예전에는 블랙박스로 지칭하고 있었는데 요즘은 가급적 그 단어보다는 표현을 좀 바꿔 사용하고 있습니다. 블랙박스의 엄밀한 의미는 (공학에서도) “Stimuli과 response만 의미가 있을 뿐 그 내부를 전혀 알 수 없거나 고려하지 않는” 이라는 의미이기 때문에 말이죠.
        요즘은 다른 분들에게 설명을 해 줄때는, 어차피 영 못 알아들을 거 같으면 그냥 블랙박스라고 해버리고요^^;; 좀 설명해 드려도 좋을 것 같은 분에게는 “엄밀히 말하면 신경망이라 해도 결국 회귀 분석의 결합이고, 분석하자면 절대 못할 것은 없지만 은닉층이 많으면 그게 힘들어지므로 현실적으로는 (비용/시간상 한계가 있다 보니) 마치 블랙박스처럼 취급되고 있는 것이다” 라고 말씀드리고 있습니다. 맞나요? ㅎㅎㅎ

        • Keith 댓글:

          weight들을 따라가는걸 굳이 “분석”이라는 용어로 설명해야할지는 모르겠습니다. 다른 댓글에 써놨던대로 Deep learning은 그냥 Latent factor 찾는 작업이에요. Latent라고 할 수 있는 구조가 2중, 3중 이상으로 된 다층구조형 데이터에서 DNN이 좋은 성과를 보인다는 설명하는거니까 “데이터가 다층구조형이어서 단층 구조 데이터에 1번만 썼던 통계학 계산법을 여러번 복합적으로 쓰는 작업이다”고 설명하면 되지 않을까요? Weight 추적은 굳이 해야할 필요가 크지 않으니 안 한다고 사실대로 말하면 또 못해서 안 한다고 블랙박스라는 믿음을 그대로 갖고 가실지 좀 걱정되긴 합니다만…

  8. hyun 댓글:

    와 ㅋㅋㅋㅋ 지금 딥러닝 초보로 많이 배우고 있는 학생인데요 kjw1oo님과 Keith님의 논쟁 덕분에 오히려 딥러닝에 대한 이해가 더 깊어진것 같습니다 감사합니다

댓글 남기기