본문 바로가기

COMPUTING/AI

생각 & 혼공 머신러닝 + 딥러닝 6주차 공부 인증

여러 가지

안녕하세요
저번 포스팅을 올렸을 때가 2월 9일이었는데 벌써 18일이네요.
아시다시피 저는 학교 동아리방과 강당을 오가며 계속 클래식 기타 연습에 매진 중입니다. 저도 그렇고 부원들도 그렇고 날로 실력이 일취월장입니다. 그래서 요즘 격일로 진행하는 리허설마다 감탄하며 지내고 있네요. 일부 선배님들은 기타에서 피아노 건반소리가 납니다. 악기 소리가 이렇게 감미로울 수 있는지 참 놀라워요.
제가 이번 공연에 맡아서 연주할 곡은 E.Satie의 Je Te veux라는 곡입니다. 불어인데 번역하면 '난 당신을 원해요'라는 의미랍니다. 왈츠 박자이고 음이 다른 팀들에 비해 간단한 편이라 합을 맞추기 정말 괜찮은 곡입니다. 연주하면서 들을 때마다 사랑하는 사람을 생각하는 것처럼 설레고 몽글몽글한 기분도 들어요.
여러분들도 마음속에 담아둔 사람이 있나요? 그렇다면 이 노래가 꽤 마음에 드실 겁니다 :)

이번 공부 인증이 이번 혼공 학습단 9기의 마지막 활동이죠. 학교 생활에 너무 충실하다 보니, 자꾸만 자꾸만 이번 주차 공부를 밀다가 이렇게 막바지가 돼서야 하게 되네요. 아 그리고 저번 주 주말에 공부를 미리 해놓겠다던 계획은 보기 좋게 물거품이 되었습니다. 저번주부터 주말 연습이 없어졌거든요. 그래서 토요일마다 아침 일찍 고속버스 타고 본가로 올라와 가족과 조용하고 소소한 생활을 겸하고 있습니다. 연습이 없어졌다는 소식에 막 기분이 좋아져서는 생각 없이 계속 쉬고 그랬습니다..ㅋㅋ 이제는 마감기한이 코앞으로 다가왔으니, 이번 주말은 무조건 이번 딥러닝 챕터를 완성하고 유종의 미를 거둬야겠죠?
자 그럼 시작합니다!

CHAPTER 7 딥러닝을 시작합니다

드디어 딥러닝을 배웁니다. 이 혼공머신은 앞의 6개의 챕터가 머신러닝에 관한 것이고 나머지 3개의 챕터가 딥러닝에 관한 것이니 어떤 것에 저자가 더 관심을 두고 있는지는 바로 보이죠. 그러나 요즘 AI=딥러닝이라고 봐도 무방할 정도로 인공지능 분야는 딥러닝이 이끌고 있습니다. 딥러닝의 폭발적인 성장이 최근이고 현재진행형이기에 이 책 역시 딥러닝을 어떻게 다뤄야 할지 고민한 흔적이 보입니다. 그래서 첫 장인 7 챕터는 딥러닝에 대해 대략적인 실습을 해보고, 8 챕터에서 이미지 처리하는 딥러닝 기법인 CNN을, 9 챕터에서는 텍스트를 처리하는 딥러닝 기법인 RNN을 배워봅니다. 아마 저는 7 챕터까지만 일단 공부하고, 나머지 두 챕터는 가볍게 읽는 정도로 이 책을 마무리 지을 듯합니다. 기왕 시작한 거 이 혼공학습단이 끝나더라도 책도 완독 할 수 있도록 할 생각입니다.

