인공 지능 Cnn | 딥러닝 Cnn, 개념만 이해하기 67 개의 베스트 답변

당신은 주제를 찾고 있습니까 “인공 지능 cnn – 딥러닝 CNN, 개념만 이해하기“? 다음 카테고리의 웹사이트 https://you.charoenmotorcycles.com 에서 귀하의 모든 질문에 답변해 드립니다: https://you.charoenmotorcycles.com/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 인공지능 개발자 모임 이(가) 작성한 기사에는 조회수 20,872회 및 좋아요 413개 개의 좋아요가 있습니다.

Table of Contents

인공 지능 cnn 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 딥러닝 CNN, 개념만 이해하기 – 인공 지능 cnn 주제에 대한 세부정보를 참조하세요

CNN(Convolutional Neural Network)은
이미지를 처리하는 딥러닝 모델입니다.
컨볼루션 신경망이 탄생하게 된 배경과
구체적인 동작방식에 대해 알아봤습니다.
(클로바더빙으로 제작한 AI 보이스입니다.)

[ 인공지능 개발자 모임 ]– https://www.facebook.com/groups/AIDevKr/
– http://aidev.co.kr/

인공 지능 cnn 주제에 대한 자세한 내용은 여기를 참조하세요.

인공지능 : CNN(Convolutional Neural Networks) 개념, 예제, 분석

CNN의 주요 특수 기법은 convolution인데, 여기서 필터가 Input 위로 들어가 입력값 + 피쳐 맵의 필터 값을 합칩니다. 결국, 목표는 CNN에 새로운 이미지 …

+ 여기에 보기

Source: jjeongil.tistory.com

Date Published: 7/5/2021

View: 8518

[AI] CNN(Convolutional Neural Network) 개념정리 – velog

CNN(Convolutional Neural Network)에 대해 알아보려고 한다. … CNN은 시각적 이미지를 분석하는 데 사용되는 깊고 피드-포워드적인 인공신경망의 한 종류 …

+ 여기에 표시

Source: velog.io

Date Published: 2/3/2021

View: 2240

[인공지능] ANN, DNN, CNN, RNN 개념과 차이

머신러닝(Machine Learning) 혹은 기계학습은 인공지능의 한 분야로, 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야를 뜻합니다. 딥 …

+ 여기에 표시

Source: ebbnflow.tistory.com

Date Published: 12/25/2022

View: 5904

CNN을 이용한 딥러닝 기반 하수관 손상 탐지 분류 시스템

본 연구는 인공지능 분야의 딥러닝 기술을 기반으로 한 하수관 손상의 자동 탐지 분류 시스템을 제안한다. 성능의. 최적화를 위하여 DB 획득 시 발생된 조도 및 그림자 …

+ 자세한 내용은 여기를 클릭하십시오

Source: www.koreascience.or.kr

Date Published: 2/26/2021

View: 8159

인공지능 기법(CNN)을 이용한 음성과 음악구분

인공지능 기법(CNN)을 이용한 음성과 음악구분. 한상일. 한국기술교육대학교 산업경영학과. Speech-Music Discrimination Using Deep Learning. Sang-Il Han.

+ 더 읽기

Source: www.kais99.org

Date Published: 8/17/2022

View: 8722

Ⅴ. 감각과 인지 – 5. CNN이란 무엇일까요? – AI4School

인공지능 개발자들은 이런 문제점을 해결하기 위해 CNN(Convolutional Neural Network)이라는 인공신경망을 개발하였습니다. 컴퓨터에게 이미지에서 특징적인 부분만을 …

+ 여기를 클릭

Source: ai4school.org

Date Published: 9/22/2021

View: 9247

CNN의 발전과 활용, 왜 딥러닝인가?

Facebook AI Research (FAIR)의 Detectron 시스템은 이러한 모든 SOTAstate of the art급 객체 탐지 알고리즘을 적용하였으며, 오픈 소스이다. CNN의 대표적인 활용 …

+ 여기에 더 보기

Source: atcold.github.io

Date Published: 12/15/2021

View: 3671

CNN(Convolutional Neural Network, 컨볼루션 신경망)

경인교육대학교 미래인재연구소 & 인공지능교육 연구소 … CNN(Convolutional Neural Network)는 합성곱신경망으로도 불립니다.

+ 자세한 내용은 여기를 클릭하십시오

Source: computing.or.kr

Date Published: 12/7/2021

View: 8862

CNN(Convolutional Neural Network) 알고리즘을 활용한 음성 …

음성인식 기술은 딥러닝과 결합되며 빠른 속도로 발전하고 있다. 특히 음성인식 서비스가 인공지능 스피커, 차량용 음성인식, 스마트폰 등의 각종 기기와 연결되며 …

+ 더 읽기

Source: koreascience.kr

Date Published: 2/5/2021

View: 2884

[이석중의 알기쉬운 인공지능] CNN 구조(9) – MobileNet – 블로그

CNN 구조(9) – MobileNet. 인공지능의 성능이 입증됨에 따라, 고성능 GPU를 쓸 수 없는 모바일 폰이나 embedded 환경에서도 실시간 인공지능 구현에 …

+ 여기에 더 보기

Source: blog.naver.com

Date Published: 9/17/2022

View: 2496

주제와 관련된 이미지 인공 지능 cnn

주제와 관련된 더 많은 사진을 참조하십시오 딥러닝 CNN, 개념만 이해하기. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

딥러닝 CNN, 개념만 이해하기
딥러닝 CNN, 개념만 이해하기

주제에 대한 기사 평가 인공 지능 cnn

  • Author: 인공지능 개발자 모임
  • Views: 조회수 20,872회
  • Likes: 좋아요 413개
  • Date Published: 2020. 10. 16.
  • Video Url link: https://www.youtube.com/watch?v=9Cu2UfNO-gw

인공지능 : CNN(Convolutional Neural Networks) 개념, 예제, 분석

반응형

이 글에서는 CNN(Convolutional Neural Networks)을 탐구하고, 높은 수준에서 그것들이 어떻게 두뇌의 구조에서 영감을 얻는지 살펴보기로 하겠습니다.

The Brain

우리는 끊임없이 주변의 세계를 분석합니다. 의식적인 노력 없이, 우리는 우리가 보는 모든 것에 대해 예측을 하고, 그것에 따라 행동합니다. 우리가 어떤 것을 볼 때, 과거에 배운 것을 바탕으로 모든 대상에 라벨을 붙입니다.

여러분은 아마 “저 아이는 의자 위에 서 있는 행복한 소년이다.”라고 생각할 수 있습니다. 아니면 비명을 지른다고 생각할 수 있습니다. 또는 케이크를 망치려는 것으로 볼 수 있습니다.

이것이 우리가 하루 종일 아낌없이 하는 것입니다. 우리는 패턴을 보고, 라벨을 붙이고, 예측하고, 인지합니다. 하지만 어떻게 그렇게 할 수 있을까요? 우리가 보는 모든 것을 어떻게 해석할 수 있을까요?

