인공지능 수업 정리 (4학년 2학기)

Updated:

개요

졸업 과제를 하면서 CNN 알고리즘과 텐서플로우 등을 다루다보니 인공지능에 관심이 생겼다. 그래서 4학년 2학기 수업으로 인공지능 수업을 듣게 되었다.

대부분의 강의가 앤드류 응 교수의 피피티 자료로 진행되었고 파이썬 날코딩으로 알고 짜는 딥러닝 책을 통해 실습을 진행할 수 있었다.

배운 내용

다음은 이번 학기동안 배운 내용을 정리한 내용이다. 학기가 다 진행되고 혼자 생각하면서 정리하는 거라서 구체적인 서술은 거의 없으며 일부 빠진 내용이 존재할 수도 있다.

인공지능이 주목받게 된 상황(기계학습 기술의 발달, 수많은 데이터의 존재 등등)을 시작으로 관심이 생길만한 알파고에 대해서 배웠다. 알파고 관련해서는 다음 링크를 참고하면 되겠다.

알파고의 역사

그 후, 기계학습의 정의를 배웠는데 정의는 다음과 같다.

컴퓨터 프로그램이 어떤(Task) 경험(Experience)을 한 뒤, 퍼포먼스(Performance)가 좋아졌다면 이를 기계학습이라 한다.

그리고 퍼셉트론을 직접 만들어보고 처음에는 회귀 분석을 배우고 전복의 고리 수 추정 신경망을 통해 실습을 진행하였다. 그 후, 단층 퍼셉트론으로는 XOR 게이트를 구성할 수 없으므로 다층 퍼셉트론을 구성하게 됨을 배웠다.

여기서 순전파, 역전파 알고리즘을 배우면서 딥러닝이 어떻게 진행되는지에 대해 배웠고 활성화 함수로 ReLu함수, Sigmoid 함수, 다중 분류에 주로 쓰이는 Softmax 함수 등을 배웠다.

그리고 이미지의 경우, 다층 퍼셉트론으로는 3차원인 이미지의 특성을 반영할 수 없기 때문에 CNN을 사용하게 된다. 또한, CNN에서는 합성곱계층에 있는 커널이라는 작은 가중치 텐서를 이미지의 모든 영역에 반복 적용해 패턴을 찾아 처리하게 된다. 이를 통해 학습 데이터 안에 온갖 위치에 나타나는 물체들을 잘 인식할 수 있는 것이다.

이렇게 알고리즘을 발전시켰지만 피할 수 없는 문제인 오버피팅을 방지하기 위한 정규화 방식으로 L2 손실, L2 손실, 드롭아웃, 잡음 주입, 배치 정규화 등을 배웠다.

그 후, 합성곱 신경망에서 좀 더 발전된 구조인 인셉션 모델(좀 더 거대한 구조)과 레스넷 모델(좀 더 깊은 구조)를 배웠고 기억이라는 특성을 지닌 RNN알고리즘과 함께 RNN에서 발생하는 정보의 소멸 및 폭주 현상을 막기위한 LSTM을 배웠다.

한편, 의사결정 나무에 대해서도 배웠다. 이를 활용하기 위한 앙상블에 대해 배웠는데 그 정의는 다음과 같다.

여러 모델을 이용하여 데이터를 학습하고, 모든 모델의 예측결과를 평균하여 예측하는 것을 앙상블이라고 한다.

앙상블은 bagging과 boosting으로 나뉘게 되는데, bagging은 대표적으로 랜덤 포레스트 방식이 있으며 boosting은 AdaBoost, GBM, XGBoost 등이 있다.

실습 자료

실습을 진행했던 보고서 파일을 정리한 github링크를 첨부한다. 다음은 각 보고서에 대한 설명이다.

과제 1 - XOR을 위한 다층 퍼셉트론

과제 2 - 회귀 분석 : 전복의 고리 수 추정 신경망

과제 3 - 이진 판단 : 천체의 펄서 예측 신경망

과제 4 - 선택 분류 : 불량 철판 판별 분류 신경망

과제 5 - 가족 관계를 추론하는 전문가 시스템 구현 (Prolog 이용)

과제 6 - 다층 퍼셉트론 구현

과제 7 - 꽃 이미지 분류 (다층 퍼셉트론 이용)

과제 8 - 복합 출력

과제 9 - 꽃 이미지 분류 (합성곱 신경망 이용)

과제 10 - 앙상블 (bagging, boosting)

과제 11 - 정규화

과제 12 - 거대심층구조 신경망 (인셉션 모델, 레스넷 모델)

과제 13 - LSTM 신경망

대부분의 과제는 __파이썬 날코딩으로 알고 짜는 딥러닝 __책을 통해 진행되었다.

과제보고서를 모아둔 Github 링크

Categories:

Updated:

Leave a comment