본문 바로가기

책읽기

[밑바닥부터 시작하는 딥러닝 3](사이토 고키, 2020)

  • "야, 까먹을 게 따로 있지 어떻게 그걸 까먹냐"
    • 일전에 한 선배가 나를 타박하면서 했던 말.
    • 선배는 이해할 수 없는 내 망각의 대상은 군번이었다.
    • 26개월 현역으로 군대를 다녀온 선배에게 군번은 "자다가도 툭 치면 나와야 되는", 글자 그대로 자신의 정체성(ID = identity)이었겠지만 전문연구요원으로 논산 훈련소에서 4주만 보낸 내게는 대체 입사 지원서에 이걸 왜 써넣어야 하는지 모를 성가신 행정코드일 뿐이다.
  • 내게도 20년 가까운 시간이 지났지만 잊혀지지 않는 것이 있다.
    • 지금은 데이터를 다루지만 석사 시절엔 실험을 했다.
    • 참 멋진 선배가 만든, 이온 밀링을 포함해 6가지 소재를 스퍼터링하여 박막을 만드는 장비가 있었는데 이 장비를 함께 사용해서 시료를 만들었을 뿐 아니라 나사 하나하나를 풀고 조이며 업그레이드하고, 수리하고, 길게는 이틀씩 베이킹을 하면서 온도를 체크했다.
    • 아무도 없는 새벽에 장비를 꼭 안아주면서 우리 힘내보자 한 적도 있지만 아쉽게도 당시에 좋은 성과를 내놓지는 못했다. 표현은 못했지만 선배에게 빚을 지고 갚지 못한 것 같아 아직까지 미안하다.
    • 그러나, 성과와는 별개로 나사를 조일 때 짓눌러지는 개스킷의 감각, 장마철엔 습도때문에 실험이 제대로 안돼서 서운해하던 감정은 그대로 남아서 다시 하라면 할 수 있을 것 같다.
  • 반면, 이런 느낌이 없어서 아쉬운 것도 있다.
    • 박사 2년차에 시뮬레이션으로 분야를 옮겼다.
    • 내 적성이 실험보다는 책상물림쪽인지 성과가 제법 괜찮게 나왔다 - 2008년 당시 박사 디펜스때 1저자 5편, 논문을 낼 수 없는 사기업에 들어간 뒤에도 미리 뿌려놓은 씨를 후배들이 틔워준 것까지 해서 40여편의 논문이 나왔다.
    • 실적으로 치면 결코 나쁘지 않지만 다른 사람이 짠 코드를 사용하기만 했지 코드를 건드리지 못했다
    • 이 코드를 만든 분들은 코드를 이리저리 수정하며 자기 아이디어를 반영해 연구를 하고 있는데, 나도 비슷한 아이디어는 많았으나 포트란, C, C++이 복잡하게 얽힌 유한요소해석(FEM: Finite element method) 코드를 손댈 능력이 되지 못해 다른 아이디어만 적용했다.
    • 그 때 코드의 밑바닥을 건드려봤다면 - 그렇다고 더 좋은 논문을 썼을 것이라는 보장은 없지만 - 더 뿌듯하게, 더 즐겁게 연구를 하지 않았을까 하는 상상만 한다. 
  • 딥러닝이 알파폴드2로 또 한번 깃발을 꽂았다.
    • 알파폴드는 딥러닝으로 3차원 단백질 구조를 예측하는, 구글이 만든 프로그램이다. 
    • 2019년 12월에 열린 단백질 구조 예측 대회(CASP) 템플릿 프리 구조 예측에서 43개 구조 중 25개를 정확히 예측하여 1위를 기록했는데, 2위는 미시간대 연구팀으로 고작 3 문제에서 가장 높은 점수를 받았고 대다수의 연구진들은 0점이었다. 그만큼 어려운 문제이고, 왜 새로운 병은 자꾸 생기는데 신약 개발은 늦는지에 대한 일면의 답이 될 수 있다.
    • 그리고 어제, 알파폴드2가 사고를 쳤다. 
    • 작년보다 훨씬 더 고도화된 성능으로 인간계와의 차이를 더 크게 벌렸으며, 이 분야에 15년간 몸담은 한 전문가의 말에 따르면 "단백질 염기 서열만 알면 X-ray, NMR, Cryo-EM 실험을 할 필요 없이 거의 정확하게 구조를 얻을 수 있다는 것을 의미한다"
    • 현재까지 염기 서열이 알려진 10억개의 단백질 중 구조가 알려진 단백질은 10만개가 채 되지 않기 때문에 신약 개발 등에 큰 진전이 있을 것이라는 전언과 함께 "기존의 단백질 구조 예측 연구는 대부분 휴지통으로 들어갈 운명"이라 예측했다.
    • 관심이 있으신 분은 이 기사들을 같이 읽어보셔도 좋겠다. [이주용님 글 링크][네이처 기사 링크], [딥마인드 블로그 기사 링크]
  • "딥러닝을 배울까 말까가 아니라 어디에 쓸지를 고민해야 한다"
    • 바둑을 두는 알파고, 단백질 구조를 예측하는 알파폴드, 관심 동영상을 계속 추천하는 유튜브와 넷플릭스. 
    • 이런 회사들의 성취가 너무 두드러져서 딥러닝이 내 인생과 무슨 상관이 있나 싶을 수도 있지만, 딥러닝을 이용한 앱들이 점점 많이 나오고 있다 - 회의시간에 스마트폰을 켜두기만 하면 화자를 분리해서 회의록을 작성해주는 앱, 밑에 책을 놓으면 읽어주는 스탠드, 읽고 있는 책을 찍으면 울퉁불퉁한 종이를 펴주고 글자를 분리해주는 서비스 등등 셀 수가 없을 정도다. 스마트폰으로 사진을 찍으면 나도 모르는 사이에 딥러닝으로 화질을 보정해준다.
    • 이미 연구에도 딥러닝이 깊숙히 들어와 있다.
      • X-ray 판독은 식약처 인증을 받은 제품들이 나오고 있다.
      • 매우 약해서 TEM 이미지를 얻기 힘든 시료를 최대한 살살 촬영한 뒤 영상을 재건한다.
      • 시뮬레이션과의 협력으로 interpolation의 늪을 벗어나 새로운 소재를 스스로 찾으며 탐색한다.
  • 딥러닝은 배우기 쉽다. 그러나
    • IT 분야에는 기존 연구분야의 사고방식으로는 이해하기 어려운 공유 문화가 있다.
    • 장인이 골방에서 남몰래 몇년을 집중하여 어느날 짠! 하고 멋진 논문을 내놓는 것이 기존의 연구방식이라면,
      IT 분야는 뭐 조그만 것을 만들어 광장에 가져가서 사람들 앞에서 뚝딱거리고 있으면 지나가던 사람이 자기 도구를 써보라고 빌려주기도 하고, 이렇게 하면 잘 되더라고 훈수도 둔다. 그리고 이렇게 쌓인 평판은 부와 명예, 더 큰 기회로 이어진다.
    • 당연히 후자의 발전속도가 빠를 수 밖에 없고, 일도 점점 더 쉬워진다.
    • 구글이 내놓은 텐서플로, 페이스북이 공개한 파이토치만 해도 사용자 유입에 큰 역할을 했는데, 텐서플로를 쉽게 해주는 케라스, 파이토치를 쉽게 해주는 파이토치 라이트닝과 fast.ai 의 등장은 중학생 딥러닝 개발자를 탄생시키고 있다.
    • 하지만 공유 문화에 너무 기댄 나머지 남의 코드를 갖다 쓰기만 하면서 그럴싸하게 포장하는 사람들이 적지 않고, 작동 원리는 전혀 모른 채 성능을 향상시키겠다고 이런저런 파라미터만 바꾸는 사람도 많다.
    • 이런 분들은 과거의 내가 그랬듯, 남들에게는 박수를 받아도 본인 스스로는 매우 목이 마를 수 있다. 
    • 만약 전혀 목이 마르지 않고 박수갈채를 즐긴다면 연구자로서의 자질을 의심해볼 필요가 있다. 전자레인지에 즉석식품을 데워서 배를 채우는 것은 문제가 되지 않지만 이런 음식을 요리라고 내놓는 요리사는 없기 때문이다.
  • 한번쯤은 밑바닥을 찍고 뼈에 새길 필요가 있다.
    • 좋은 도구를 놔두고 매번 기초공사부터 하는 것도 어리석은 짓이다.
    • 하지만 이 도구가 어떻게 돌아가는지, 어떤 취약점이 있어서 어떨 때 쓰면 안 되는지, 내가 이 문제를 풀기 위해 A, B, C를 선택하지 않고 D를 선택했는지 설명할 수 있으려면 한 번쯤은 바닥부터 긁어볼 필요가 있다.
    • 밑바닥 시리즈는 1, 2권도 대호평을 받았지만 3권은 특히 딥러닝 프레임워크 구축을 다루고 있다.
    • 작은 함수와 클래스부터 만들어 연속 미분, 유닛 테스트를 거쳐 프레임워크를 만드는 과정은 "내가 이 짓을 해야 하나"라고 느낄 수도 있다. 이에 대해 나는, 강하게 "네. 뼈에 새기진 못해도 흔적은 남겨야죠" 라고 말하고 싶다.
  • 자기 밥줄이라면, 적어도 군번보다는 깊게 새겨야 하지 않을까.