Home 프로그래머스 인공지능 데브코스 9주차 정리 및 후기
Post
Cancel

프로그래머스 인공지능 데브코스 9주차 정리 및 후기

이번 글에서는 프로그래머스 인공지능 데브코스의 9주차 강의에 대한 정리입니다.


1. 다층 퍼셉트론1

인공신경망과 생물신경망

  • 사람의 뉴런: 두뇌의 가장 작은 정보 처리 단위
  • 컴퓨터가 사람 뇌의 정보 처리를 모방하여 지능적 행위를 할 수 있는 인공지능 도전
    • 뉴런의 동작 이해를 모방한 초기 인공 신경망 (ANN) 연구 시작
    • 퍼셉트론이 고안됨
  • 신경망의 종류
    • 전방 (Forward) 신경망, 순환 (Recurrent) 신경망
    • 얕은 (Shallow) 신경망, 깊은 (Deep) 신경망
    • 결정론 (Deterministic) 신경망: 모델의 매개변수와 조건에 의해 출력이 완전히 결정되는 신경망
    • 확률론 (Stochastic) 신경망: 고유의 임의성을 가지고 매개변수와 조건이 같더라도 다른 출력을 갖는 신경망
  • 퍼셉트론: 절 (Node), 가중치 (Weight), 층 (Layer)과 같은 새로운 개념의 구조 도입
    • 제시된 퍼셉트론 구조의 학습 알고리즘을 제안
    • 깊은 인공신경망 (Deep Learning)을 포함한 현대 인공신경망의 토대
    • 입력 (편향 노드 포함) -> 입력과 출력 사이의 연산 -> 출력
  • 일반적인 분류기의 학습 과정
    1. 과업 정의와 분류 과정의 수학적 정의 (가설 설정)
    2. 해당 분류기의 목적함수 정의
    3. 목적함수를 최소화 하는 값을 찾기 위한 최적화 수행
      • 경사하강법을 통해 기울기를 미분하여 반복 탐색해 극값을 찾음

2. 다층 퍼셉트론2

다층 퍼셉트론

  • 퍼셉트론: 선형 분류기 (Linear Classifier)의 한계
    • OR, AND 분류기는 가능하지만, XOR 문제는 해결하지 못함
  • 다층 퍼셉트론의 핵심 아이디어
    • 은닉층을 두어, 특징 공간을 분류하는데 유리한 새로운 특징 공간으로 변환
    • 연성에서는 출력이 연속값이므로 시그모이드 함수를 활성화 함수로 도입
    • 오류 역전파 알고리즘을 사용하여 한 층씩 그레디언트를 계산하고, 가중치를 갱신
  • 특징 공간 변환
    • 퍼셉트론 2개를 병렬 결합하면, 원래 공간을 새로운 특징 공간으로 변환 가능
  • 추가 퍼셉트론 1개를 순차 결합하면, 다층 퍼셉트론이 됨

활성화 함수

  • 딱딱한 공간 분할과 부드러운 공간 분할
    • 계단 함수는 딱딱한 의사결정: 영역을 점으로 변환
    • 그 외에 활성화 함수는 부드러운 의사결정: 영역을 영역으로 변환
      • 로지스틱 시그모이드
      • 하이퍼볼릭 탄젠트 시그모이드
      • Softplus와 Rectifier (ReLU)
    • 활성화 함수에 따른 다층 퍼셉트론의 공간 분할 능력 변화 (경성 부분 변화)
  • 일반적으로 은닉층에서 로지스틱 시그모이드를 활성화 함수로 많이 사용
    • S자 모양의 넓은 포화 곡선은 경사도 기반한 학습 (오류 역전파)을 어렵게 함
    • 기울기 소실 (Gradient Vanishing) 문제 발생
    • 따라서 깊은 신경망에서는 ReLU를 활용
      • 계단 활성화 함수의 범위는 -1과 1
      • 로지스틱 활성화 함수의 범위는 0부터 1
      • 하이퍼볼릭 탄젠트 활성화 함수의 범위는 -1부터 1
      • 소프트플러스, 렉티파이어 (ReLU) 활성화 함수의 범위는 0부터 무한대