그동안 머신러닝을 배운 것도 의미가 없던 것은 아닙니다. 머신러닝의 새로운 갈래가 딥러닝이기에 결국 머신러닝 기법을 사용하고 있기 때문이죠. 그동안 활성화 함수는 시그모이드 함수와 소프트맥스 함수를 주로 사용했었죠. 이번 챕터에서 드디어 활성화함수의 황제인 ReLU 함수를 다룹니다. 2012년 경 알렉스넷에서 경이로운 성능을 발휘했었기 때문에 교수님들의 입방아에 계속 올랐던 녀석이기도 합니다. 또 하이퍼 파라미터라는 말도 오랜만에 등장합니다. 딥러닝에서는 훨씬 많은 파라미터들을 조정해줘야 하죠. 미니배치의 크기, 활성화함수 종류, 은닉층의 개수, 옵티마이저 등등이 그것입니다. 이런 것들은 경험에 기초해 조절해줘야 하기 때문에 공학자들의 역량이 중요하다고 볼 수 있습니다.
더욱이 머신러닝보다 딥러닝은 훨씬 규모가 크고 연산량도 방대해 모델 안에서 어떤 일이 일어나는지 알기란 정말 어려운 일입니다. 설명가능한 AI를 개발하고자 하는 것도 그 때문입니다. 현재는 딥러닝에 기초해서 인공지능 분야가 발전하고 있지만, 앞으로는 딥러닝보다 훨씬 복잡하고 정교한, 인간이 이해하기 힘든 새로운 인공지능이 나올지도 모르겠습니다. 그즈음되면 정말 사람의 정신처럼, 형용할 수 없는 무언가에 도달할 수도 있지 않을까요? 아무튼 인공지능을 인류가 올바른 방향으로 활용해 나가며 함께 성장할 수 있었으면 좋겠네요.

7-1

기본적인 데이터 확인 작업
인공신경망 모델 만들기. 검증 성능은 0.8478

7-2

심층 신경망 만들기
층을 추가하는 여러가지 방법들
ReLU함수 사용해보기
옵티마이저 변경하기 - adam

7-3

history 변수에 훈련 결과를 담는 모습
손실함수 그리기. 앞선 history변수를 이용한 것.
옵티마이저와 드롭아웃으로 과소/과대적합문제를 해결하는 모습
콜백을 이용해 최적의 성능 수준에서 조기 종료하는 모습. 신기하게 여기서는 12가 아니라 10이다.
혼공 머신러닝 + 딥러닝 6주차_compressed.pdf
17.69MB

기본미션과 선택미션

기본미션 - 7장 1절 문제풀이
Q1. 어떤 인공 신경망의 입력 특성이 100개이고 밀집층에 있는 뉴런 개수가 10개일 때 필요한 모델 파라미터의 개수는 몇 개인가요?
A1. 100*10+10=1010으로 3번입니다. 입력특성(입력층) 수에 밀집층 뉴런개수(출력층 뉴런)를 곱한 값에 다시 밀집층 뉴런 개수를 더하면 됩니다.
Q2. 케라스의 Dense 클래스를 사용해 신경망의 출력층을 만들려고 합니다. 이 신경망이 이진 분류 모델이라면~
A2. 끝났습니다. 이진 분류는 시그모이드 함수를 쓰니 2번이 정답입니다.
Q3. 케라스 모델에서 손실 함수와 측정 지표 등을 지정하는 메서드는?
A3. complie() 메서드에서 여러 가지 설정을 합니다. 따라서 4번입니다.
Q4. 정수 레이블을 타깃으로 가지는 다중 분류 문제~
A4. 원하 인코딩이 아닌 다중 분류는 sparse_categorical_crossentropy입니다. 답은 1번!

선택미션 - 7장 2절 문제풀이
Q1. 다음 중 모델의 add() 메서드 사용법이 올바른 것은?
A1. 이건 문법 관련 사항이네요. 직관적으로 괄호가 잘 쓰여있는 지를 확인하는 편입니다. 답은 2번
Q2. 크기가 300*300인 입력을 케라스 층으로 펼치려고~
A2. 펼친다 = 납작하다 = flatten 답은 2번
Q3. 다음 중 이미지 분류를 위한 심층 신경망에 널리 사용되는 케라스의 활성화 함수는 무엇인가요?
A3. 그것은 알렉스넷이 쓴 렐루 함수! 답은 3번입니다.
Q4. 다음 중 적응적 학습률을 사용하지 않는~
A4. 6개의 옵티마이저 도표 참고. 답은 1번

요즘 생각

요즘 마이크로소프트와 openAI가 함께 운영 중인 chatGPT에 관한 소식들이 엄청 많습니다. 이슈가 되는 까닭에는 여러 가지가 있겠지만 제가 보기엔 운영하는 주체가 구글이 아닌 마소와 openAI라는 점, 마소가 인원감축에 들어갔다는 점, 과거의 챗봇과는 비교가 안될 정도의 넓은 범주의 일을 처리할 수 있다는 점 정도로 볼 수 있을 것 같아요. 현 인공지능은 구글이 선두로 고급 인력을 끌어왔는데, 구글보다 openAI가 먼저 선수 쳐 서비스를 오픈한 점이 많이 놀랍긴 했습니다. 이 일로 구글에선 비상소집도 열리고, 다른 포털 사이트에선 앞다투어 비슷한 서비스를 도입할 예정이라고 하네요. 아무래도 openAI가 꽤나 성공적인 사고를 친 듯싶습니다.