자연은 이것을 위해 시스템을 만드는 데 5억년이 넘게 걸렸습니다. 즉, 눈과 뇌의 상호작용이 우리 주변의 세상을 바라 볼 수 있는 근본적인 이유입니다.

보는 것에 대한 실제적인 해석은 뇌에서, 1차 시각적 피질에서 일어납니다.

물체를 볼 때, 눈에 있는 빛 수용기는 입력이 처리되고 있는 1차 시각피질로 신호를 보냅니다. 1차 시각피질은 눈이 보는 것을 이해합니다.

이 모든 것이 우리에게 매우 자연스러운 것처럼 보입니다. 우리는 삶에서 보는 모든 대상과 사람들을 인식할 수 있다는 것이 얼마나 특별한지에 대해 거의 생각하지도 않습니다. 뇌의 뉴런과 연결의 매우 복잡한 계층 구조는 물체를 기억하고 라벨을 붙이는 이 과정에 중요한 역할을 합니다.

예를 들어, 우산이 무엇인지 어떻게 배웠는지 생각해 보겠습니다. 부모님이나 가족은 우리에게 직접적인 환경에 있는 물건들의 이름을 말해주었습니다. 우리는 주어진 예를 통해 배웠습니다. 천천히 그러나 확실히 우리는 우리의 환경에서 특정한 것들을 점점 더 자주 인식하기 시작했습니다. 다음에 우리가 그것들을 보았을 때, 우리는 즉시 이 물체의 이름이 무엇인지 알 수 있습니다. 그것들은 바로 우리의 모델이 되는 것입니다.

Convolutional Neural Networks

아이가 사물을 인식하는 법을 배우는 방법과 유사하게, 우리는 입력 내용을 일반화하고 이전에 보지 못했던 이미지에 대한 예측을 하기 전에 수백만 장의 사진을 알고리즘에 보여줄 필요가 있습니다.

컴퓨터는 우리와는 다른 방식으로 ‘보고’ 있습니다. 그들의 세계는 숫자로만 이루어져 있습니다. 모든 이미지는 픽셀로 알려진 2차원 숫자의 배열로 표현됩니다.

하지만 컴퓨터가 다른 방식으로 이미지를 인식한다는 사실로, 우리가 컴퓨터에게 패턴을 인식하도록 훈련시킬 수 없다는 것을 의미하지는 않습니다. 우리는 단지 어떤 이미지가 다른 방식으로 존재하는지 생각하기만 하면 됩니다.

영상에서 물체를 인식하는 방법을 알고리즘에 가르치기 위해, 우리는 특정 유형의 인공 신경망을 사용합니다. ( CNN(Convolutional Neural Network) )

CNN은 뇌에서 영감을 받았습니다다. 포유류가 세상을 시각적으로 인식하는 방법에 대한 새로운 모델을 제안된 것입니다. 고양이와 원숭이 시각 피질에는 직접적인 환경에서 독점적으로 반응하는 뉴런이 포함되어 있다는 것을 알아내었습니다.

논문에서, 각각 다른 방식으로 작용하는 뇌의 시각 뉴런 세포의 두 가지 기본적인 형태, 즉 단순한 세포와 복잡한 세포에 대해 설명했습니다.

복잡한 세포는 망막의 절대 위치가 바뀌어도 일정한 자극에 계속 반응합니다.

시각에서, 단일 감각 신경 세포의 수용 영역은 망막의 특정 영역으로, 그 신경 세포의 발화에 무언가가 영향을 미칩니다. 모든 감각 신경 세포는 유사한 수용장을 가지고 있습니다.

게다가, 계층의 개념은 뇌에서 중요한 역할을 합니다. 정보는 패턴의 순서에 따라 순차적으로 저장됩니다. 뇌의 가장 바깥 층인 신피질은 정보를 계층적으로 저장합니다. 그것은 피질 기둥이나 신피질에 있는 뉴런의 균일하게 조직된 그룹에 저장됩니다.

1980년에 후쿠시마라는 연구자가 계층적 신경망 모델을 제안했습니다. 그는 그것을 신인지론이라고 불렀습니다. 이 모델은 단순하고 복잡한 세포의 개념에서 영감을 얻었습니다. 신인지론은 물체의 형상에 대해 배우면서 패턴을 인식할 수 있다는 것입니다.

이후 1998년 벵기오, 르쿤, 보투, 해프너에 의해 컨볼루션 신경망이 소개되었습니다. 그들의 첫 번째 Convolutional Neural Network는 LeNet-5라고 불렸으며 손으로 쓴 숫자와 숫자를 구분할 수 있었습니다.

Architecture

나머지 부분에서는 CNN의 구조를 살펴보고 파이썬의 구현도 알아보겠습니다.

Convolutional Neural Networks는 일반 Neual Networks와 다른 아키텍처를 가지고 있습니다. 일반 신경망은 일련의 숨겨진 레이어를 통해 입력을 변환합니다. 모든 층은 일련의 뉴런으로 이루어져 있으며, 각 층은 이전의 층에 있는 모든 뉴런과 완전히 연결되어 있습니다. 마지막으로, 예측을 나타내는 마지막 완전 연결 계층, 즉 출력 계층이 있습니다.

컨볼루션 신경망은 약간 다릅니다. 우선 층은 폭, 높이, 깊이 등 3차원으로 구성됩니다. 또한, 한 층의 뉴런은 다음 층의 모든 뉴런과 연결되지 않고 단지 작은 영역에만 연결됩니다. 마지막으로, 최종 산출물은 깊이 차원을 따라 구성된 확률 점수의 단일 벡터로 감소될 것입니다.

CNN은 두 가지 요소로 이루어져 있다.

– 히든 레이어

이 파트에서, 네트워크는 피쳐들이 감지되는 동안 일련의 콘볼루션과 풀링 작업을 수행합니다. 만약 여러분이 얼룩말의 사진을 가지고 있다면, 이 부분은 네트워크가 그것의 줄무늬, 두 귀, 네 개의 다리를 인식하는 부분입니다.

– 분류 부분

여기서 완전히 연결된 층(fully connected layer)은 이러한 추출된 특징들 위에 분류자 역할을 합니다. 그들은 알고리즘이 예측하는 대로 영상에 있는 물체에 대한 확률을 할당합니다.

# before we start building we import the libraries

import numpy as np

from keras.layers import Conv2D, Activation, MaxPool2D, Flatten, Densefrom keras.models import Sequential

Feature extraction

콘볼루션은 CNN의 주요 구성 요소 중 하나입니다. convolution이라는 용어는 세 번째 함수를 생성하기 위해 두 함수의 수학적인 조합을 말합니다. 이것은 두 세트의 정보를 병합합니다.

CNN의 경우 입력 데이터에 대해 필터나 커널을 사용하여 convolution을 수행하여 피쳐 맵을 생서합니다.

우리는 필터를 Input 위로 밀어넣음으로써 합칩니다. 모든 위치에서 매트릭스 곱셈이 수행되고 결과를 Feature Map에 요약합니다.

아래의 애니메이션에서는, convolution 동작을 볼 수 있습니다. 필터(녹색 사각형)가 우리의 입력(파란색 사각형) 위로 가는 것을 볼 수 있으며, 합한 합은 피쳐 맵(빨간색 사각형)으로 들어갑니다.

