Category Archives: 99_Fabula

ephemeris

저렴한 블루투스 이어폰을 구입했다. 너무 저렴해서 음질이 걱정되기는 했다. 전원을 켜고 끌 때 어색한 한국어 안내 소리가 차라리 거슬리지 방송을 청취에는 별 차이가 없는 것 같다.

DenseNet

최신 모델에 대한 공부는 안했으나, 현재 진행중인 논문에서 사용한 이미지 학습 모델 중 DenseNet-161이 가장 성능이 좋아서 이를 이용하여 후속 논문을 진행할 예정이다. 따라서, DenseNet을 좀 배워보기로 했다. DenseNet과 관련된 논문은 다음과 같다.

arXiv preprint arXiv:1608.06993

이 쪽은 결과를 우선 내는 것을 중요시 하기 때문에 피어 리뷰를 하지 않는다. 뭐, 성능 검증이 되면 그게 바로 리뷰하고 승인일텐데 굳이 그런 형식에 얽매일 분야는 아니라고 본다. 전문 지식이 없어 블로그(https://wingnim.tistory.com/39)에서 정리된 내용을 내가 필요한 부분만 다시 정리하여 보았다.

  • ResNet은 중간중간마다 이전의 결과를 받아오는 방법을 이용하였다면, DenseNet은 이전 정보들이 더 깊은 레이어까지 정보를 전달하는 방법이다. 그래서 네트웍이 조밀해(dense)진다.
https://pytorch.org/assets/images/densenet1.png

PyTorch에서 불러오는 방법은 다음과 같다. 애시당초 홈페이지에 당당하게 불러오는 방법이 안내되어 있다.

https://pytorch.org/hub/pytorch_vision_densenet/

무엇을 pretrained 했다는 것인지는 모르나, 알아 두어야 할 것은 다음이다.

  • 3-channel RGB (3 x H x W)
  • H와 W는 최소 224 pixels
  • 값은 [0, 1]로 되도록 변환
  • normalization 시행함.
from torchvision import transforms
preprocess = transforms.Compose([
    transforms.Resize(256),
    transforms.CenterCrop(224),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])

이거는 이미지 변환과 관련된 부분인 것 같다. torchvision의 transforms를 이용한다. 따라서 자료를 찾아 보았다.

https://pytorch.org/docs/stable/torchvision/transforms.html

torchvision.transforms.Pad(padding, fill=0, padding_mode='constant')

내가 필요한 것은 원하는 만큼 padding 하는 것이다. padding 항목 위치에 길이가 4인 tuple 형식으로 입력하면 왼쪽, 위, 오른쪽, 아래에 각각 채울 수 있다고 한다. fill=0은 기본값, constant는 그냥 채우는 것이다.

내가 원하는 방향으로 가기 위해서는 역시나 직접 코드를 짜야 한다. 하지만, 어떻게 짜야 하는지 모르면 시작조차 할 수 없으니 일단 한 권의 책에 있는 예시 코드를 다 만들어 봐야 겠다.

아침 수업 시간에 늦지 않기 위해서 자동차를 운전해서 춘천으로 갔다. 춘천 가는 길은 이번에는 안개가 꽤 있었다. 시야에 영향 줄 정도는 아니고, 그저 경치로 즐기기에는 충분한 정도. 아침에 카페인 보충이 필요하기 때문에 스타벅스 DT에 들러 커피와 샌드위치를 구입해서 가는길에 먹었다.

그런데 도착했는데 학생들이 없었다. 강의실로 사용하는 회의실에 다른 교수님들도 왔는데, 어제 밤늦게까지 의대생들이 무엇인가 회의를 했고, 수업에 불참하겠다는 문서를 제출했다고 했다. 나중에 화상회의 자료를 녹화하고 집으로 가는 길에 다른 조교가 해당 문서를 들고 가는 것을 보았는데, 본인은 수업을 불참하겠으며 이로 인한 결과는 모두 책임지겠다는 내용이었다.

급변하는 혼란스러운 시대에 의사가 되려는 어린 학생들이 자기들 졸업 때 즈음해서 경쟁 업체라고 할 수 있는 의원을 운영할 의사 정원이 늘어나는 것에 대해서 걱정하는 것은 이해할 수 있다. 이런 식으로 의사 표현하는 것이 적절할지 의문이 든다. 더 좋은 방법이 있지는 않은가에 대하여 고민을 했으면 좋겠다고 싶다. 내가 학생일 시절 그러니까 거의 20년 전보다 학생들이 더 똑똑해 졌는가 라고 묻는다면 아니라고 말할 수 있을 것 같다. 본과 1학년 때에는 노트북 사용하는 사람들이 과반수도 못되었는데 4학년이 될 때쯤 거의 모든 사람들이 노트북을 사용하는 그런 시절과 비교하였을 때, 노트북 컴퓨터의 성능은 충분히 빨라졌고 무선 인터넷은 더욱 안정적이며 자료 공유는 더욱 쉬운 세상이다.

하지만, IT 문화가 발달할 수록 더욱 필요한 것은 IT 장비나 기술이 아닌 것 같다. 해당 장비나 기술을 다루는 사람이 더 중요하다. 그것도 본인의 생각 그 자체가 아니라, 타인과 의견을 주고 받는 것 혹은 타인을 설득하는 기술이 필요하다고 생각한다. 설득하지 않더라도 본인의 생각을 다른 사람과 자유롭고 격렬하게 토의하는 것이 더욱 필요하다고 생각한다. 예전 소설들을 보면 결투도 신청하고 결투 과정에서 죽기도 하는데, 그런 죽음을 미화하자는 것이 아니다. 사실 토론식 수업을 접하지 못했던 만큼 토론 자체가 어려운 것이 사실이다. 의학은 많은 지식을 단기간에 익히기 위해서 주입식 교육을 하는 대표적인 학문이다. 하지만, 주입식으로만 지식을 습득한다면 기존의 지식에서 벗어나는 것을 접하였을 때 올바른 대응을 할 수가 없다. 현재 AI 기술의 한계점인 학습 자료에 없는 것은 예측할 수 없는 것과 동일하다. 물론 미지의 감염병 같은 것은 혈액에서 WGS과 같은 기술을 이용하면 충분히 맞출 수 있을지도 모르겠다. 하지만, WGS를 할 수 없는 상황이라면 어떻게 할 지 고민을 해봐야 하지 않을까.

토론식 수업을 의대에 접목시키는 것은 어려운 일이고, 단순히 찬성 팀과 반대 팀으로 분류하는 것도 고리타분 한 것 같고, 새로운 의견을 도출하는 것에는 도움이 안될 것 같다. 내가 생각하기에 해볼 수 있을 것 같은 방법은 학생의 1/4 정도는 토론 주제에 찬성하는 의견만 제시하기, 1/4은 반대하는 의견만 제시하기로 나눈다. 그리고 나머지 1/2 정도는 격렬한 토의를 위해서 앞의 의견이 찬성이라면 반대로, 반대면 찬성으로 의견을 강제로 제시하는 것이다. 다음날에는 역활을 바꾸어 또다시 토론한다. 카톨릭에서 성인 심사를 할 때 이용하는 제도인 악마의 대변인과 같은 것과 유사하다. 영화 월드워Z에서도 모사드에 있는 것처럼 묘사하는 10번째 사람과 같이 다른 사람과 무조건 반대의 관점에서 바라보는 것이다.

존 스튜어트 밀이 자유론에서 설명한 것처럼, 격렬한 토의 과정을 거치지 않으면 진실을 찾을 수도 없고, 다른 의견에 숨어있는 진실을 찾을 수도 없다. 또한 당연한 의견으로 치부하지 않고 참된 진실로 받아들일 수 있다. 격렬할 수록 좋은 것이다.