구조

  • 기존에는 입력층 -> 은닉층 -> 출력층의 2층 구조
  • 입력층 -> 은닉층 -> 은닉층 -> 출력층의 3층 구조
    • p개의 은닉 노드: p는 하이퍼 매개변수
    • p가 너무 크면 과잉적합, 너무 작으면 과소적합
    • 하이퍼 매개변수 (Hyper-paramenters) 최적화 필요

동작

  • 특징 벡터 x를 출력 벡터 o로 사상 (Mapping) 하는 함수로 간주할 수 있음
    • 2층 퍼셉트론: o = f2(f1(x))
    • 3층 퍼셉트론: o = f3(f2(f1(x)))
  • 은닉층은 특징 추출기
    • 은닉층은 특징 벡터를 분류에 더 유리한 새로운 특징 공간으로 변환
    • 현대 기계학습에서는 특징학습 (Feature Learning, Data-driven Learning) 이라 부름
    • 심층학습은 더 많은 층을 거쳐 계층화 된 특징학습을 함
  • 범용적 근사 이론 (Univeral Approximation Theorem)
    • 하나의 은닉층은 함수의 근사를 표현
    • 다층 퍼셉트론도 공간을 변환하는 근사 함수
  • 얕은 은닉층의 구조: 일반적으로 깊은 은닉층의 구조가 좋은 성능을 가짐
  • 입력층 -> 은닉층 (순방향 전파) -> 오차 계산 -> 은닉층 (역방향 전파) -> 오차 계산
  • 학습 알고리즘은 오류 역전파를 반복하여 수행

성능 향상을 위한 경험의 중요성

  • 순수한 최적화 알고리즘으로는 높은 성능이 불가능
    • 데이터 희소성, 잡음, 미숙한 신경망 구조 등 때문
    • 성능 향상을 위한 다양한 경험 (Heuristics)을 개발하고 공유함
      • 아키텍쳐, 초깃값, 학습률, 활성화 함수

3. 다층 퍼셉트론3

목적 함수의 정의

  • 훈련집합
    • 특징 벡터 집합 (X)과 부류 벡터 집합 (Y) - 지도학습
    • 부류 벡터는 단발성 (One-hot) 코드로 표현
  • 기계학습의 목표: 모든 샘플을 옳게 분류하는 함수 f를 찾는 것
  • 목적 함수: 평균 제곱 오차 (Mean Squared Error, MSE)
  • 전방 전파와 오류 역전파

오류 역전파 알고리즘의 설계

  • 연쇄 법칙의 구현: 반복되는 부분식들 (Subexpressions)을 저장하거나 재연산을 최소화
  • 목적 함수의 최저점을 찾아주는 경사 하강법
  • 출력의 오류를 역방향 (왼쪽)으로 전파하여 경사도를 계산하는 알고리즘 (오류 역전파 알고리즘)

미니배치 확률론적 경사 하강법

  • 미니배치 방식
    • 한번에 t개의 샘플을 처리 (t는 미니배치 크기)
    • 미니배치 방식은 보통 수십 ~ 수백
      • 경사도의 잡음을 줄여주는 효과 때문에 수렴이 빨라짐
      • GPU를 사용한 병렬처리에도 유리함
    • 현대 기계학습은 미니배치 기반의 확률론적 경사 하강법을 표준처럼 널리 사용

4. 심층 학습 기초 1

심층 학습 (Deep Learning)

  • 다층 퍼셉트론에 은닉츠을 여러 개 추가하면, 깊은 신경망이 됨 (심층 학습은 깊은 신경망의 학습)
  • 심층 학습은 새로운 응용을 창출하고, 인공지능 제품의 성능을 획기적으로 향상 (현대 기계학습 주도)
  • 1980년대 이미 깊은 신경망 아이디어는 등장했으나, 당시에는 실현 불가능
    • 경사 소멸 (Gradient Vanishing) -> 활성화 함수 변화를 통해 해결
    • 작은 훈련 집합, 과다한 연산과 시간 소요 (낮은 연산의 범용 컴퓨터, 값 비싼 슈퍼 컴퓨터)
  • 일부 연구자들은 실망스러운 상황에서도 지속적인 연구
    • 학습률에 따른 성능 변화 양상
    • 모멘텀과 같은 최적 탐색 방법 모색
    • 은닉 노드 수에 따른 성능 변화
    • 데이터 전처리의 영향, 활성함수의 영향, 규제 기법의 영향
  • 심층 학습의 성공 배경
    • 혁신적 알고리즘 등장 (합성곱 신경망, CNN 구조)
    • 경사 소멸 문제 해결을 위한 ReLU 활성 함수
    • 과잉 적합을 방지하는데 효과적인 다양한 규제 기법
    • 층별 예비 학습 (Pretraining) 기법 개발
    • 값싼 GPGPU 등장, 학습 데이터 양과 질의 향상

표현 학습의 부각

  • 전통적인 다층 퍼셉트론 (은닉층은 특징 추출기)
    • 얕은 구조이므로 가공하지 않은 획득한 원래 패턴을 그대로 입력하면 낮은 성능
    • 따라서 사람이 수작업 특징을 선택하거나, 추출하여 신경망에 입력
  • 현대 기계학습 (심층학습)
    • 학습에 의해 자동적으로 데이터로붵 특징 추출 (표현 학습 = Representation Learning)
    • 특징 벡터를 신경망의 입력 (종단간 학습 = End-to-End Learning)
    • 깊은 신경망을 통한 계층적 표현 학습
  • 깊은 신경망의 표현 학습 (특징 학습)
    • 낮은 단계 은닉층은 선이나 모서리 같은 간단한 저급 특징 추출
    • 높은 단계 은닉층은 추상적 형태의 복잡한 고급 특징 추출
    • 표현 학습이 강력해져서 기존 응용에서 획기적인 성능 향상
      • 영상 인식, 음성 인식, 언어 번역 등
      • 새로운 응용 창출 (화소 수준의 영상 분할, CNN과 LSTM의 혼합 학습 모델 등)

깊은 다층 퍼셉트론 (깊은 신경망)

  • 깊은 다층 퍼셉트론의 구조와 동작
    • 입력 (d+1 차원의 특징 벡터)과 출력 (c개 분류)
    • L-1개의 은닉층 (입력층은 0번째 은닉층, 출력층은 L번째 은닉층으로 간주)
    • DMLP (Deep Multi-Layers Perceptron)의 가중치 행렬
    • DMLP의 동작: MLP의 동작을 나타내는 식을 보다 많은 단계로 확장한 것
    • DMLP 학습은 기존 MLP 학습과 유사 (경사도 계산, 가중치 갱신을 더 많은 층에서 수행)

깊은 다층 퍼셉트론의 학습

  • 주요 알고리즘의 개선 및 합성곱 신경망 (CNN)의 부상
    • 구조: 퍼셉트론 -> 다층 퍼셉트론 -> 깊은 다층 퍼셉트론
    • 활성함수: 계단 함수 -> 시그모이드 함수 -> ReLU와 변형
    • 목적함수: 평균 제곱 오차 -> 평균 제곱 오차 -> 교차 엔트로피 또는 로그우도

심층 학습은 왜 강력한가?

  • 종단간 최적화 된 학습 가능
    • 고전적 방법에서는 사람의 직관에 따르기 때문에 성능에 한계
    • 인식 대상이 달라지게 되면, 새로 처음부터 설계해야 했음
    • 하지만 심층 학습은 전체 깊은 신경망을 동시에 최적화 (종단간 학습, End-to-End)
  • 깊이 (Depth)의 중요성 (더 깊어질수록, 더 정교한 분할)
  • 계층적 특징 (Hierarchical Features)
    • 깊은 신경망에서는 층의 역할이 잘 구분됨
    • 반면 얕은 신경망은 하나 또는 두 개의 은닉층이 여러 형태의 특징을 모두 답당

5. Convolutional Neural Network (CNN)

