웬 디 [1187082] · MS 2022 (수정됨) · 쪽지

2023-12-30 15:52:34
조회수 5,488

정보) 컴퓨터공학과 과목 맛보기 - 3. 인공지능(2)

게시글 주소: https://ys.orbi.kr/00066248853

1편에서는 어떤 내용을 배우나 살펴봤고

2편에서는 실제로 나왔던 과제에 대해 간단히 살펴보겠습니다.


------------------------------------------------



아무래도 인공지능에 대해 처음 공부하는 학생들이 많은 만큼,

간단한 분류 모델을 만들어보는 것이 과제였습니다.

이것도 3년 전에 했던 과제였던 만큼 지금 보면 많이 뒤쳐진 걸 수도 있습니다.



Chest X-ray Image가 모여있는 Dataset을

Bacterial Pneumonia / Viral Pneumonia / Normal으로 분류하는 게 미션입니다.


(이런 사진이 모여 있다고 생각하시면 됩니다.)


저도 왜 저게 저렇게 분류되는지는 모릅니다.

아마 의대 다니면 알게 되겠죠..



학습을 시킬 때는 균형 잡힌 학습이 중요합니다.

우리가 수능 공부를 할 때도 수1, 수2, 선택 과목 모두 골고루 하지 않습니까?

이 친구도 각 분류를 고루 학습해야 분류도 잘 할 수 있습니다.



과제에서 주어진 데이터셋을 까보니까 왼쪽처럼 불균형하더군요.

그래서 데이터가 적은 쪽의 사진을 좌/우를 반전시켜서 뻥튀기를 해줬습니다.



그리고 학습 시키기 전에 X-ray 사진의 크기를 통일해줍니다.

전부 제각각이면 이거로 학습을 할 수가 없거든요.


인공지능 학습에서는 알고리즘을 선택하는 것도 중요하지만

위와 같은 데이터 전처리(Preprocess) 과정도 중요합니다.



보통 이런 이미지 관련 문제는 CNN으로 해결합니다.

CNN은 진짜 간단히 말하면 사진에서 특징을 뽑아내서 학습을 하는 알고리즘입니다.


근데 전 CNN 말고 다른 건 없을까 싶더라고요. 도대체 무슨 깡이었는지

관련해서 논문을 읽다가 이런 걸 발견해서 한번 써봤습니다.



간단히 말하면 위에 CNN 구조에서 맨 마지막 단계인 FC Layer 대신에 

다른 지도 학습 알고리즘을 갖다 쓴다는 내용입니다.


이렇게 해봤더니 정확도가 87.48% 나왔네요.

나쁘지는 않은데, 별로 좋지도 않은 결과가 나왔습니다.

역시 안 쓰는 이유가



그 다음으로는 그냥 CNN 써봤습니다.

저는 RTX 3060이라는 좋지도 나쁘지도 않은 그래픽카드를 사용 중이라서

그렇게 성능이 좋고, 구조가 복잡한 모델로 학습을 시키지는 못 했습니다.


그냥 간단한 ResNet이라는 모델을 갖다 사용해봤습니다.


NN에서는 Layer가 깊어질 수록 여러 역효과가 나타나는데,

Residual Block이라는 것을 통해 문제를 해결한 모델입니다.

이게 거의 10년 다 되어가니까.. 진짜 오래 된 모델이긴 합니다.



원래 그냥 만들어진 거 갖다 쓰면 되긴 한데 연습도 할 겸 그냥 만들어봤습니다.



학습을 진행할 때마다 Loss는 줄고, Accuracy는 증가하는 걸 볼 수 있습니다.

Loss는 정답에서 얼마나 벗어났는 지를 보여주는 지표라고 보시면 됩니다.

값이 작을 수록 좋겠죠?


2023학년도 수능 국어 '최소제곱법' 지문 아시죠?



인공지능의 학습이란 간단히 말해 이 '편차 제곱', 즉 Loss를 줄여나가는 거라고 보시면 됩니다.

(물론 손실 함수에는 Mean Squared Error 말고도 많이 있습니다.)  


정확도가 93.11% 나왔군요.

ResNet 중에서도 제일 간단한 ResNet18을 갖다 써봤는데도 많이 올랐네요.


------------------------------------------------


이 과제는 진짜 처음 인공지능을 배우는 학생들에게

인공지능이 무엇인지 공부해보라는 취지로 내준 과제라고 생각이 듭니다.


이 과제하면서 의료 AI와 같은 쪽에 관심을 갖게 되었고

원래는 복학하면 관련 랩실에 들어가 볼까 했었는데 


요런거 연구하는.. 홈페이지 (링크)


어쩌다 보니 의대에 와있군요.

역시 AI보다는 Domain Knowledge를 배우는게

영상이 제 성격에도 딱 맞을 거 같은데 초인기과이다 보니.. 쉽지 않겠죠


아무튼 오늘 글은 여기까지고요.

나중에 시간 날 때 다시 돌아오겠습니다.




제가 적은 글 (클릭하면 연결)


1. 컴퓨터공학과는 뭐하는 곳인가?


2. 컴퓨터공학과 과목 맛보기 - 1. 자료구조


3. 컴퓨터공학과 과목 맛보기 - 2. 시스템프로그래밍(1)


4. 컴퓨터공학과 과목 맛보기 - 2. 시스템프로그래밍(2)


5. 컴퓨터공학과 과목 맛보기 - 3. 인공지능(1)


(현재 글) 6. 컴퓨터공학과 과목 맛보기 - 3. 인공지능(2)


7. 컴퓨터공학과 과목 맛보기 - 4. 알고리즘

rare-웬디의 영스트리트

0 XDK (+0)

  1. 유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.