현재는 챗봇 위주의 AI가 주로 상용화되는 것 같습니다. 아무래도 가장 대중들이 사용하기 편리한 상태로 보고 있기 때문인 것 같습니다. 그러나 앞으로 더 다양한 분야에 인공지능이 쓰일려면 챗봇 형태를 벗어나야 할 것 같다는 게 제 생각입니다.

그러고 보니 제가 일전에 의료 AI를 만들고 싶다는 꿈을 내비쳤었죠? 저는 AI가 의료가 한 발짝 대중들에게 다가갈 수 있는 역할을 할 수 있을 것이라 믿고 있습니다. 아직 구체화하진 못했으나, AI를 의료와 접목하여 의료가 닿기 힘든 지역 주민들에게 좋은 도구로 사용되었으면 하는 마음을 동기삼아 공부하고 있습니다.
어렸을 적부터 제가 성당을 다니면서, 독거노인 방문 활동을 한 적이 있었습니다. 그때, 저를 포함한 제 또래 아이들은 조금씩 장기를 준비해서 어르신분들께 보여드리고, 말벗도 되어드렸었던 기억이 있습니다. 그분들은 방 형광등도 잘 안 켜실 정도로 생활이 많이 어두우셨는데, 저희들이 와서 나름의 선물들을 드리면 굉장히 얼굴이 환해졌던 것이 아직도 인상적이었습니다. 앞으로도 노인 인구가 늘면서 혼자 살아가시는 분들이 갈수록 늘 것인데, 의료 AI를 잘 개발해서 가정에 보급한다면, 가정에는 간편한 주치의가 생기는 효과를 볼 수 있을 것이고 나아가 어르신 분들의 말벗도 되어드리는 데 도움을 드릴 수 있지 않을까 싶습니다.
뭐 잘할 수 있을지는 모르겠습니다. 그런데 저희 할머니께서 매번 집에 찾아뵈면, 병원 가시는 것을 극도로 싫어하시는 걸 생각하면 꼭 만들어야겠다는 마음이 절로 듭니다. 제가 항상 할머니 집에 상주할 수도 없는 노릇이거니와, 의외로 어르신분들은 남의 도움을 그대로 받기보단 자신의 힘이 조금이라도 반영되면서 문제를 해결하시길 원하시죠. 그래서 의료 AI를 알맞게 개발한다면, 그분들도 자신의 몸 상태를 객관적으로 파악하시고, 어떤 조치를 취해야 할지 구체적으로 알 수 있으실 겁니다. 문제는 얼마의 전문성과 정확성이냐인데, 그것은 계속 고민해봐야 할 문제일 것 같습니다. 일단은 제가 품고 있는 이 꿈을 계속 간직하면서 학업에 매진하는 게 우선순위겠네요.

마무리 및 소감

첫 번째 절에서는 가볍게 인공 신경망의 개념을 다뤄보고, 직접 만들어보았습니다. 두 번째 절에서는 은닉층을 넣어 심층 신경망을 만들어보고, 활성화함수를 비롯한 다양한 하이퍼 파라미터를 조정하는 법을 배웁니다. 마지막 절에서는 드롭아웃을 비롯한 다양한 신경망 모델 기법에 대해 배워볼 수 있었습니다.

쓰기 시작한 것은 18일 오후인데, 다 쓴 것은 19일이네요. 결국 마지막은 처음 글을 올렸을 때처럼 마감기한 날에 도달했네요. 사람은 역시 쉽게 변하지 않는 모양입니다 하하; 그래도 변할 수 있다는 일말의 가능성이 있다면 계속 움직여봐야 하지 않을까요? 이번 혼공학습단이 그런 의미에선 좋은 경험이 된 것 같습니다.
후기는 곧 회고이벤트를 쓴다 하여 여기선 최대한 간결하게 끊고 그때 풍부하게 쓸 수 있도록 해보겠습니다. 지금 이 한밤중에 제 마음은 딱 두 글자로 표현하면 딱 좋을 것 같네요. '후련'!

출처

혼자 공부하는 머신러닝 + 딥러닝 p.340~420