[AI Filter] 05. 주말 공부내용 정리

🌈아영🌷·2022년 2월 27일
0

AI Filter

목록 보기
6/12
post-thumbnail

Hyper Parameter(모델이 학습하지 않아 사람이 지정해주어야 하는 파라미터)

활성화 함수 (activation)

신경망 층의 선형 방정식의 계산 값에 적용하는 함수.

출력층에 적용하는 활성화함수는 이진분류일 경우 sigmoid, 다중 분류일 경우 softmax, 은닉층의 활성화 함수는 주로 sigmoid, ReLU 함수를 쓴다.

  • softmax : 여러개의 선형 방정식의 출력값을 0~1로 압축하고 전체 합이 1이 되도록 만드는 함수.

  • sigmoid

    뉴런의 출력 z값이 무한하게 큰 음수일 경우 0을 , 무한하게 큰 양수일 경우 1을 출력해 결국 z값을 0과 1 사이로 압축한다.

  • ReLU

    입력이 양수일 경우 마치 활성화 함수가 없는 것처럼 그냥 입력을 통과시키고 음수일 경우에는 0으로 만드는 함수.

손실 함수 (loss)

  • binary_crossentropy : 이진 분류
  • categorical_crossentropy : 다중 분류

최적화 함수 (optimizer)

  • 경사하강법 옵티마이저

    • SGD : sgd = keras.optimizers.SGD(learning_rate=0.1) (learning_rate 기본값 : 0.01)
    • momentum : sgd = keras.optimizers.SGD(momentum=0.9)
    • nestrov momentum : sgd = keras.optimizers.SGD(momentum=0.9, nesterov=True)
  • 적응적 학습률 옵티마이저

    • RMSprop
    • Adam
    • Adograd

sklearn vs keras

  • sklearn

    sc = SGDClassfier(loss='log', max_iter=5)
    sc.fit(train_scaled, train_target)
    sc.score(val_scaled, val_target)
  • keras

    dense = keras.layers.Dense(10, activation='softmax', input_shape=(784, ))
    model = keras.Sequential(dense)
    model.complie(loss='sparse_categorical_crossentropy', metrics='accuracy')
    model.fit(train_scaled, train_target, epochs=5)
    model.evaluate(val_scaled, val_target)
    • 층을 추가하는 방법

      1. model = keras.Sequential([
            keras.layers.Dense(100, activation="sigmoid", input_shape=(784, ), name="hidden"),
            keras.layers.Dense(10, activation="softmax", name="output")
        ], name = 'model')
      2. model = keras.Sequential()
        model.add(keras.layers.Dense(100, activation="sigmoid", input_shape=(784, )))
        model.add(keras.layers.Dense(10, activation="softmax", name="output"))

CNN

Convolution Neural Network의 약자로 딥러닝에서 주로 이미지나 영상 데이터를 처리할 때 쓰이며 Convolution이라는 전처리 작업이 수행되는 Neural Network모델이다.

왜 CNN?

  • 일반 DNN(Deep Neural Network)은 기본적으로 1차원 형태의 데이터를 사용한다. 하지만 이미지는 일반적으로 2차원 형태의 데이터이다. 이를 사용하기 위해 flatten시켜 한줄 데이터로 만들 때 이미지의 공간적/지역적 정보가 손실되고, 학습시간과 능률의 효율성이 저하된다. 이러한 문제점을 해결하기 위해 CNN이 등장했다.

CNN의 구조

[출처 : https://sungwookkang.com/1408]

특정 이미지의 특징을 추출하고(convolution), 특징을 강화하고 이미지의 크기를 축소하는(pooling)과정의 반복이다.

Convolution

2차원 이미지에 특정 크기의 필터를 적용시켜 이미지의 패턴을 찾아 처리하는 방법

[출처 : 허재필 교수님 컴퓨터비전개론 수업자료]

3X3 크기의 필터(커널)을 이미지에 적용시킨 모습

어떤 모양의 필터를 적용시키냐에 따라 이미지의 특징이 다르게 출력된다.

padding

이미지에 필터를 적용시키면 자연스럽게 출력 이미지의 사이즈가 줄어들게 된다. 3*3 필터를 적용시킨다면 가로 세로 크기가 2씩 줄어들 것이다. 이것을 해결하기 출력이미지 주변을 특정값으로 채우게 되는데 이것이 padding이다.

0으로 채우는 zero-padding이 주로 쓰인다고 한다.

pooling

이전단계의 convolution 과정을 통해 많은 수의 이미지가 생성되었다. 하지만 이미지가 많아지면 처리해야할 값이 너무 많아져 연산속도나 다른 부분에서 문제가 생긴다. 이를 해결하기 위해 고안된 방법이 pooling이다. 결국 결과이미지의 크기를 줄여주는 것이 pooling의 목적이다.

  • pooling의 두가지 방법
    1. max pooling
    2. average pooling

0개의 댓글