우리 필터의 영역은 뉴런 세포의 이름을 따서 수용장이라고도 불립니다. 이 필터의 크기는 3×3입니다.

설명을 위해서 2D로 동작을 보여드렸지만, 실제로는 3D로 진행되는 콘볼루션입니다. 각 이미지는 폭, 높이 및 깊이에 대한 디멘션을 가진 3D 매트릭스로 표현됩니다. 깊이는 이미지에 사용되는 색상 채널(RGB) 때문에 차원이 됩니다.

입력에 수많은 난해도를 부여하는데, 각 작업에서 다른 필터를 사용합니다. 이렇게 하면 피쳐 맵이 달라집니다. 결국, 이러한 피쳐 맵을 모두 취하여, 그것들을 콘볼루션 계층의 최종 출력물로 합칩니다.

다른 신경망과 마찬가지로, 출력을 비선형적으로 만들기 위해 활성화 기능을 사용합니다. Convolutional Neural Network의 경우, convolution의 출력은 활성화 기능을 통해 전달됩니다. 이것은 ReLU 활성화 기능일 수도 있습니다.

스트라이드는 매번 콘볼루션 필터가 움직이는 단계의 크기입니다. 보폭 크기는 보통 1이며, 이는 필터가 픽셀을 픽셀 단위로 옮겨가는 것을 의미합니다. 스트라이드 크기를 증가시킴으로써, 필터는 더 큰 간격을 두고 Input 위로 들어가므로 셀 사이에 겹치는 것이 적어집니다.

아래의 애니메이션은 1의 움직임을 보여줍니다.

피쳐 맵의 크기는 항상 Input보다 작기 때문에, 피쳐 맵이 축소되는 것을 막기 위해 무엇인가를 해야 합니다. 여기가 바로 패딩을 사용하는 곳입니다.

0 값 픽셀 층을 추가하여 입력에 0을 둘렀으므로 피쳐 맵이 줄어들지 않습니다. 패딩은 콘볼루션을 수행한 후 공간 크기를 일정하게 유지하는 것 외에도 성능을 향상시키고 커널과 스트라이드 크기가 입력에 맞도록 합니다.

콘볼루션 레이어 후 CNN 레이어 사이에 풀링 레이어를 추가하는 것이 일반적입니다. 풀링의 기능은 네트워크의 매개변수 및 연산을 줄이기 위해 치수성을 지속적으로 감소시킵니다. 이렇게 하면 훈련 시간이 단축되고 오버핏을 제어할 수 있습니다.

풀링의 가장 빈번한 유형은 각 창에서 최대값을 차지하는 최대 풀링입니다. 창 크기를 미리 지정해야 합니다. 이는 중요한 정보를 유지하는 동시에 피쳐 맵 크기를 감소시킵니다.

따라서 CNN을 사용할 때 우리가 결정해야 할 4가지 중요한 하이퍼 파라미터는 다음과 같습니다.

– 커널 사이즈

– 필터 수(즉, 사용할 필터 수)

– 스트라이드(필터의 계단 크기)

– 패딩

# Images fed into this model are 512 x 512 pixels with 3 channels

img_shape = ( 28 , 28 , 1 )

# Set up the model

model = Sequential ()

# Add convolutional layer with 3, 3 by 3 filters and a stride size of 1 # Set padding so that input size equals output size

model.add ( Conv2D ( 6 , 2 , input_shape = img_shape ))

# Add relu activation to the layer

model.add ( Activation ( ‘ relu ‘ ))

#Pooling

model.add ( MaxPool2D ( 2 ))

연결층을 시각화하는 좋은 방법은 아래와 같습니다. 잠깐 보고 무슨 일이 일어나고 있는지 정말로 이해하면 좋을 것 같습니다.

Classification

연결 층과 풀링 레이어 후, Classification 부분은 몇 개의 완전히 연결된 레이어(fully connected layer)로 구성되어 있습니다. 그러나 완전히 연결된 이러한 계층은 1차원 데이터만 수용할 수 있습니다. 3D 데이터를 1D로 변환하기 위해서, 파이썬에서 flatten 함수를 사용합니다. 이것은 본질적으로 3D 볼륨을 1D 벡터로 변환합니다.

Convolutional NN의 마지막 계층은 완전히 연결된 계층입니다. 완전히 연결된 계층의 뉴런은 이전 계층을 모두 활성화하여 완전히 연결됩니다. 이 부분은 원칙적으로 일반 신경망과 동일합니다.

#Fully connected layers

# Use Flatten to convert 3D data to 1Dmodel.add(Flatten())

# Add dense layer with 10 neuronsmodel.add(Dense(10))

# we use the softmax activation function for our last layermodel.add(Activation(‘softmax’))

# give an overview of our model

model.summary

# _________________________________________________________________ # Layer (type) Output Shape Param # ================================================================= # conv2d_1 (Conv2D) (None, 27, 27, 6) 30 # _________________________________________________________________ # activation_1 (Activation) (None, 27, 27, 6) 0 # _________________________________________________________________ # max_pooling2d_1 (MaxPooling2 (None, 13, 13, 6) 0 # _________________________________________________________________ # flatten_1 (Flatten) (None, 1014) 0 # _________________________________________________________________ # dense_1 (Dense) (None, 10) 10150 # _________________________________________________________________ # activation_2 (Activation) (None, 10) 0 # ================================================================= # Total params: 10,180Trainable params: 10,180Non-trainable params: 0 # __________________________________________________________________

Training

CNN을 훈련시키는 것은 백프로파제이션이나 구배계(gradient down)를 이용하는 일반 신경망과 같은 방식으로 동작합니다. 그러나, 여기에서는 조금 더 수학적으로 복잡합니다. 그 이유는 복잡한 작업 때문입니다.

“”” Before the training process, we have to put together a learning process in a particular form. It consists of 3 elements: an optimiser, a loss function and a metric. “””

model.compile ( loss = ‘ sparse_categorical_crossentropy ‘ , optimizer = ‘ adam ‘ , metrics =[ ‘ acc ‘ ])

# dataset with handwritten digits to train the model onfrom keras.datasets import mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data ()

x_train = np.expand_dims ( x_train, – 1 )

x_test = np.expand_dims ( x_test, – 1 )

# Train the model, iterating on the data in batches of 32 samples# for 10 epochs

