- 2018년 7월 3일 오후 1:00
- 조회수: 3928
REFERENCES
INFORMATION
- 2018년 7월 3일
- 오후 1시 ~
- 고려대학교 신공학관 218호

TOPIC
OVERVIEW
발표자 후기

오늘 DenseNet을 준비하면서
Convolutional Neural Networks의 역사에 대해서도 준비해보았다. LeNet,
AlexNet, ZFNet, VGGNet, GoogLeNet, ResNet, DenseNet 순서로 준비를 하였는데, 전부 연장선 내에 있는 듯한 느낌을 받았다. 세미나 준비를 하면서 GoogLeNet에서 제시한 Bottleneck Layer가 가장
인상적이였다. DenseNet과 ResNet은 각각 제시하는 Connection이 다르다. DenseNet에서는 Dense Connectivity의 구조를 가지고 ResNet은 Skip Connection의 구조를 갖는다. Skip Connection 구조에서 Dense Connectivity로 바뀌면서 DenseNet 저자는 4가지의 장점을 제시한다. 먼저,
Vanishing-Gradient problem을 완화하고, 강한 Feature Propagation을 제시하며, Feature를 재사용한다. 마지막으로, Parameter의 개수를 상당히 많이 줄인다고 한다. Feature를 재사용하는 것은 Feature에 네이밍을 해서 가져오고 Parameter의 개수를 줄이는 작업은 GoogleNet에서 제시한 Bottleneck Layer를 사용하여 줄여주게 된다. CNN의
역사와 DenseNet을 준비하면서 느낀 점은 여전히 Gradient
vanishing problem은 존재 한다는 것이다. 이것을 탈피하기 위해서 Gradient-Based Learning이 아닌 새로운 방법을 고안해 낸다면
Deep Learning의 발전에 큰 기여가 될 수 있을 것이라 생각이 든다.
청취자 후기

금일은 CNN 계열의 다양한 모델들의 발전과정을 되짚어 보았다. 딥러닝은 학습모델의 capability를 높이는 방법으로 가능한
다층의 구조를 쌓도록 추천한다. 깊은 구조의 의미는 모델의 bias 최소화에
도움이 되고, 고차원 데이터 속 abtracted features를
학습할 수 있다는 점에서 정확도 성능향상에 직결되는 중요한 문제이다. 하지만 깊은 구조를 쌓을수록 다양한
문제가 발생하는데, 1) 학습이 제대로 안되는 문제, 그리고 2) 모델복잡도 상승을 대표적으로 꼽을 수 있다. 특히 이미지를 다루는 CNN의 분석 데이터는 고차원 데이터인 경우가 많아 computational
cost에 상당히 민감할 수 밖에 없다. 금일 세미나는 두 가지 문제상황을 중점적으로 CNN 알고리즘의 발전 과정을 잘 설명하였다. 특히 DenseNet에서는 ResNet의
skip connection의 개념을 확장한 dense block을 도입하여 학습효과를
높였고, 동시에 학습 파라미터를 줄이기 위해 bottleneck
layer를 적절히 섞어 사용하는 기교를 보여주었다. 실험결과 상 classification accuracy 향상 뿐만 아니라 parameter
efficiency 면에서도 두드러지는 결과를 보여주었다. 좋은 발표를 해준 건이에게 감사의
인사를 전하고, 개인 연구에 큰 진전이 있기를 바란다.