컨볼루션 신경망

  • DMLP: 완전 연결 구조로 높은 복잡도, 학습이 느리고 과잉 적합이 발생할 수도 있음
  • 컨볼루션 신경망 (CNN) -> 부분 연결 구조
    • 격자 구조를 갖는 데이터에 적합
    • 컨볼루션 연산을 수행하여 특징 추출
    • 영상 분류나 문자 인식 등 인식 문제에 높은 성능
  • 컨볼루션 (Convolution): 해당하는 요소끼리 곱해서 결과를 모두 더하는 선형 연산
  • 보폭 (Stride): 커널을 다음 컨볼루션 연산을 위해 이동시키는 칸 수
  • 패딩 (Padding): 컨볼루션 결과의 크리를 조정하기 위해 입력 배열의 둘레를 확장하고, 0으로 채우는 연산
  • 풀링: 일정 크기의 블록을 통합하여 하나의 대푯값으로 대체하는 연산
    • 최댓값 풀링 (Max Pooling): 지정된 블록 내의 원소들 중에서 최댓값을 대푯값으로 선택
    • 평균값 풀링 (Average Pooling): 블록 내의 원소들의 평균값을 대푯값으로 사용

컨볼루션 신경망

  • 특징 추출
    • 컨볼루션 연산을 하는 Conv 층
    • ReLU 연산을 하는 ReLU
    • 풀링 연산을 하는 Pool
  • 추출된 특징을 통해 분류나 회귀를 수행하는 다층 퍼셉트론
    • 전체 연결된 (Fully connected) FC 층 반복
    • 분류의 경우 마지막 층에 소프트맥스 연산 수행

6. 심층 학습 기초 2

컨볼루션 (합성곱) 신경망 - CNN

  • 영상 인식의 예: 픽셀 단위의 정보로부터 특정 사물 등을 인식하는 것
  • 컴퓨터 비전의 어려운 점
    • 동일한 객체라도 영상을 찍는 카메라 이동에 따라 모든 픽셀 값이 변화 됨
    • 경계색 (보호색)으로 배경과 구분이 어려운 경우
    • 조명에 따른 변화로 구분이 힘듦
    • 기형적 형태의 영상 존재, 일부가 가려진 영상 존재
    • 같은 종류 간의 변화가 큼 (같은 고양이라도 고양이의 크기가 다름)
  • 컨볼루션층 (CONV): 선형 함수인 컨볼루션과 비선형 함수인 활성 함수의 조합
  • 풀링층 (POOL): 컨볼루션의 얻어진 특징을 통계적으로 압축
  • 덧대기 (Padding): 가장 자리에서 영상의 크기가 줄어드는 효과 방지 (각 층의 입출력 특징 형상 유지)
  • 가중치 공유 (묶은 가중치): 모든 노드가 동일한 커널을 사용하므로 매개변수는 3개에 불과 (모델 복잡도가 낮아짐)
  • 다중 특징 맵 추출: 커널 값에 따라 커널이 추출하는 특징이 달라짐 (한 개의 커널만 사용하면 너무 빈약한 특징만 추출)
  • 전체 구조: CONV - (ReLU) - POOL - … - FC
  • 영상 분야에서 다양하게 활용 (분류, 검색, 검출, 분할 등)

DMLP와 CNN의 비교

  • DMLP: 완전 연결 구조로 높은 복잡도, 학습이 느리고 과잉 적합 우려
  • CNN: 컨볼루션 연산을 이용한 부분 연결 (희소 연결) 구조로 복잡도 낮춤, 좋은 특징을 추출해서 학습
    • 격자 구조 (영상, 음성 등)를 갖는 데이터에 적합
    • 수용장은 인간의 시각과 유사
    • 가변 크기의 입력 처리 가능
  • CNN의 완전 연결 신경망과 차별
    • 학습에 의해 결정된 복수의 커널 (혹은 필터)에 대응되는 특징을 추출하는 CONV 층
      • 각 층의 입출력의 특징 형상을 유지시킴 (특징 맵)
      • 영상의 공간 정보를 유지하면서 공간적으로 인접한 정보의 특징을 효과적으로 인식
      • 각 커널 (필터)은 파라미터를 공유하여 완전 연결 신경망 대비 학습 파라미터가 적음
    • 추출된 영상의 특징을 요약하고 강화하는 POOL 층
    • 가변 크기의 데이터 다루기
      • 완전 연결 신경망은 특징 벡터의 크기가 달라지면, 연산 불가능
      • CNN은 가변 크기를 다룰 수 있음 (컨볼루션 층, 풀링 층에서 커널 및 보폭 수정을 통한 특징 맵 크기 조절)