model.fit ( x_train, y_train, batch_size = 32 , epochs = 10 , validation_data = (x_test,y_test)

# Training…

Summary

요약하면 CNN은 특히 이미지 분류와 인식에 유용합니다. 두 개의 주요 부분을 가지고 있습니다. 바로 피쳐 추출 부분과 분류 부분입니다.

CNN의 주요 특수 기법은 convolution인데, 여기서 필터가 Input 위로 들어가 입력값 + 피쳐 맵의 필터 값을 합칩니다. 결국, 목표는 CNN에 새로운 이미지를 주입하여, CNN이 생각하는 물체가 보이는지 또는 텍스트로 이미지를 묘사할 수 있도록 하는 것입니다.

반응형

[인공지능] ANN, DNN, CNN, RNN 개념과 차이

● 인공지능, 머신러닝, 딥러닝

인공지능(Artificial Intelligence)는 인간의 지능이 갖고 있는 기능을 갖춘 컴퓨터 시스템을 뜻하며, 인간의 지능을 기계 등에 인공적으로 구현한 것을 말합니다.

머신러닝(Machine Learning) 혹은 기계학습은 인공지능의 한 분야로, 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야를 뜻합니다.

딥러닝(Deep Learning)은 여러 비선형 변환기법의 조합을 통해 높은 수준의 추상화(다량의 복잡한 자료들에서 핵심적인 내용만 추려내는 작업)을 시도하는 기계학습 알고리즘의 집합으로 뜻합니다.

인공지능 & 머신러닝 & 딥러닝

따라서 위의 그림처럼 가장 포괄적인 인공지능 분야 안에 머신러닝이 속하고 있고, 머신러닝 분야 속에는 딥러닝 분야가 속해있다고 볼 수 있겠습니다.

● ANN, DNN, CNN, RNN

ANN(Artificial Neural Network)

위에서 설명한 머신러닝의 한 분야인 딥러닝은 인공신경망(Artificial Neural Network)를 기초로 하고 있는데요. 인공신경망이라고 불리는 ANN은 사람의 신경망 원리와 구조를 모방하여 만든 기계학습 알고리즘 입니다.

인간의 뇌에서 뉴런들이 어떤 신호, 자극 등을 받고, 그 자극이 어떠한 임계값(threshold)을 넘어서면 결과 신호를 전달하는 과정에서 착안한 것입니다. 여기서 들어온 자극, 신호는 인공신경망에서 Input Data이며 임계값은 가중치(weight), 자극에 의해 어떤 행동을 하는 것은 Output데이터에 비교하면 됩니다.

ANN 인공신경망

인공신경망은 시냅스의 결합으로 네트워크를 형성한 인공뉴런(노드)이 학습을 통해 시냅스의 결합 세기를 변화시켜, 문제 해결 능력을 가지는 모델 전반을 가리킨다. (출처 : 위키백과)

쉽게 설명하자면,

신경망은 다수의 입력 데이터를 받는 입력층(Input), 데이터의 출력을 담당하는 출력층(Output), 입력층과 출력층 사이에 존재하는 레이어들(은닉층)이 존재합니다. 여기서 히든 레이어들의 갯수와 노드의 개수를 구성하는 것을 모델을 구성한다고 하는데, 이 모델을 잘 구성하여 원하는 Output값을 잘 예측하는 것이 우리가 해야할 일인 것입니다. 은닉층에서는 활성화함수를 사용하여 최적의 Weight와 Bias를 찾아내는 역할을 합니다.

ANN의 문제점

학습과정에서 파라미터의 최적값을 찾기 어렵다.

출력값을 결정하는 활성화함수의 사용은 기울기 값에 의해 weight가 결정되었는데 이런 gradient값이 뒤로 갈수록 점점 작아져 0에 수렴하는 오류를 낳기도 하고 부분적인 에러를 최저 에러로 인식하여 더이상 학습을 하지 않는 경우도 있습니다.

Overfitting에 따른 문제

학습시간이 너무 느리다.

은닉층이 많으면 학습하는데에 정확도가 올라가지만 그만큼 연산량이 기하 급수적으로 늘어나게 됩니다.

하지만 이는 점점 해결되고 있습니다. 느린 학습시간은 그래픽카드의 발전으로 많은 연산량도 감당할 수 있을 정도로 하드웨어의 성능이 좋아졌고, 오버피팅문제는 사전훈련을 통해 방지할 수 있게 되었습니다.

DNN(Deep Neural Network)

NN vs DNN

ANN기법의 여러문제가 해결되면서 모델 내 은닉층을 많이 늘려서 학습의 결과를 향상시키는 방법이 등장하였고 이를 DNN(Deep Neural Network)라고 합니다. DNN은 은닉층을 2개이상 지닌 학습 방법을 뜻합니다. 컴퓨터가 스스로 분류레이블을 만들어 내고 공간을 왜곡하고 데이터를 구분짓는 과정을 반복하여 최적의 구번선을 도출해냅니다. 많은 데이터와 반복학습, 사전학습과 오류역전파 기법을 통해 현재 널리 사용되고 있습니다.

그리고, DNN을 응용한 알고리즘이 바로 CNN, RNN인 것이고 이 외에도 LSTM, GRU 등이 있습니다.

CNN(합성곱신경망 : Convolution Neural Network)

기존의 방식은 데이터에서 지식을 추출해 학습이 이루어졌지만, CNN은 데이터의 특징을 추출하여 특징들의 패턴을 파악하는 구조입니다. 이 CNN 알고리즘은 Convolution과정과 Pooling과정을 통해 진행됩니다. Convolution Layer와 Pooling Layer를 복합적으로 구성하여 알고리즘을 만듭니다.

CNN

Convolution

CNN – convolution

데이터의 특징을 추출하는 과정으로 데이터에 각 성분의 인접 성분들을 조사해 특징을 파악하고 파악한 특징을 한장으로 도출시키는 과정이다. 여기서 도출된 장을 Convolution Layer라고 한다. 이 과정은 하나의 압축 과정이며 파라미터의갯수를 효과적으로 줄여주는 역할을 합니다.

Pooling

이는 Convolution 과정을 거친 레이어의 사이즈를 줄여주는 과정입니다. 단순히 데이터의 사이즈를 줄여주고, 노이즈를 상쇄시키고 미세한 부분에서 일관적인 특징을 제공합니다.

CNN은 보통 정보추출, 문장분류, 얼굴인식 등의 분야에서 널리 사용되고 있습니다.

RNN(순환신경망 : Recurrent Neural Network)

RNN

RNN 알고리즘은 반복적이고 순차적인 데이터(Sequential data)학습에 특화된 인공신경망의 한 종류로써 내부의 순환구조가 들어있다는 특징을 가지고 있습니다. 순환구조를 이용하여 과거의 학습을 Weight를 통해 현재 학습에 반영합니다. 기존의 지속적이고 반복적이며 순차적인 데이터학습의 한계를 해결하연 알고리즘 입니다. 현재의 학습과 과거의 학습의 연결을 가능하게 하고 시간에 종속된다는 특징도 가지고 있습니다. 음성 웨이브폼을 파악하거나, 텍스트의 앞 뒤 성분을 파악할 때 주로 사용됩니다.

CNN의 발전과 활용, 왜 딥러닝인가? · 딥러닝

CNN의 발전과 활용, 왜 딥러닝인가?

$$\gdef \sam #1 {\mathrm{softargmax}(#1)}$$ $$\gdef \vect #1 {\boldsymbol{#1}} $$ $$\gdef \matr #1 {\boldsymbol{#1}} $$ $$\gdef \E {\mathbb{E}} $$ $$\gdef \V {\mathbb{V}} $$ $$\gdef \R {\mathbb{R}} $$ $$\gdef \N {\mathbb{N}} $$ $$\gdef \relu #1 {\texttt{ReLU}(#1)} $$ $$\gdef \D {\,\mathrm{d}} $$ $$\gdef \deriv #1 #2 {\frac{\D #1}{\D #2}}$$ $$\gdef \pd #1 #2 {\frac{\partial #1}{\partial #2}}$$ $$\gdef \set #1 {\left\lbrace #1 \right\rbrace} $$ % My colours $$\gdef \aqua #1 {\textcolor{8dd3c7}{#1}} $$ $$\gdef \yellow #1 {\textcolor{ffffb3}{#1}} $$ $$\gdef \lavender #1 {\textcolor{bebada}{#1}} $$ $$\gdef \red #1 {\textcolor{fb8072}{#1}} $$ $$\gdef \blue #1 {\textcolor{80b1d3}{#1}} $$ $$\gdef \orange #1 {\textcolor{fdb462}{#1}} $$ $$\gdef \green #1 {\textcolor{b3de69}{#1}} $$ $$\gdef \pink #1 {\textcolor{fccde5}{#1}} $$ $$\gdef \vgrey #1 {\textcolor{d9d9d9}{#1}} $$ $$\gdef \violet #1 {\textcolor{bc80bd}{#1}} $$ $$\gdef \unka #1 {\textcolor{ccebc5}{#1}} $$ $$\gdef \unkb #1 {\textcolor{ffed6f}{#1}} $$ % Vectors $$\gdef \vx {\pink{\vect{x }}} $$ $$\gdef \vy {\blue{\vect{y }}} $$ $$\gdef \vb {\vect{b}} $$ $$\gdef \vz {\orange{\vect{z }}} $$ $$\gdef \vtheta {\vect{\theta }} $$ $$\gdef \vh {\green{\vect{h }}} $$ $$\gdef \vq {\aqua{\vect{q }}} $$ $$\gdef \vk {\yellow{\vect{k }}} $$ $$\gdef \vv {\green{\vect{v }}} $$ $$\gdef \vytilde {\violet{\tilde{\vect{y}}}} $$ $$\gdef \vyhat {\red{\hat{\vect{y}}}} $$ $$\gdef \vycheck {\blue{\check{\vect{y}}}} $$ $$\gdef \vzcheck {\blue{\check{\vect{z}}}} $$ $$\gdef \vztilde {\green{\tilde{\vect{z}}}} $$ $$\gdef \vmu {\green{\vect{\mu}}} $$ $$\gdef \vu {\orange{\vect{u}}} $$ % Matrices $$\gdef \mW {\matr{W}} $$ $$\gdef \mA {\matr{A}} $$ $$\gdef \mX {\pink{\matr{X}}} $$ $$\gdef \mY {\blue{\matr{Y}}} $$ $$\gdef \mQ {\aqua{\matr{Q }}} $$ $$\gdef \mK {\yellow{\matr{K }}} $$ $$\gdef \mV {\lavender{\matr{V }}} $$ $$\gdef \mH {\green{\matr{H }}} $$ % Coloured math $$\gdef \cx {\pink{x}} $$ $$\gdef \ctheta {\orange{\theta}} $$ $$\gdef \cz {\orange{z}} $$ $$\gdef \Enc {\lavender{\text{Enc}}} $$ $$\gdef \Dec {\aqua{\text{Dec}}}$$

🎙️

동물의 시각 피질에서 뉴런은 시야 내의 특정 영역에 존재하는 특정 윤곽선 표현에 대해 반응한다. 특정한 영역의 특정한 표현을 감지하는 특정한 뉴런들이 존재한다.

Fukushima (1982)는 두 가지 이론에 입각해 이러한 뇌와 똑같이 동작하는 신경망neural net(NN)을 만들었다. 하나는 시야 전체에 대응하는 뉴런들이 있다는 것이고, 또 하나는 시야 내의 표현을 감지하는 간단한 세포들로부터 정보를 가져오는 복잡한 세포가 있다는 것이다. 그 결과, 사물이 움직여도 간단한 세포들의 활성화 여부들만 변화하고 복잡한 세포의 활성화에는 변화가 없을 거라는 이론이다. (합성곱 풀링Convolutional Pooling)

얀 르쿤 (1990)은 손으로 쓴 숫자를 인식할 합성곱 신경망Convolutional Neural Network(CNN)을 학습시키는데 역전파를 활용하였다. 유튜브에서 1992년 촬영된 다양한 스타일로 작성된 숫자를 인식하는 이 알고리즘의 시연 영상을 찾아볼 수 있다. 당시 문자/패턴 인식 분야에서, 앤드 투 앤드로 학습된 모델을 활용하는 것은 새로운 사례였다. 종래에는, 지도 학습된 모델과 특징 추출기를 함께 사용하는 것이 일반적이었기 때문이다.

이 새로운 CNN 시스템은 한 이미지 안에 여러 숫자가 적혀있는 것도 인식할 수 있었다. 이를 위해, 사람들은 CNN 시스템에 입력을 위한 작은 창을 만들고, 이 창이 전체 이미지를 훑고 지나가게 했다. CNN 시스템이 작동하면, 특정 숫자가 이미지 안에 있음을 알 수 있었다.

얀 르쿤의 시도 이후, 이러한 기술은 안면/인물 감지와 시맨틱 분할semantic segmentation(픽셀 단위의 인식)에도 적용되었다. Hadsell (2009)와 Farabet (2012)과 같은 사례가 있다. 이는 결국 업계에서 굉장히 유명해졌고, 점차 자율주행의 차선 추적에도 적용되었다.

1980년대엔 CNN을 학습시키기 위한 특별한 하드웨어가 논의되었지만, 점차 관심이 식었었다. 그러나 최근, 이는 다시 논의되기 시작했다.

(비록 당시에 이 단어가 사용되진 않았지만) 딥러닝 혁명은 2010년에서 2013년 사이에 일어났다. 학자들은 대규모의 CNN을 빠르게 학습시킬 수 있는 알고리즘을 연구했다. Krizhevsky (2012)는 AlexNet을 개발했다. 원래 사용되던 CNN 보다 훨씬 거대한 모델이었다. 이 모델은 ImageNet(130만 개의 샘플) 데이터에서 GPU를 통해 학습되었다. 고작 몇 주만에 AlexNet은 당시 최고의 성능을 내던 모델을 큰 성능 차이로 압도했다. – top-5 error rate에서 25.8% vs 16.4%의 성능차를 냈다.

AlexNet의 성공을 목도한 컴퓨터 비전(CV) 학계는 CNN에 매료됐다. 2011~2012년 사이에 CNN을 언급한 논문들은 모두 거부된 반면, 2016년 이후 대부분의 CV 논문들은 CNN을 활용한다.

수년 간, CNN 모델의 계층은 점점 깊어졌다: LeNet – 7, AlexNet – 12, VGG – 19, ResNet – 50. 그러나 그만큼 신경망은 출력과 모델의 크기, 정확도를 측정하는데 더 많은 연산 성능을 요구하게 되었다. 그러나, 최근 이슈가 되는 것은 이러한 신경망을 어떻게 압축하여 연산 속도를 빠르게 하느냐는 것이다.

다계층 신경망은 데이터의 구성적 특징을 잘 활용하기에 강력하다. 한 계층에서 객체들의 조합은 다음 계층에서 하나의 객체를 구성한다. 우리는 이러한 계층을 여럿 쌓아서 신경망이 적절한 특징의 조합을 학습하도록 하여, 딥러닝 아키텍처라고 부르는 것을 만든다. 즉, 딥러닝 신경망은 본질적으로 계층적이다. (역주. 나뭇잎과 줄기, 꽃이 합쳐저 나무라는 하나의 객체가 되는 것을 생각하면 좋다.)

딥러닝은 컴퓨터 비전 분야에 폭발적인 발전을 야기했고, 이제 컴퓨터 비전은 객체를 분류하는 것을 넘어 영역을 정확히 감지하고, 객체의 공간적 특성을 감지하는 수준까지 발전했다. Mask-RCNN과 RetinaNet 구조가 이 분야의 발전을 주도하고 있다.

Mask RCNN은 이미지 내의 각 객체들의 영역을 분할하기 위해 등장헀다. 신경망의 입력과 출력은 모두 이미지이다. 이 구조는 또한 같은 이미지에서 동일한 유형의 서로 다른 객체를 식별하는 인스턴스 분할instance segmentation에도 사용할 수 있다. Facebook AI Research (FAIR)의 Detectron 시스템은 이러한 모든 SOTAstate of the art급 객체 탐지 알고리즘을 적용하였으며, 오픈 소스이다.

CNN의 대표적인 활용사례는 자율주행 자동차와 의료 영상 분석 분야이다.

딥러닝의 과학적/수학적 기반에 대한 연구가 꽤 진행되었음에도, 여전히 탐구할만한 흥미로운 주제들이 남아있다. 두 계층만으로도 모든 경우에 딥러닝 적용이 가능한데도 더 많은 계층을 쌓으면 성능이 좋아지는 것일까? 왜 CNN은 음성, 이미지, 텍스트 등의 데이터에서 잘 동작할까? 딥러닝이 볼록하지 않은 형태의 함수를 갖는 문제에서도 잘 작동하는 이유는 무엇일까? 필요 이상으로 큰 모델도 잘 작동하는 이유가 뭘까?

특징 추출은 표현의 차원을 확장하는 것으로 볼 수 있다. 이는 확장된 특징이 선형 분리 가능한 경향이 있기 때문인데, 고차원 공간의 데이터 포인트는 분리 가능한 축의 수가 많아서, 선형 분리 가능할 확률이 높기 때문이다.

초기 머신 러닝 전문가들은 고성능의 수작업으로 만들어진, 각 과업에 특화된 특징을 가진 인공지능 모델을 만들었다. 그러나 딥러닝의 발전으로, 모델들은 포괄적인 특징들을 자동으로 추출할 수 있게 되었다. 아래는 특징 추출에 일반적으로 사용되는 알고리즘 들이다.

Space tiling

Random Projections

Polynomial Classifier (feature cross-products)

Radial basis functions

Kernel Machines

데이터의 구성적 특징 덕분에, 학습된 특징들은 계층이 쌓일수록 추상적 개념을 표현할 수 있는 특성을 갖는다.

이미지 – 가장 작게 보면, 이미지는 픽셀들의 집합으로 볼 수 있다. 픽셀들의 집합은 물체의 윤곽선을 구성하며, 윤곽선의 집합은 texton(여러 윤곽선을 갖는 도형)을 구성한다. 마침내 texton이 모여 사물을 구성하고, 이러한 사물이 모여 이미지가 된다.

텍스트 – 비슷하게, 문자 데이터에도 고유한 계층이 존재한다. 문자들은 단어를, 단어는 문장을, 문장은 글을 구성한다. 마침내 전하고자 하는 이야기를 담은 글이 탄생하는 것이다.

음성 – 음성 데이터에서도 샘플이 모여 주파수와 소리를 구성하고, 소리가 모여 음절, 음절이 모여 단어와 말이 된다.

딥러닝을 단순히 생각하는 사람들은 이렇게 말한다. “모든 함수를 2개의 계층으로 구현할 수 있다면, 왜 굳이 더 깊은 층을 쌓아?”

예를들어, SVMsupport vector machine은 데이터의 범위span of data에서 선형 분류를 위한 초평면hyperplane을 찾는다. 즉, 추론이 학습 데이터의 범위 내에서 동작하는 것이다. SVM은 기본적으로 첫 번째 층이 “템플릿”, 두 번쨰 층이 선형 분리기인 아주 단순한 2 계층 신경망이다. 2 계층의 문제는 중간 계층의 복잡성과 크기가 입력 값의 크기 N에 대해 기하급수적으로 증가한다는 것이다. (어려운 문제를 해결하려면, 굉장히 많은 양의 템플릿이 필요하다.) 그러나 계층의 크기를 log(N)으로 확장하면 계층은 N에 대해 선형이 된다. 즉 시간과 공간 사이에 트레이드 오프가 발생하는 것이다.

비유하자면, 이는 게이트가 두 개 이하인 boolean 함수를 계산하는 회로를 설계하는 것과 같다. – 이렇게 해도 모든 boolean 함수를 구현할 수는 있다! 다만 복잡한 함수에서는 첫 계층의 시간 및 공간 복잡도(게이트의 수)가 순식간에 무한대로 수렴할 것이다.

심층적deep이 뭘까?

SVM은 계층이 두 개 밖에 없어 심층적이지 않다.

결정 트리 classification tree 모든 계층이 동일한 (원형)특징을 분석하기에 심층적이지 않다.

모든 계층이 동일한 (원형)특징을 분석하기에 심층적이지 않다. 심층deep 신경망은 여러 계층을 갖고, 이를 쌓아서 점차 추상적인(고차원적인) 특징을 다룬다.

어떻게 모델이 표현(좋은 특징)representation을 배울까?

매니폴드 가설: 데이터는 저차원 매니폴드에 존재한다. 존재 가능한 이미지의 집합은 당연히도 무한하다. 이 중에, “자연스러운” 이미지의 부분 집합이 속해있다. 예를 들어서, 사람의 사진은 사람이 움직일 수 있는 얼굴 근육들의 자유도와 그 갯수의 크기 정도order of magnitude에 따라 무한히 많이 존재한다. 이상적인(그리고 비현실적인) 특징 추출기는 사진에 영향을 줄 수 있는 모든 표현을 학습한다.(각 근육들, 조명, 각도 등)

수업 후 Q&A:

CNN(Convolutional Neural Network) 알고리즘을 활용한 음성신호 중 비음성 구간 탐지 모델 연구 -융합정보논문지

초록

음성인식 기술은 딥러닝과 결합되며 빠른 속도로 발전하고 있다. 특히 음성인식 서비스가 인공지능 스피커, 차량용 음성인식, 스마트폰 등의 각종 기기와 연결되며 음성인식 기술이 산업의 특정 분야가 아닌 다양한 곳에 활용되고 있다. 이러한 상황에서 해당 기술에 대한 높은 기대 수준을 맞추기 위한 연구 역시 활발히 진행되고 있다. 그중에서 자연어처리(NLP, Natural Language Processing)분야에서 음성인식 인식률에 많은 영향을 주는 주변의 소음이나 불필요한 음성신호를 제거하는 분야에 연구가 필요한 상황이다. 이미 많은 국내외 기업에서 이러한 연구를 위해 최신의 인공지능 기술을 활용하고 있다. 그중에서 합성곱신경망 알고리즘(CNN)을 활용한 연구가 활발하게 진행되고 있다. 본 연구의 목적은 합성곱 신경망을 통해서 사용자의 발화구간에서 비음성 구간을 판별하는 것으로 5명의 발화자의 음성파일(wav)을 수집하여 학습용 데이터를 생성하고 이를 합성곱신경망을 활용하여 음성 구간과 비음성 구간을 판별하는 분류 모델을 생성하였다. 이후 생성된 모델을 통해 비음성 구간을 탐지하는 실험을 진행한 결과 94%의 정확도를 얻었다.

Speech recognition technology is being combined with deep learning and is developing at a rapid pace. In particular, voice recognition services are connected to various devices such as artificial intelligence speakers, vehicle voice recognition, and smartphones, and voice recognition technology is being used in various places, not in specific areas of the industry. In this situation, research to meet high expectations for the technology is also being actively conducted. Among them, in the field of natural language processing (NLP), there is a need for research in the field of removing ambient noise or unnecessary voice signals that have a great influence on the speech recognition recognition rate. Many domestic and foreign companies are already using the latest AI technology for such research. Among them, research using a convolutional neural network algorithm (CNN) is being actively conducted. The purpose of this study is to determine the non-voice section from the user’s speech section through the convolutional neural network. It collects the voice files (wav) of 5 speakers to generate learning data, and utilizes the convolutional neural network to determine the speech section and the non-voice section. A classification model for discriminating speech sections was created. Afterwards, an experiment was conducted to detect the non-speech section through the generated model, and as a result, an accuracy of 94% was obtained.

[이석중의 알기쉬운 인공지능] CNN 구조(9) – MobileNet

CNN 구조(9) – MobileNet

인공지능의 성능이 입증됨에 따라, 고성능 GPU를 쓸 수 없는 모바일 폰이나 embedded 환경에서도 실시간 인공지능 구현에 대한 요구가 점차 커지게 된다. SqueezeNet 편에서 살펴보았듯이, 2015년을 지나며 CNN 구조에 대한 이해가 깊어지게 되었고, 이제는 모델을 경량화 시키면서도 성능을 유지하려는 다양한 시도들이 만들어진다.

이번 연재에서는 그런 시도들 중 하나로 구글의 연구진들이 2017년 arXiv에 발표한 논문 “MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications”에 대하여 살펴볼 예정이다. MobileNet이라는 이름이 말해주듯이, MobileNet은 자원이 열악한 모바일 환경에서도 그림1과 같은 비전 응용 실행이 가능한 구조를 염두에 두고 개발이 되었다. MobileNet 연구진은 2017년에 발표한 이래 매년 버전을 upgrade 하여 2018년 V2, 2019년 V3가 나온다.

그림 1. MobileNet 응용

다양한 CNN 모델 경량화 방법

논문에도 나왔듯이 모델 경량화를 위해 아래와 같은 다양한 시도들이 있어왔다. 모델 파라미터의 수를 줄여 모델 크기를 작게 하려는 시도가 많지만, 실시간 연산을 수행하려면 시간이 오래 걸리는 MAC(Multiply and accumulation) 연산의 수까지 줄여야 latency를 감소시켜 실시간 연산이 가능해질 수 있으며, MobileNet은 latency 까지 줄이는 것을 염두에 두고 개발되었다.

l Depthwise separable convolution: 통상적인 convolution은 공간과 채널을 같이 고려한 3차원 개념이지만, separable convolution 개념을 사용하면 연산량을 많이 줄일 수 있다(추후 상세 설명).

l Factorization: GoogleNet 설명 편에서 살펴보았듯이 matrix에 대한 인수 분해를 통해 파라미터의 수를 크게 줄일 수 있다. 이 부분은 이전 연재에서 이미 충분히 설명을 많이 했기 때문에 이전 연재를 참조하면 될 것 같다.

l Channel reduction: 보통 1×1 convolution을 사용하여 채널의 수를 줄여주면 상대적으로 연산량이 줄어든다. Inception module에서 3×3이나 5×5 convolution 앞에 1×1 convolution을 배치하여 채널 수를 줄이는 방법을 사용한다.

l Bottleneck approach: SqueezeNet의 경우처럼 bottleneck 혹은 shortcut connection을 사용하여 연산량을 줄이면서도 정확도를 유지할 수 있다.

l Distillation & Compression: 대형 network를 통해 경량화된 network를 학습시킨다.

MobileNet 핵심 전략 – Depthwise separable convolution

MobileNet은 모바일 폰이나 임베디드 환경에서 실시간 비전 응용을 목표로 개발되었기 때문에 파라미터 수를 절감뿐만 아니라 실시간 성능 확보를 위해 CNN 연산의 대부분을 차지하는 MAC(Multiply and accumulation)의 수까지 획기적으로 절감시키는 방안을 마련해야 했다. 그래서 이들은 전통적인 convolution 구조에 대한 성찰을 통해, 이 구조를 변경시키는 방식을 취했다.

먼저 전통적인 convolution 방식을 이해해보자. 그림 2.처럼 전통적인 convolution 구조에서는 보통 3×3, 5×5, 7×7과 같이 일정한 크기를 갖는 커널(필터)를 입력 데이터에 곱하여 출력을 만들어내는 방식을 취한다.

그림 2. 통상적인 convolution 구조

전통적인 convolution에서 입력 데이터 1채널에 대하여 가로/세로 2차원 공간에 대하여 필터 연산을 수행한다. 입력 채널이 여러 개인 경우, 즉 그림 2처럼 4개 있는 경우 모든 채널에 대하여 동일한 연산을 수행한 뒤 여러 채널에서 나오는 결과를 모두 합쳐 출력 피처맵을 생성한다. 그래서 실질적으로는 채널 별 깊이를 모두 고려하는 3차원 연산이 된다.

이런 방식으로 연산을 하는 이유는 입력의 모든 채널에 존재하는 정보에서 어떤 연관 관계 (correlation) 을 찾아내겠다는 뜻이 숨어 있지만 , 연산량 관점에서는 채널의 수가 많아질수록 연산량에 비례하여 증가하는 문제점이 발생하게 된다 . CNN 연산에서 보통 후단으로 갈수록 필터의 수를 늘어나기 때문에, 피처맵의 수가 늘어날 수밖에 없고, 결국 이것은 연산 시간을 증가시키는 주범이 된다.

Depthwise separable convolution은 과연 이렇게 모든 채널에 대하여 correlation을 찾는 것이 과연 효과적일까 하는 의문에서 시작했다고 보면 된다. 채널이 많지만 의미 있는 정보가 모든 채널에 고르게 존재하는 것이 아니라면, 모든 채널에 대하여 필터 연산을 수행하고 그 결과를 모두 더하는 방식이 결코 효율적이지 않을 것이라는데 핵심 아이디어가 존재한다.

그래서 Depthwise separable convolution에서는 전통적인 convolution을 depthwise convolution과 pointwise convolution의 2단계로 나누어 진행하였고, 그림 3.과 같은 구조를 갖는다.

그림 3. Depthwise separable convolution 구조

(참조: https://www.machinecurve.com/index.php/2019/09/24/creating-depthwise-separable-convolutions-in-keras/)

그림 3의 상단은 depthwise convolution 부분으로 M개의 입력 채널에 대하여 채널 수만큼의 필터를 채널 별로 따로 적용하여 M개의 채널을 갖는 중간 데이터를 만들어낸다. 여기서는 입력 채널 M이 3이기 때문에 3개의 채널에 대하여 3개의 필터를 적용하여 3개의 출력 피처맵이 생성되었다. 다음 단계는 이렇게 만들어진 중간 데이터에 대하여 N개의 1×1 convolution(pointwise convolution)을 수행하여 최종적으로는 N개의 피처맵의 출력이 만들어지게 된다.

얼핏 보면 전통적인 convolution과 크게 다를 것이 없어 보이지만, 실제로는 엄청나게 달라진다. 이를 설명하기 위해 논문에 나온 그림 4을 참고하여 설명한다. 그림에서 D K 는 필터의 크기를 나타내며, 입력 데이터의 크기는 D F 로 정의하여 정사각형 데이터라고 가정하였다.

그림 4. Convolution 방법 비교

그림4에서 (a)는 전통적인 convolution으로 M개의 채널을 갖는 D F x D F 크기의 영상에 대하여 N개의 D K x D K 크기의 필터를 적용하여 N개의 출력 데이터를 만들어낸다. 이렇게 되면 전체 연산량의 크기는 D K x D K x M x N x D F x D F 가 된다.

(b)는 depthwise convolution으로 M개의 입력에 대하여 입력과 동일한 개수의 출력이 만들어지며, 이때의 연산량은 D K x D K x M x D F x D F 이다. (c)는 1×1 convolution을 수행하는 단계로 M개의 채널에 대하여 N개의 필터 연산을 통해 최종적으로 N개의 출력을 생성하며, 이 때의 연산량은 M x N x D F x D F 가 된다.

그러므로 전체 연산량은 두 연산을 합한 값이 되며, 이것을 전통적인 convolution과 비교하면 아래 식이 된다.

여기서 D K 는 보통 3 x 3 크기를 사용하는 경우에는 N은 통상적으로 큰 값을 갖기 때문에 보통 8~9배 정도 연산량이 줄어들게 된다는 것을 확인할 수 있다. 모든 채널의 correlation을 따지는 것이 아니라, 채널의 깊이와 공간을 분리함으로써 연산량을 대폭 줄일 수 있었으며, 실제로 논문에서처럼 많은 데이터에 대하여 실험을 해봤더니 매우 고무적인 결과를 얻을 수 있게 되었다.

MobileNet 구조

기존 구조는 그림 5와 같다. 전통적인 convolution이라면 conv 뒤에 BN(batch normalization)과 ReLU가 오는 구조인데, MobileNet 구조는 Depthwise convolution과 1×1 convolution(pointwise convolution) 2 단계 과정으로 나뉘어져 있고, 그 사이에 각각 BN과 ReLU가 오는 구조로 되어 있다. 기존 방식보다 Nonlinearity를 담당하는 블락이 추가됨으로써 더 많은 자유도를 얻을 수 있음은 쉽게 짐작할 수 있다.

그림 5. MobileNet 기본 구조

전체적인 MobileNet 구조는 아래 표 1과 같다. 앞서 살펴본 그림 5.의 기본 구조를 바탕으로 만들어졌으며, 전체적으로 28 layer로 구성이 된다. 첫번째 convolution은 다른 CNN 구조와 마찬가지로 전통적인 convolution을 취하고 stride 크기는 “2”로 하였다.

다음 layer부터 depthwise convolution과 1×1 convolution을 섞어서 사용하는 형태이며, 대부분의 parameter는 1×1 convolution에 집중되어 있는 점이 눈에 띈다. 흔히 AlexNet 등의 전통적인 구조에서 FC(Fully connected) layer가 전체 parameter의 80~90%를 차지했던 것을 감안하면 표2.의 결과를 보면 많은 변화가 있음을 확인할 수 있다.

표. 1 MobileNet 전체 구조

표. 2 전체적인 parameter 및 연산량 비중

성능 비교

Depthwise separable convolution이 전통적인 convolution과 달리 모든 채널 간의 correlation을 고려하지 않아도 되기 때문에 연산량 관점에서는 확실한 이득이 생기지만 아래 표3의 결과처럼 결코 성능 면에서 크게 떨어지지 않음을 확인할 수 있다.

표. 3 MobileNet과 전통적인 CNN 구조와 성능 비교

유명한 CNN 구조와 비교했을 때도 결코 성능 면에서 떨어지지 않는 것을 확인할 수 있다. GoogleNet과 비교하면 parameter 수와 Mult-adds(연산량) 이 더 적음에도 불구하고 정확도가 더 높다.

표. 4 MobileNet과 유명 CNN 구조와 성능 비교

마무리

MobileNet은 공간과 채널을 모두 고려하는 기존 convolution 방식을 depthwise convolution과 pointwise convolution으로 분리하는 방식으로 구조 변화를 줌으로써 연산량 절감과 parameter의 절감이라는 두마리 토끼를 모두 잡을 수 있게 되었으며, 모바일 폰이나 임베디드 환경을 고려한 CNN 구조 연구의 활성화가 이루어지고 있음을 보여주는 신호이다.

키워드에 대한 정보 인공 지능 cnn

다음은 Bing에서 인공 지능 cnn 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

See also  와일드 터키 가격 | [ 위스키 ] 와일드터키 101, 8년, 켄터키 스피릿 | 알콜 도수 50.5도 버번 추천 (Feat.위스키사워 칵테일) 상위 201개 답변
See also  싱가포르 여자 외모 | (Eng) 싱가포리언이 신기하게 생각하는 한국인의 10가지 특징 인기 답변 업데이트

See also  김동건 나이 | 김동건 아나운서 누구? 부인 김영진 아들 김주형... 181 개의 정답

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 딥러닝 CNN, 개념만 이해하기

  • 딥러닝
  • CNN
  • 컨볼루션 신경망
  • 신경망
  • convolution
  • convolutional neural network
  • 합성곱 신경망
  • 합성곱
  • 딥러닝 CNN
  • 이미지 인식
  • 인공지능
  • 사진 인식
  • 얼굴 인식
  • 이미지 분류

딥러닝 #CNN, #개념만 #이해하기


YouTube에서 인공 지능 cnn 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 딥러닝 CNN, 개념만 이해하기 | 인공 지능 cnn, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment