머신러닝 28 ~ 34

정우현·2024년 7월 13일

ML 공부

목록 보기
12/16

TensorFlow

  • Tensor를 흘려보내면서 머신러닝과 딥러닝 알고리즘을 수행하는 라이브러리
  • 텐서플로를 이용한 프로그램 작성 시
  1. 상수, 변수, 텐서연산 등의 노드와 엣지를 먼저 정의하고
  2. 세션을 만들고 그 세션을 통해 노드간의 데이터 연산 수행
    -> 세션을 만들지 않고 print와 같은 명령문을 실행하면, 저장된 값이 아닌 현재 정의되어 있는 노드의 상태(노드타입, shape 등)이 출력됨

Tensor

  • 숫자 1 (스칼라 또는 rank 0 텐서)
  • 1차원 배열 [1, 2] (벡터 또는 rank 1 텐서)
  • 2차원 배열 [ [1,2], [3,4] ] (행렬 또는 rank 2 텐서)
  • 3차원 배열 [ [[1,2]]. [[3,4]] ] (텐서 또는 rank 3 텐서)
  • 모든 데이터는 텐서로 취급함
  • 이러한 텐서들은 그래프 구조에서 노드에서 노드로 흘러감

TensoFlow 사용 예제

  • 노드 정의 및 세션 정의

  • placehold 사용

  • 변수 노드 정의

  • 텐서플로를 이용한 Linear Regression / Logistic Regreesion 구현하기
    https://www.youtube.com/watch?v=DyVxaz9VNmQ&list=PLS8gIc2q83OjStGjdTF2LZtc0vefCAbnX&index=29
    https://www.youtube.com/watch?v=X9MfegBftmY&list=PLS8gIc2q83OjStGjdTF2LZtc0vefCAbnX&index=30
    여기서 가중치 및 bias 최적화를 위한 경사하강법을 적용할 때, TensorFlow에서 제공하는 GradientDescentOptimizer 함수를 사용
    -> 손실함수 loss를 최소화하고, 최종적으로는 W, b를 최적화시킴

  • 텐서플로를 이용한 Neural Network(NN) 구현 및 MNIST 구현
    텐서플로에서는 활성화함수를 sigmoid 대신 relu 함수 사용
    sigmoid: 출력값이 무조건 0~1 사이
    ReLu: 입력값이 음수이면 0으로 출력, 양수이면 입력값 그대로 출력 -> 경사도가 사라지는 문제 완화 가능하여 자주 사용됨
    선형회귀에도 sigmoid 대신 softmax 함수 사용
    softmax: 출력값이 각각의 값이 정답일 확률을 나타냄

  • MNIST
    MNIST와 같은 이미지데이터에 대한 정확도를 99% 이상으로 높이기 위해서는 신경망 아키텍쳐를 CNN으로 전환하는 것이 필요

  • CNN
    일반 NN과 CNN의 아키텍쳐 비교

    conv (convolution)
    -> 입력데이터와 가중치들의 집합체인 다양한 필터와의 convolution 연산을 통해 입력데이터의 특징을 추출하는 역할 수행
    relu
    -> 입력값이 0 이상은 그대로 출력, 0 이하는 0으로 출력
    pooling
    -> 입력 정보를 최대값/최소값/평균값 등으로 압축하여 데이터 연산량을 줄여주는 역할 수행
    padding
    -> convolution 연산을 계속 수행하면 데이터 크기가 더 이상 사용할 수 없을만큼 작아짐
    -> 이를 해결하기 위해 입력 데이터 주변을 특정 값으로 채우는 padding 진행
    출력 데이터 크기 계산
    ->

  • Convolution layer

  1. 입력데이터와 1개 이상의 필터들과의 convolution 연산을 통해
  2. 입력 데이터 특징을 추출하여 특징 map을 만들고
  3. 특징 map에서 최대 값을 뽑아내서 다음 층으로 전달
    => 필러를 통해 데이터 특징을 추출한다는 의미는?
    convolution 연산 결과인 특징 map 값을 압축하고 있는 pooling 값을 보면
    풀링 값이 크다는 것은, 데이터 안에 해당 필터의 특징이 많이 포함되어 있다는 것을 의미
    즉, 특징 map 값이 압축되어 있는 pooling 결과 값을 통해 데이터의 특징을 추출할 수 있음
  • 최종 CNN 아키텍쳐
profile
Protein Design Lab Researcher, Seoul National University

0개의 댓글