컨볼루션 (합성곱) 연산

  • 컨볼루션은 해당하는 요소끼리 곱하고 결과를 모두 더하는 선형 연상
  • 영상에서 특징을 추출하기 위한 용도로 사용 (공간 필터)

컨볼루션층

  • 특징 학습
    • 커널을 사람이 설계 하지 않고, 학습으로 찾음
      • 2차원 영상이 7*7 커널을 64개 사용한다면, 학습은 (7*7+1) * 64 = 3200개의 매개변수를 찾아내야 함
    • DMLP와 마찬가지로 오류 역전파로 커널을 학습
  • 컨볼루션 연산에 따른 CNN 특성
    • 이동에 동변 (신호가 이동하면, 이동 정보가 그대로 특징 맵에 반영)
    • 병렬 분산 구조
      • 각 노드는 독립적으로 계산하므로 병렬 구조
      • 노드는 깊은 층을 거치면서 전체에 영향을 미치므로 분산 구조
  • 큰 보폭에 의한 다운 샘플링: 일반적으로 보폭이 k이면, k개 마다 하나씩 샘플링하여 커널을 적용
  • 텐서 적용: 3차원 이상의 구조에도 적용 가능
  • n차원 구조의 데이터 적용

풀링층

  • 풀링 (Pooling) 연산
    • 최대 풀링, 평균 풀링, 가중치 평균 풀링 등
    • 보폭을 크게 하면, 다운 샘플링 효과
  • 풀링 연산의 특성
    • 풀링은 상세 내용에서 요약 혹은 평균 등의 통계적 대표성을 추출함
    • 매개 변수가 없음
    • 특징 맵의 수를 그대로 유지함 (크기 X)
    • 연산 효율화 (연산 횟수, 연결 가중치 개수를 줄임)
    • 작은 변화에 둔감 (물체 인식이나 영상 검색 등에 효과적)

전체 구조

  • 빌딩 블록
    • CNN은 빌딩 블록을 이어 붙여서 깊은 구조로 확장
    • 전형적 빌딩 블록의 예시: 컨볼루션층 -> 활성함수 (주로 ReLU) -> 풀링층
    • 다중 커널을 사용하여 다중 특징 맵을 추출
  • 컨볼루션 층의 출력 크기와 매개변수 수
    • 입력: W1 * H1 * D1
    • K개 F*F 커널, 보폭 S, 덧대기 P
    • 출력의 크기: W2 * H2 * D2
      • W2 = (W1 - F + 2P) / S + 1
      • H2 = (H1 - F + 2P) / S + 1
      • D2 = K
    • 매개변수의 수
      • 커널마다 (F*F*D1)개의 가중치와 1개의 바이어스를 가짐. 전체 매개변수 수는 (F*F*D1) * K + K
    • 일반적으로 F = 2, S = 2 혹은 F = 3, S = 1을 사용함
  • 초창기 CNN 사례는 LeNet-5
    • 특징 추출
      • CONV - POOL - CONV - POOL - CONV의 다섯 층을 통해 28*28 명암 영상을 120차원의 특징 벡터로 변환
      • 평균 풀링 사용
    • 분류: 은닉층이 하나인 MLP
    • CNN 첫 성공 사례; 필기 숫자 인식기를 만들어서 수표 인식 자동화 시스템 구현



출처: 프로그래머스 인공지능 데브코스 4기 9주차 강의 -> 강의 내용 정리 깃허브 링크

This post is licensed under CC BY 4.0 by the author.

프로그래머스 인공지능 데브코스 7주차 정리 및 후기

프로그래머스 인공지능 데브코스 10주차 정리 및 후기