오늘 세미나는 1998년에 처음 등장한 LeNet부터 2017년에
DenseNet이 등장하기까지 convolutional neural network(CNN) 구조들의
변천사를 다루는 유익한 세미나였다. Layer가 한두 개 밖에 없는 단순한 CNN모델부터 수백 개에 이르는 복잡한 모델까지의 발전과정은 매우 자연스럽다.
Layer를 많이 쌓으려다보니 연산량이 많아져서 이를 줄이기 위해 모든 layer에서 3x3 convolution을 사용하는 VGGNet(2014)이 등장하였다. 마찬가지로 연산량을 줄이기 위해 GoogLeNet(2014)에서는 1x1 convolution을 사용하여 feature map dimension을
줄이는 아이디어를 고안하였다. ResNet(2015)에서는 학습이 잘 되지 않는 현상을 해결하기 위해 gradient가 잘 통과할 수 있는 skip connection을
추가하고, 이 skip connection이 갖는 장점을
십분 활용하여 고도화한 것이 DenseNet(2017)이다. 이미
읽어본 적 있는 논문들이였지만, 이렇게 한 분야의 변천사를 정리해서 들으니 연구를 하는 자세에 대해
다시 한 번 생각해보게 된다. 기존의 방법론이 갖고 있는 단점들을 명확히 짚어내고, 어쩌면 우리가 너무 자연스럽게 받아들이고 있는 가정들을 깨부술 수 있는 유연한 사고력을 가질 수 있다면 좀
더 좋고 가치있는 연구로 이어질 수 있는 것 같다. 끝으로 좋은 내용 잘 정리해준 건이 형에게 고맙다는
인사를 하며 앞으로도 이런 세미나 내용이 주가 되었으면 좋겠다.

금일 진행된 세미나는 Densely Connected Convolutional
Networks (DenseNet)을 소개하는 자리였다. 이미지 분류에 있어서 Convolutional Neural Network 이후로 많은 아키텍쳐들이 연구되어 왔는데, DenseNet은 그 중에서도 거의 최고의 성능을 보이고 있는 모델이다. 이전
연구들에서 CNN의 아키텍쳐를 변형시키기 위해 어떤 아이디어를 적용시켰는지에 대한 간단한 설명과 함께, DenseNet을 이해하기 위해 가장 중요한 1x1 Conv Channel
Reduction과 Skip Connections에 대해 집중적으로 설명을 해주었다. 1x1 Convolution은 Inception Module에서
사용되는 가장 핵심적인 테크닉인데, Convolutuion의 결과들을 합쳤을 때 채널의 차원수가 커지기
때문에 다음 단계에서 연산량이 너무 커지는 것을 줄이는 것을 주 목적으로 한다. 1x1 conv를 사용하면
다른 차원의 크기는 유지하면서 필터의 개수만 조절할 수 있다. Skip Connections는 Residual Networks에서 사용된 개념으로 레이어를 깊게 쌓았을 때 생기는 vanishing gradient problem을 해결할 수 있도록 '레이어를
건너뛰어 정보를 전달하는' 선을 이어주는 것이다. DenseNet은 Skip Connections를 각 레이어마다 모두 적용하여 Input
Layer의 정보를 최대한 전달할 수 있게 만들고, 1x1 Conv를 통해 네트워크 깊이에
비해 계산량을 많이 감소시켰다. 알고리즘에 대한 설명을 하면서 효과를 정량적으로 설명하기 위해 예제를
직접 만들어 파라미터의 수를 계산해주어 성능에 대한 이해가 바로 될 수 있었다. 잘 모르는 사람들도
이해를 하기 쉽도록 많은 준비를 해왔다는 것이 느껴졌다.

오늘은 Desenet에 대한 설명을 들을 수 있었다. Densenet은 이미지 분류를 위해 개발된 가장 최신의 방법론으로 인공신경망 모델의 레이어를 많이 쌓았을
때 Vanishing Gradient 현상으로 인해 학습이 잘 되지 않는 현상을 개선한 모델이다. 이 문제를 해결하기 위해 Densenet은 Skip Connection의 효과를 극대화하는 Dense Block을
정의해서 사용한다. Dense Block은 Skip
Connection의 조합을 모두 고려해서 이를 Feature Map 생성에 반영하고 이러한 Dense Block을 여러 개 쌓음으로서 이미지 분류 성능을 극대화시킨다. 기존의 Resnet의 아이디어도 신선하다고 생각이 되었지만 거기서 한 단계 더 나아가
Dense Block이라고 하는 새로운 구조를 제안한 점이 흥미로웠다. 이미지 분류 문제
해결을 위해 어떻게 하면 효과적으로 모델을 깊게 쌓을 수 있는 지가 중요한 문제인 것 같다. 이는 좀
더 적은 수의 파라미터로 좀 더 큰 모델의 Capacity를 확보하는 문제인 것 같은데 관련해서 이론적인
공부를 더 해보고 싶다.

오늘 전체세미나는 'Densely Connected Convolutional
Networks(DenseNet)'라는 주제로 건이형이 진행하였다.
먼저 DenseNet은
Convolutional Neural Network(CNN)구조로부터 더 좋은 성능을 내기 위해 가장 최근에 제안된 방법이다. 그동안 CNN구조를 활용 및 번형을 통해 제안된 방법은 여러가지가
있으며 다음과 같이 요약할 수 있다.
- 먼저 LeNet은 2개의
ConvLayer와 Pooling layer를 사용하여 성능을 확인하였다.
- 이후 AlexNet, ZFNet은 Convlayer의 개수를 늘려보고, Filter size를 줄여보는 등 비교적 간단한 layer의 구조적
변형을 하여 더 좋은 성능을 확인였다.
- 이어서 VGGNet은 layer를 깊게 쌓는 것이 더 좋은 성능을 보인다는
점을 제안하였다.
- 하지만 layer를 깊게 쌓는 것은 복잡도가 증가하여 학습이 오래 걸리고,
Gradient Vanishing 문제가 존재한다.
-
GoogleNet은 Channel수를 줄이기 위해 1x1
크기의 'Bottleneck' layer를 제안하여 채널 수를 효과적으로 줄일 수 있는
구조를 제안하였다.
- 또한, ResNet은 Vanishing Gradient를 해결하기 위해 'Skip connection'이라는 개념을 적용하여, 학습효과는
늘리고, Gradient Vanishing문제를 완화하였다.
- 그
다음 DenseNet이 등장하였고 'Skip connection'개념과 'Bottleneck' layer개념을 동시에 활용하며, 'Skip
connection'을 좀더 dense하게 수행한 것이 핵심이다.
DenseNet은
'Bottleneck' layer와 Pooling layer를 동시에 활용하는 Transition layer 구조를 이용하고, ConvLayer 간 Skip Connection개념을 적용한 것을 Dense Block이라고
정의하였다. 그리하여 DenseNet은 Gradient Vanishing문제를 완화하고, 채널사이즈를 줄여가며(추출하여) 학습하는 것으로 시간복잡도를 줄이는데 기여하며, 예측성능 또한 향상된 실험결과를 보여주었다.
개인적으로 본 세미나를 통해서 'Bottelneck' layer에
대한 접근이 인상깊었다. 우리가 흔히 알고있는 '변수추출(feture extraction)'과 관련지을 수 있을 것으로 본다. 이미지가
아닌 다른 종류의 데이터를 CNN에 적용할 때, 우리는 변수를 CNN의 '채널(channel)'로
모델링한다. 'Bottelneck' layer 1x1 크기의
convlayer를 통해 채널을 압축하는 것으로 '채널추출(channel extraction)'을 수행하는 개념의 layer라고
말할 수 있을 것으로 생각한다. 또한, 우리가 데이터 분석을
목적으로 CNN을 활용할 때, 데이터 특성에 맞는 더 좋은 CNN구조를 형성할 수는 없을지 생각해보았다. 예를 들어 지금으로써는
더 좋은 예측력을 이끌어 내기 위해 CNN구조(layer개수
등)을 변형하는 방법으로만 접근하고 있는데 그것이 '왜' 더 좋은 성능을 내는지 통찰력을 이끌어 내고 싶은 것이다. 즉, 데이터에 대한 도메인 지식으로 딥러닝 구조를 변형할 수 있는 방법은 없을지 생각해보았다. 이번 세미나를 통하여 CNN을 기반으로 한 전체적인 응용방법을 알
수 있는 시간이었다.

이번 세미나에서는 건이가 DenseNet에 대한 모델 소개에 앞서
1998년 LeNet부터 시작해 CNN의 역사를 정리해주어 좋았다. 역사의 흐름을 하나하나 짚어주면서
‘AlexNet’, ‘GoogleNet’, ‘ResNet’ 의 특장점을 설명했다. 특히, 필터 사이즈나 레이어 층의 수를 튜닝한 방법에서 더 나아가
Skip-Connection 구조를 통한 ResNet, 그리고
이를 더 Dense하게 구축한 DenseNet까지 큰 맥락을
잡아주었다. DropOut 역시 파라메터의 수를 줄이기 위한 것은 맞지만, 1X1 Bottleneck Layer의 파라메터의 수를 줄여서 계산량을 감소시킨 것과 다르다는 것을 알게 되었다. 또한, Dense Block의 개수가 중요한가? 에 대한 연구원들과의 토의도 흥미로웠다. 무엇보다 건이가 각 Layer 층 마다의 연산을 직접 손으로 계산해 온 정성에 이해가 쉬웠고 고마웠다.

금주 참석한 세미나는 ‘Densely Connected
Convolutional Networks’라는 주제로 진행되었고, DenseNet이전에
대표적인 CNN에 대해 소개해주셔서 CNN의 개략적인 장점, 각 네트워크간 흐름에 대해 파악할 수 있었다. 먼저 CNN의 원조라고 할 수 있는 ‘LeNet’은 손글씨 숫자를 인식하는
네트워크이다. 현재 CNN과는 일부 파라미터의 차이가 있지만 1998년도 Computing Power가 낮은 시기에 제안되었다는
점은 주목할 만하다고 보여진다. 이후 ‘AlexNet’이
등장하게 되었는데 이전 ‘LeNet’에서 activation
function, Normalization layer, Drop out을 사용하는 변화를 주었다. 이후에도 ‘AlexNet’보다 층을 더 깊게 쌓아 성능을 높이려는 시도가 있었고, 특히 ‘GoogleNet’에서는 ‘bottleneck layer’를 통해 layer를 두텁게 쌓을 수 있었고, ‘ResNet’에서는 gradient vanishing문제를 해결하기 위해 conv-conv사이를 skip connection하는 개념을 도입하였다. 이후 전체 네트워크의
모든 층과 통하는 dense connectivity한
‘DensNet’에 대해 소개해주셨다. CNN은 주변부 특성을 반영한다는 점에서 이미지와
음성인식 등 다양한 분야에서 사용되고 있고 대부분 딥러닝을 활용한 기법이 CNN을 기초로 하고 있다. 이러한 딥러닝의 발전의 기여점에는 높은Computing power가
상용화되고 있고, 대량의 데이터를 쉽게 구할 수 있다는 점이 있다. 따라서
데이터 분석에 있어 현재이자 미래인 중요한 이슈에 대해 전반적인 역사를 알 수 있고 정리할 수 있는 매우 유익한 시간이었다고 생각한다.

오늘 세미나에서는 Densely connected convolutional
networks를 소개하면서 CNN이 어떻게 발전되어 왔는지 간략하게 소개하였다.
최초의 Convolutional network는 1998년에 LeCun에 의하여 소개된 LeNet이다. 지금의
network들과 비교하면 간단한 구조임에도 불구하고 당시의 computing power로는
눈에 띄는 결과를 얻기 어려워 주목을 받지 못하였다. 그러나 2000년대
이후로 Neural network는 꾸준히 발전하였고 최근 들어 하나의 트렌드로 자리잡았다. 특히 ImageNet challenge에서 이미지의 classification error를 낮출 수 있는 network 구조가
매년 제안되었는데 아주 최근에는 이미 고도화된 network를 약간 변형하거나 합쳐서 쓰는 기술적인
부분에 치중한 network만이 나타났다.
DenseNet은 2016년에
제안된 구조로, 모든 레이어가 서로 연결되는 형태라는 점에서 그동안 제안된 network들과 차별성이 있다. 기존의 CNN 같은 경우 layer마다
feature map을 구성하는 과정에서 정보가 압축 전달되면서 불가피하게 정보의 손실이 일어난다.
그러나 DensNet의 경우 layer별로 뽑아낸 feature map을 마치 history를 저장하듯이 저장해 두었다가
나중에 concatenate를 하기 때문에 다음과 같은 장점을 가진다고 한다. 첫째로 vanishing-gradient problem을 줄일 수
있고, feature propagation을 강화할 수 있으며 뽑아낸
feature map을 나중에 재사용할 수 있다. 또한bottleneck
layer를 사용함으로써 하이퍼 파라미터의 수도 줄어든다.
CNN의 발전에 대해 요약 정리할 수 있는 뜻깊은 시간이었다. 더불어 DenseNet의 특징과 장점에 대해 알 수 있어서 좋았다.

금일 세미나는 Densely Connected Convolutional
Networks에 대해 소개하는 자리였다. DenseNet은 전 네트워크들의 Gradient Vanishing problem을 해결해주고 data
augmentation에 효과적인 딥러닝 방식이다. 이는
bottleneck layer과 dense connectivity로 이루어지는데 모두 차원을
축소해주는 역할로서 학습을 효율적으로 하게 한다. DenseNet은 현재 나온 많은 딥러닝 모델 중
최신 모델에 속하며 성능이 뛰어난 것으로 알려져 있다. 질의 시간에 나온 것과 같이 DenseNet의 성능이 좋지만 layer을 쌓는데 랜덤성이 가미된다는
사실에 의문이 들었다. 근본적으로 딥러닝 모델은 사용자가 정해야 하는
Hyperparameter가 많아 모델을 구축할 때에 이론적으로 뒷받침이 힘든 경우가 많다는 생각이 든다. 요즘 딥러닝 모델이 많이 사용되고 있지만 이런 부분들이 충분히 고찰되어 주어진 task에 적용해야 의미가 있을 것 같다.

금주 세미나는 densely connected convolutional
networks를 주제로 진행되었다. 발표자는
densenet에 대한 내용을 설명하기에 앞서 convolutional neural network 모델의 history를 간단하게 정리하여 소개하였다. 대부분 CNN 연구들은 ImageNet 데이터에 대해 좋은 성능을 내기 위해서
진행되어 왔다. 초기에는 필터 사이즈나 레이어 수 등 비교적 단순한 구조를 튜닝하여 좋은 성능을 냈다는
연구들이 주로 발표되었으나, 비교적 최근에는 그보다는 좀 더 특수한 구조들을 제안하여 성능을 향상시키는
연구들이 주로 진행되고 있다. Resnet은 skip
connection이라는 새로운 구조를 도입하여 많은 layer를 사용하는 경우 vanishing gradient 문제를 어느정도 해결하여 높은 성능을 이끌어 냈으며, densenet의 경우 dense block을 정의하고, block 내에서 skip connection을 dense하게 정의하여 resnet보다 좋은 성능을 보이는데 성공하였다. 예전 랩세미나에서 capsulenet이라는 neural network 구조를 들은 적이 있었는데, 모두 비슷한
맥락에서 진행되고 있는 연구인 것 같다. Resnet이나
densenet, capsulenet 등은 기존에 사용되던 neural network에
비해 연산량을 많이 늘리지 않으면서도 모델의 capacity를 높이는 연구라고 하는데, 이런 아이디어를 다른 연구 분야로 확장할 수 있는지 알아보는 것도 재밌는 공부가 될 것 같다.

오늘의 세미나 주제는 Densely Connected Convolutional
Networks였다. 기존에 ImageNet
Competition에서 좋은 성능을 보였던 모델들을 하나씩 살펴보았다. 대회의 특성때문인지
왜 이러한 구조가 좋은지에 대한 논리와 이론적 배경이 적어도 특별한 핵심 아이디어가 존재하고 성능이 개선되었다면 논문이 될 수 있다는 것이 흥미로웠다. 또한 혼자서 이해하려 했다면 궁금하고 헷갈리는 부분이 많았을텐대 다같이 토론을 하며 배울 수 있는 시간이여서
효율적으로 빠르게 습득가능하였다. 나는 이미지데이터가 아닌 데이터를 더 많이 다루기 때문인지 위의 모델이
과연 이미지가 아닌 데이터(예로들면 signal)에 적합한 structure일것인가에 대한 의구심도 들었다. 그리고 가장 흥미로웠던
것은 googlenet의 bottleneck layer였다. dimension을 줄인다는 것을 활용하여 변수선택에 활용할 수 있는 아이디어가 있을 수 있지 않을까 하는
고민을 해보아야겠다.

금일 세미나는 Densely Connected Convolutional
Networks(DenseNet) 모델에 대한 소개였다. 초기 CNN 모델부터 시작해서 CNN 모델이 어떻게 발전되어 왔는지 소개해주었다. DenseNet과 가장 밀접한 모델은 ResNet으로, Layer을 깊게 쌓았을 때 발생되는 Gradient vanishing 문제를 Skip-Connection 기술을 통해 해결한 모델이다. DenseNet 모델은 Skip-Connection을 Dense하게 구축함으로써, 더 깊게 쌓여진 layer 구조를 갖는 모델을 효과적으로 학습시킬
수 있었다. 결과적으로 최근 CNN 연구들은 layer을 좀 더 깊게 쌓는데 초점을 두고 있다고 생각한다. 다만
왜 깊게 쌓아야만 되는, 어떤 장점과 단점들이 존재하고 발생하고 있는지 공부해볼 필요가 있다고 생각된다.

Deep learning에서 몇층의
layer를 이용하고 각각의 parameter는 어떻게 정해야하는지에 대한 정답은 없는것
같다. 그래서 연구를 시도함에 있어 과거에 제안된 다양한 모델을 중 특정 문제상황 하에서 (예를 들어 GAN모델을 만들때는
DCGAN을 기반으로 진행하는 것고 같이) 우수한 성능을 보이는 모델을 기반으로 변형을
통해 연구를 진행한다.
이번 세미나에서 다룬 DenseNet은 과거에 제안된 AlexNet, GoogleNet, ResNet과 더불어 이런 방식의 구조를 차용하는 것이 복잡한 데이터를 인식하는데
있어 좋은 성능을 낸다고 알려진 방법 중 최신의 방법이라 할 수 있다. ResNet에서 제안된 skip connection기법을 확장한 방법으로 Dense block내의
모든 레이어는 과거 앞선 레이어의 정보를 모두 받아 학습에 활용하게 된다. 또한, ResNet과 같이 단순히 channel에 대해 cell by cell 형식의 merge 방법이 아닌 생성된 channel을 뒤로 붙여줌으로써 어느정도 정보가 유지된 채로 학습이 진행되게 된다.
따라서 vanishing problem을 어느정도 해결할 수 있으며
그만큼 더 깊게 더 많은 레이어 층을 쌓을 수 있어 complexity를 높일 수가 있었다. 모델의 complexity가 높다는 것은 그만큼 데이터에 대해 자세히
설명할 가능성이 높다는 것 이므로, 이는 결과적으로 분류에 있어 좋은 성능을 보여준 것으로 보인다. Dense block의 개념을 깊게 이해하고 잘만 활용한다면
Autoencoder, GANs과 같이 여타의 다른 deep learning 기반 방법론에도
접목시킬 수 있을 것을 생각되어 이를 기반으로 다양한 연구를 시도할 수 있을 것이라 생각한다.