KAERI/RR-4403/2018 79713-18 보안과제( ), 일반과제( ○ )

딥러닝을 활용한 빅데이터 분석에 기반한 이상유동 모델링 Two-phase Fluid Modeling by Analyzing Big Data in Deep Learning Framework

한국원자력연구원

제 출 문

한국원자력연구원장 귀하

이 보고서를 “자체연구개발사업” 과제 세부과제 “딥러닝을 활용한 빅데이터 분석에 기반한 이상유동 모델링”의 연구보고서로 제출합니다.

2018년 10월 25일

주 관 연 구 기 관 명 한국원자력연구원 주 관 연 구 책 임 자 도성주

- 1 -

보고서 요약서

해 당 단 계 과 제 고 유 번 호 79713-18 2018.3.21-9.20 단계구분 연 구 기 간 중 사 업 명 자체연구개발 사업 연 구 사 업 명 세 부 과 제 명 대 과 제 명 딥러닝을 활용한 빅데이터 분석에 기반한 이상유동 모델링 연 구 과 제 명 세 부 과 제 명

해 당 단 계 총 1명 정부 천원 해 당 단 계 참 여 내부 1명 기업 천원 연 구 비 연 구 원 수 외부 0명 계 천원 연 구 책 임 자 도성주 총연구기간 총 1명 정부 천원 참 여 내부 1명총 연구비 기업 천원 연 구 원 수 외부 0명 계 5,000 천원 연구기관명 및 한국원자력연구원, 열수력중대사고 참 여 기 업 명 소 속 부 서 명 안전연구부 국 제 공 동 연 구 상대국명 : 상대국 연구기관명 :

위 탁 연 구 연구기관명 : 연구책임자 :

요약(연구결과를 중심으로 개조식 500자 이내로 작성합니다.) 보 고 서 면 수 70p.

-딥러닝을 이용한 이상 유동 모델링이 가능한지를 평가하기 위한 사전연구를 수행. -딥러닝 환경 구축법 및 관련 지식에 대한 사전조사를 수행. -3X3 고온고압 실험 및 FLECH-SEASET 실험에 대한 학습을 수행 및 평가.

한글 딥러닝 학습, 이상 유동 모델링, 빅데이터, 상관식 모델링, 데이터 피팅 색 인 어 (각 5개 이상) deep learning, two-phase fluid modelling, big data, correlation modelling, 영어 data fitting method

- 3 -

요 약 문

Ⅰ. 제 목

딥러닝을 활용한 빅데이터 분석에 기반한 이상유동 모델링

Ⅱ. 연구개발의 목적 및 필요성

연구원의 강점 중에 하나인, 오랜 역사에 걸맞게 축척된 방대한 실험데이터들이 존재하 고 있다. 따라서 이를 적절히 다루기 위한 방법론이 필수적인 상황이라 생각한다. 각 데 이터마다 매번 연구자가 데이터의 상관식을 만들며 피팅하는 방법은 근본적인 한계가 있 다. 이를 일정한 네트워크만 구성한 후, 기계로 하여금 자동으로 학습하게 하는 방법이 빅데이터를 처리하는데 가장 적절한 방법이라 생각된다. 또한 초등함수들로 구성된 기존의 상관식들은 디테일한 현상들을 모델링하기에 적합하 지 않았지만, Deep learning 통해 심도있게 학습된 machine은 이를 예측할 수 있을 것이 라 전망된다. 기본적으로 사람이 다룰 수 있는 함수의 미지수의 개수와 딥러닝 네트워크 가 다루는 미지수의 개수는 비교 조차할 수 없을 정도로 차이가 난다. 이렇게 높은 자유 도와 사람이 인지할 수 없는 표현력을 가진 딥러닝 네트워크가 보다 적절한 상관식을 유 추해낼 수 있을 것이라 기대한다. 위와 같은 이유들로, 현재 가장 각광받고 있는 계산 과학 알고리즘인 Deep learning을 활용하여, 이상 유동과 관련된 몇 가지 실험에 대한 학습을 수행하고자 한다. 동시대 가 장 주목받고 있는 딥러닝 대한 연구의 흐름을 파악하고 연구를 수행해나가는 것이 장기 적인 관점에서 필요하다고 생각한다.

Ⅲ. 연구개발의 내용 및 범위

기존 직관적, 경험적으로 모델링 되었던 이상유동 상관식들을, 이미 여러 분야에서 검 증된 data fitting machine 인 deep learning 기법을 통하여, 모델링하고자 한다. 이러한 접근 방법에는 적절한 학습데이터의 구성과 그에 맞는 뉴런 네트워크의 구조 생성이 필 수적이다. 첫 번째 이슈는 서로 다른 데이터 개수(100개와 10,000개)와 데이터 구조를 갖는 두 실험의 학습을 진행하면서 그 타당성을 평가할 것이다. 더불어 두 번째 이슈는 현재 널

- 5 - 리 사용되고 좋은 성능을 보이고 있다고 보고되고 있는 MLP(Multi-Layer Perceptron) 네트워크와 CNN(Convolutional Neuron Network)을 적극 활용할 수 있다고 판단된다. 또한 함수의 최적화인 딥러닝 학습과 관련된 이슈들을 해결하기 위한 기법들에 대한 사 전 조사도 진행하고자 한다. 이러한 이슈들에는 활성화 함수(Activation function)의 선택 과 learning rate의 선택 및 overfitting을 막기위한 dropout, regularization 테크닉 등이 존재한다. 위에 언급 된 두 가지 실험 데이터에 대한 학습을 진행한 후, 실제 실험값과 상대오차 를 지표로 본 사전연구의 활용가능성을 평가하고자 한다.

- 6 - SUMMARY

Ⅰ. Project Title

Two-phase Fluid Modeling by Analyzing Big Data in Deep Learning Framework

Ⅱ. Objective and Importance of the Project

One of the strengths of our research center is the vast amount of experimental data accumulated. Therefore, I think that a methodology for dealing with this is essential. Every time a researcher creates a correlation equation to fit data. There is a fundamental limitation. After configuring only a certain network, it is the most appropriate way to process big data by letting the machine learn automatically. In addition, existing correlations composed of elementary functions are not suitable for modeling detailed phenomena, but it is expected that deeply learned machines can predict them through Deep learning. Basically, the number of unknown functions that can be handled by humans and the number of unknowns handled by the deep learning network are so different that they can not even be compared. It is expected that a deep learning network with such high degree of freedom and expressive power that humans can not perceive can infer a more appropriate correlation. For the above reasons, we would like to study some experiment related to 2-phase fluid by using Deep learning, which is the most popular computational science algorithm. From a long term perspective, I think it is necessary to grasp the flow of research about deep learning which is the most attention in the present age and to carry out research.

Ⅲ. Scope and Contents of Project

We intend to model the existing intuitively and empirically modeled 2-phase fluid correlations through deep learning techniques, which have already been proven in many fields. In this approach, it is essential to construct appropriate learning data and structure the neuron network accordingly.

- 7 - The first issue will evaluate the validity of two experiments with different numbers of data (100 and 10,000) and data structures. In addition, the second issue is that we can take advantage of MLP (Multi-Layer Perceptron) network and CNN (Convolutional Neuron Network), which are widely used and reported to have good performance. We will also conduct a preliminary investigation of techniques for solving issues related to deep learning learning, which is an optimization of functions. These issues include selection of activation functions, selection of learning rates, and dropout and regularization techniques to prevent . After performing deep learning with the two experimental data mentioned above, we will evaluate the possibility of using the preliminary research based on the real experimental value and the relative error as indicators.

- 8 - CONTENTS

SUMMARY ··········································································································································7

Chapter 1. Research Overview ·······························································································17 Section 1. Necessity of Research ································································································19

Chapter 2. Exploring Preliminary Knowledge for Research ········································23 Section 1. Deep Learning Development Languages ································································ 25 1. Caffe ·········································································································································26 2. Keras ·········································································································································26 3. Tensor flow ·····························································································································26 4. Theano ······································································································································27 5. Torch ·········································································································································27 6. Summary and Selection of summary and language ····················································28 Section 2. Building a Software Environment ·············································································29 1. Installing anaconda and creating a virtual environment ···········································29 2. Theano, Keras and related libraries ·················································································29 Section 3. Neural Network Discovery and Optimization Techniques ···································31 1. MLP(Multi Layer Perceptron) ······························································································31 2. CNN(Convolutional Neural Network) ·················································································32 3. SGD(Stochatic ) ······················································································33 4. Regularization ··························································································································34

Chapter 3. Research and Development Contents ··························································37 Section 1. 3x3 High temperature and high pressure experiment ········································39 1. Experimental data structure and preprocessing ···························································39 2. Deep learning Results ··········································································································41 Section 2. FLECHT-SEASET Experiment ····················································································48 1. Experimental data ··················································································································48 2. Deep learning Results ··········································································································53

- 9 - Chapter 4. Summary and Conclusion ···················································································61 Section 1. Research Summary ······································································································63 Section 2. Conclusion ······················································································································63

Chapter 5. References ················································································································65

BIBLIOGRAPHIC INFORMATION SHEET ·············································································70

- 10 - 목 차

요약문 ·····················································································································································5

제1장 연구 개요 ································································································································17 제1절 연구의 필요성 ·····························································································································19

제2장 연구를 위한 선행지식 탐색 ·································································································23 제1절 딥러닝 개발 언어들 ····················································································································25 1. Caffe ·······································································································································26 2. Keras ·········································································································································26 3. Tensor flow ·····························································································································26 4. Theano ······································································································································27 5. Torch ·········································································································································27 6. 요약 및 언어의 선택 ·················································································································28 제2절 소프트웨어 환경 구축 ················································································································29 1. 아나콘다 설치 및 가상환경 만들기 ··························································································29 2. Theano, Keras 및 관련 라이브러리들 설치 ··········································································29 제3절 뉴럴 네트워크 탐색 및 최적화 기법들 ······················································································31 1. MLP(Multi Layer Perceptron) ······························································································31 2. CNN(Convolutional Neural Network) ·················································································32 3. SGD(Stochatic Gradient Descent) ······················································································33 4. Regularization ··························································································································34

제3장 연구개발 내용 ······················································································································37 제1절 3x3 비변형 고온고압 실험 ········································································································39 1. 실험데이터 구조 및 전처리 ·······································································································39 2. 딥러닝 학습 결과 ·······················································································································41 제2절 FLECHT-SEASET 실험 ···········································································································48 1. 실험 데이터 ································································································································48 2. 학습 결과 ···································································································································53

- 11 - 제4장 요약 및 결론 ··························································································································61 제1절 과제 요약 ···································································································································63 제2절 결론 ············································································································································63

제5장 참고문헌 ··································································································································65

서지정보양식 ·······································································································································69

- 12 - 표 목차

표 1 딥러닝 언어별 특성들 ···································································································································28

표 2 실험 데이터 구성 ··········································································································································40

표 3 학습 데이터 인풋 형태 ·································································································································48 표 4 학습 데이터 아웃풋 형태 ······························································································································49

- 13 - 그림 목차

그림 1 5개 뉴런(neuron), 2개의 층(layer)들을 이용한 네트워크의 표현력 ·······················································19

그림 2 7개 뉴런(neuron), 2개의 층(layer)들을 이용한 네트워크의 표현력 ·······················································19

그림 3 9개 뉴런(neuron), 2개의 층(layer)들을 이용한 네트워크의 표현력 ·······················································19 그림 4 벽면 막응축 열전달 상관식 ·······················································································································20

그림 5 NC State Univ에서 진행중인 유사 연구. ·······························································································20

그림 6 Deep learning을 이용한 열수력현상 모델링의 변화.(좌 -> 우) ····························································21 그림 7 MLP 네트워크의 구조 도식화 ················································································································31

그림 8 원본 이미지(우측)와 convolutional network에 의해 추출된 특징 지도(좌측) ·····································32

그림 9 CNN의 도식화 ··········································································································································33 그림 10 Gradient Descent 알고리즘의 이동경로 ······························································································34

그림 11 underfitting, overfitting 에 대한 설명 ································································································35

그림 12 Dropout 도식화 ·····································································································································36 그림 13 데이터 피클링 전/후 비교 ······················································································································40

그림 14 Python code for pickling training data ···························································································41

그림 15 3X3 고온고압 실험 데이터 그래프 ·········································································································42 그림 16 학습에 사용될 딥러닝 네트워크 ··············································································································43

그림 17 sigmoid를 activation 함수를 적용했을 때의 학습결과 ········································································44

그림 18 sigmoid를 activation 함수를 적용했을 때의 loss function의 프로파일 ············································44 그림 19 제시된 네트워크의 코드 구현 ·················································································································45

그림 20 exact 값과 학습에 의한 값의 그래프 ····································································································45

그림 21 네트워크의 학습 에러에 대한 프로파일링 ······························································································46 그림 22 학습결과에 대한 학습 상대 오차 프로파일 ····························································································46

그림 23 학습 데이터 10,000개에 대한 그래프 ···································································································51

그림 24 Validation 문제 4개에 대한 그래프 ······································································································52 그림 25 네트워크 구조 및 convolutional layer를 사용하는 방법 ·····································································53

그림 26 학습에 따른 loss function의 behavior ································································································54

그림 27 case1) 실험값과 예측값 ·························································································································55 그림 28 case1) 상대오차 그래프 ·························································································································55

그림 29 case2) 실험값과 예측값 ·························································································································56

그림 30 case2) 상대오차 그래프 ·························································································································56 그림 31 case3) 실험값과 예측값 ·························································································································57

- 14 - 그림 32 case3) 상대오차 그래프 ·························································································································57

그림 33 case4) 실험값과 예측값 ·························································································································58 그림 34 case4) 상대오차 그래프 ·························································································································58

- 15 - - 16 - 제1장

연구 개요

제1절 연구의 필요성

- 17 -

제1장 연구 개요

제1절 연구의 필요성

계산과학계의 새로운 패러다임으로 떠오르고 있는 Deep learning은 알파고, 자율주행기 법, 음성인식 등 여러 응용과 결합되어 큰 파급효과를 불러오고 있습니다. 이렇게 매혹적 인 응용분야들을 통해, Deep learning 기법이 마치 만능 해결사인 것처럼 받아들여지고 있지만, 본질적으로 Deep learning 기법은 Distribution을 Fitting 하는 한 가지 기법임에 지나지 않습니다. Deep learning 기법이 강력한 이유는 다음과 같습니다. 사람의 뇌가 작동하는 방식과 유 사한 뉴런들의 네트워크를 구성하여, 그 네트워크가 표한할 수 있는 함수의 자유도를 아 주 넓게 만들어 수 있다는 점입니다. 간단한 예시를 통해 2차원에서 2개의 뉴런을 이용 하여 설명을 한 그림은 아래와 같습니다.

그림 1 5개 뉴런(neuron), 2개의 층(layer)들을 이용한 네 트워크의 표현력

그림 3 9개 뉴런(neuron), 2 그림 2 7개 뉴런(neuron), 2개의 층(layer)들을 이용한 개의 층(layer)들을 이용한 네 네트워크의 표현력 트워크의 표현력

그림 인식을 위해 사용되는 네트워크는 보통 1억개의 뉴런과 22개의 층으로 구성되어 있으니, 이러한 네트워크가 아주 복잡한 distribution을 올바르게 추론할 수 있다는 것은 그다지 놀라운 일이 아닙니다.

- 19 - 이러한 Deep learning 기법을 이와 같이 data fitting 의 관점에서 고찰해본다면, 그 응용 분야는 비단 IT 산업쪽으로 국한될 필요는 없다고 판단할 수 있습니다. 격납건물 내의 비 응축성 가스의 거동 해석과 같은 복잡하고 큰 규모의 열수력 현상들은 적절한 모델링(비 등, 응축, 연소)이 갖춰져야 성공적으로 해석될 수 있습니다. 현재 이러한 모델링들은 실 험 데이터를 분석하여 상관식을 만들어 모델링 되고 있습니다.

그림 4 벽면 막응축 열전달 상관식

데이터를 fitting 하기 위해, 여러 가지 형태의 함수가 사용되지만 대개 그 형태는 초등 함수(elementary function), 혹은 그들의 곱으로 구성되어 있습니다. 따라서 이러한 식들이 표현할 수 있는 분포는 위에 설명드린 대규모 Deep learning 네트워크에 비해 매우 한정 적이라 할 수 있습니다. 즉, 모델링으로 표현할 수 있는 현상이 상당히 제한적이라고 할 수 있습니다.

연구원 내에 훌륭한 실험장치들(ATALAS, SMART-ITL, RCP, RCS, ...)이 오랜 시간 충분 한 양의 실험 데이터들을 축적하고 있습니다. 이 제안서의 핵심 내용인 Deep learning 기 법이 성공적으로 작동하기 위해서 가장 중요한 요소가 바로 training set 의 풍부함입니 다. 이러한 관점에서, 우리 연구원에서의 Deep learning 기법의 적용은 상당히 고무적이 라고 전망합니다. 또한 제가 제안하는 방향과 유사한 연구가 해외에서 진행되기 시작하 였습니다.

그림 5 NC State Univ에서 진행중인 유사 연구

마지막으로 정리하자면, 원자로 노형 및 구조에 따라 상관식을 매번 모델링하는 작업은 연구자들의 노력이 상당히 들어가는 부분입니다. 이러한 부분을 Deep learning 이라는 data fitting machine을 이용하여, 축적된 big data를 십분 활용해 자동적으로 계산되게 할 수 있다는 것이 본 제안서의 골자입니다.

- 20 - 그림 6 Deep learning 을 이용한 열수력현상 모델링의 변화 (좌 -> 우)

- 21 - - 22 - 제2장

연구를 위한 선행지식 탐색

제1절 딥러닝 개발 언어들 제2절 소프트웨어 환경 구축 제3절 뉴럴 네트워크 탐색 및 최적화 기법들

- 23 -

제2장 연구를 위한 선행지식 탐색

Deep learning이 과거에 크게 주목 받지 못한 이유는 크게 세 가지 이유가 있었다. 먼 저 ‘deep’ learning에 대한 이론적인 결과가 전무했다는 점이다. 네트워크가 deep 해지면 문제가 더 이상 볼록(convex)해지지 않는데, 이 상태에 대해 좋은 수렴(convergence)은 어느 정도 이며, 어떠한 것이 좋은 초기화(initialization)인가 등에 대한 연구가 전무하다. 즉, learning하면 overfitting이 너무 심하게 일어난다, 둘째로 이론적으로 연구가 많이 진 행되어있는 ‘deep’ 하지 않은 network는 xor도 learning할 수 없는 한계가 존재한다는 점 이다. 이는 linear classifier의 사용으로부터 기인한다. 마지막으로 computation cost가 막대해서 그 당시 컴퓨터로는 도저히 처리할 엄두조차 낼 수 없었다는 점이다.

그렇다면 지금은 무엇이 바뀌었길래 deep learning이 주목을 받기 시작한걸까? 가장 크게 차이 나는 점은 예전과는 다르게 overfitting을 handle할 수 있는 좋은 연구가 많이 나오게 되었다는 것이다. 처음 2007, 2008년에 등장했던 unsupervised pre-training method들 (이 글에서 다룰 내용들), 2010년도쯤 들어서서 나오기 시작한 수많은 regularization method들 (dropout, ReLU 등). 그리고 과거보다 하드웨어 스펙이 압도적 으로 뛰어난데다가, GPU parallelization에 대한 이해도가 높아지게 되면서 에전과는 비교 도 할 수 없을정도로 많은 computation power를 사용할 수 있게 된 것이다. 현재까지 알 려진바로는 network가 deep할 수록 그 최종적인 성능이 좋아지며, optimization을 많이 하면 할 수록 그 성능이 좋아지기 때문에, computation power를 더 많이 사용할 수 있다 면 그만큼 더 좋은 learning을 할 수 있다는 것을 의미하기 때문에 하드웨어의 발전 역시 중요한 요소이다.

제1절 딥러닝 개발 언어들

딥러닝 관련 기술이 빠르게 발전함에 따라, 이를 개발하기 위한 언어도 매우 다양해지 고 고도화 되었다. 현존하는 모든 언어의 종류를 나열하기는 힘들지만, 많이 쓰이는 언어 의 종류는 Caffe, Chainer, CNTK, DL4J, Keras, MXNet, Tensorflow, Theano, Torch 정도가 될 것이다. 각 언어에 따라, 네트워크를 구성하는 방식과 지원하는 최적화 방법 및 사용자 입력 함수의 구현을 하는 방법이 다르다. 가장 두드러지게는 대형계산을 보다 효율적으로 수행가능하게 하는 GPU 계산을 지원하는지 여부 또는 병렬계산을 위한 OpenMP 및 Multi-GPU 계산을 가능하게 하는지 등이 특징이 되겠다. 따라서 연구를 수 행하기 앞서, 각 언어들의 특징들을 살펴보고, 본 연구에 적합한 언어를 선택하여 연구를

- 25 - 진행하고자 한다.

1. Caffe Yangqing jia(UC Berkerey)/Evan Shellhamer(UC Berkerey)에 의해 개발 된 언어이다.

가. 장점 ó 이미지 처리에 특화된 언어 ó 프로그래밍하는 대신 설정 파일로 학습 방법 및 네트워크를 정의. ó 다양한 Pre training 모델들을 제공

나. 단점 ó 이미지 이외의 텍스트, 사운드 등의 데이터 처리에는 부적합 ó 유연하지 못한 API ó 문서화가 잘 안되어있음

2. Keras Francois Chollet(Google) 에 의해 개발된 언어이다. symbolic 언어인 theano에 기반한 high level interface의 특징을 갖는 언어이다.

가. 장점 ó 다양한 딥러닝 프레임워크와 쉬운 연동 ó 직관적인 API 인터페이스 ó Caffe, Torch, tensorflow 등과 같은 다양한 딥러닝 프레임워크와 연동 가능. ó 코드와 관련한 문서화가 잘되어 있음

나. 단점 ó theano 기반의 프레임워크라 문제 발생시 디버깅이 어려움.

3. Tensor flow Google brain에 의해 개발 및 유지보수가 되는 언어로, 폭 넓은 사용자 층을 갖고 있다.

가. 장점 ó 추상화된 그래프 모델 ó 학습 디버깅을 위한 시각화 도구 tensor board 제공

- 26 - ó 모바일 지원 ó low level/high level API 모두 제공 ó 방대한 사용자 커뮤니티

나. 단점 ó Torch 에 비해 계산 성능이 떨어짐 ó 런타임에서 그래프 변경이 불가

4. Theano LISA Lab에 의해 개발 및 유지보수가 되는 언어이다. Symbolic math에 기반한 언어로 서, 사용하기에는 매우 편하지만 디버깅할 때에 매우 어렵다는 한계가 있다.

가. 장점 ó low-level을 제어할 수 있는 API ó 추상화된 그래프 모델 지원 ó 빠르고 유연함 ó keras, Lasange, Blocks 등의 기반이 되는 프레임워크

나. 단점 ó low-level API의 복잡성

5. Torch Ronan Collobert(Facebook) 에 의해 개발된 언어이다.

가. 장점 ó 알고리즘 모듈화가 잘되어 있음 ó 다양한 데이터 전처리 기술 및 시각화 기술 ó 간단한 Lua 기반의 언어 ó 직관적인 API

나. 단점 ó 파이썬 인터페이스 없음

- 27 - ó 문서화가 잘 안되어있음 ó 협소한 사용자 커뮤니티 ó 심볼릭 모델 미제공 ó 연구용으로만 적합.

6. 요약 및 언어의 선택 표 1 딥러닝 언어별 특성들 Interfac OpenM Multi 언어 개발자 OS 언어 CUDA OpenCL e P GPU Linux, Python, Caffe BAIR C++ YY-Y Mac matlab Linux, Francois, Keras Max, Python Python Y Y - Y Chollet Window Linux, Python, Tensor C++, Google Max, C++, YY-Y Flow Python Window Jave Universit Linux, Theano y de Max, Python Python YY-Y Montreal Window Ronan, Linux, Clement, Torch Max, C, Lua Lua YYYY Koray, Window Soumith

위에서 조사한 결과 ‘Keras’ 를 이용하여 연구를 진행하는 것이 적합하다고 판단되었다. 그 판단의 근거는 다음과 같다. 첫째는 넓은 사용자 그룹의 유무이다. 보다 많은 유저가 있다면, 그 언어의 유지/보수가 보다 체계적으로 이루어진다. 특히 최근 기술들의 구현이 활발히 이루어지고, 수많은 검증이 이루어졌기 때문에 개발 언어 자체의 버그로 인한 고 충이 적을 것이다. 또한 Git을 통해 코드의 공유가 활발하기 때문에 연구 진행이 가장 수 월할 것이다. 두 번째는, GPU 및 Multi GPU의 사용가능성이다. 사전연구에서는 CPU를 이용하여 학 습이 진행되지만, 보다 많고 고도화 된 학습 데이터를 사용하기 위해서는 큰 규모의 계 산을 보다 빠르게 처리할 수 있어야한다. 이에 딥러닝 산업계가 택한 하드웨어가 GPU이 다. 따라서 연구의 지속성과 발전성을 고려해 볼 때 GPU 지원은 매우 중요한 척도이다. 마지막으로 base 언어의 이식성 및 활용성이다. Caffe와 같이 C 기반의 프레임워크로 만들어진 언어는 개발자로 하여금 hard coding을 강요한다. 기존 코드의 가독성이 현저히 떨어지고 사용자 정의 함수를 구현하기 위해 수많은 시행착오를 거쳐야 한다. 이와 대비 되게 스크립트 언어인 python 기반의 언어들은 개발자로 하여금 high-level의 코딩을 할

- 28 - 수 있게 한다.

제2절 소프트웨어 환경 구축

본 절에서는 keras 소프트웨어를 윈도우 환경에서 어떻게 셋팅하여 사용할 수 있는지 에 대해 기술하도록 한다. keras가 기반을 두고 있는 theano 및 그와 관련된 패키지들이 리눅스 사용자들을 염두에 두고 개발되었기 때문에, 이를 윈도우에서 구동하기 위해서는 다소 복잡한 과정이 필요하다. 이에 문서화 할 필요성을 느껴 환경 구축에 대해 기술하 고자 한다.

1. 아나콘다 설치 및 가상환경 만들기

파이썬 배포판으로 Anaconda 3.5를 설치한다. numpy, scipy 등과 같은 과학계산에 필 요한 라이브러리들을 모두 포함하고 있다. 또한 가상환경을 생성해주어, 개발자로 하여금 각종 라이브러리의 dependency에 유연하게 대응할 수 있게 만들어준다. 설치 이후, PATH environment 추가가 상황에 따라 필요할 수 있다. 다음을 command 창에 입력하여 keras를 구동할 가상 환경을 구축한다.

conda create -n "가상환경이름" python=3.5 anaconda

2. Theano, Keras 및 관련 라이브러리들 설치

원활한 개발을 위해 필요한 라이브러리 및 프로그램들을 다음의 순서로 설치한다. 각 프로그램이 어떤 기능을 하는지는 자세히 기술하지 않겠다.

1) Jupyter notebook 설치 python 스크립트를 보다 편리하게 편집하고 디버깅할 수 있는 프로그램이다. 딥러닝 관련 연구자들이 가장 많이 사용하는 IDE 중 하나이다.

설치 : conda install "가상환경이름" ipython notebook 실행 : jupyter notebook

2) 다음의 라이브러리들을 설치 numpy, matplotlib, pandas, pydotplus, h5py, scikit-learn, scipy, mkl-service, libpython

3) theano와 keras 설치

- 29 - 설치 : conda install "가상환경이름" theano 설치 : conda install "가상환경이름" keras

4)IDE 구동 방법 실행 : activate "가상환경이름"

실행 : jupyter notebook

- 30 - 제3절 뉴럴 네트워크 탐색 및 최적화 기법들

1. MLP(Multi Layer Perceptron)

Perceptron에서 XOR Problem의 문제처럼, Perceptron이 갖는 선형이진분류가 갖는 한 계점을 돌파하기 위해 Perceptron을 여러개 쌓는 방법이 나오게 되었다. 이것을 Multi-Layer Perceptron이라고 한다.

그림 7 MLP 네트워크의 구조 도식화

- 31 - 2. CNN(Convolutional Neural Network)

기계학습은 data→knowledge 로 바로 학습을 진행할 수도 있지만 보통 중간 단계인 특 징 추출(feature extraction)을 거쳐 data→feature→knowledge 의 단계로 학습하는 것이 보통이다. 예를 들어 사진 속에서 사물을 인식하기 위해 픽셀 값에서 먼저 특징적인 선 이나 특징적인 색 분포 등을 먼저 추출한 후 이를 기반으로 '이건 사과다' '이건 바나나다 '라는 판단을 내리는 것과 유사한 논리이다. 이러한 중간 표현단계를 특징 지도 (feature map)이라고 하는데, 기계학습의 성능은 얼만큼 좋은 특징들을 뽑아내느냐에 따라 그 성 능이 매우 크게 좌지우지 된다. 이는 비단 이미지 처리 뿐만 아니라 음성 인식, 자연어 분석 등 대부분의 기계학습에 적용되는 이야기이다.

그림 8 원본 이미지(우측)와 convolutional network에 의해 추출된 특징 지도(좌측) (출처: M. Zeiler)

CNN의 성공 요인 중 하나를 꼽자면, 예전엔 사람의 예측에 의해 뽑히던 이 특징들을 지금은 이 마저도 기계학습을 이용해 뽑는다는 것입니다. 다시 말해, 예전엔 '선들을 추 출해서 학습시키면 사물인식이 잘 될거야'와 같이 사람이 먼저 이 선들을 추출하는 알고 리즘을 만들어 주었는데, 이제는 특징 추출과 학습 모두가 딥러닝 알고리즘 안에 포함되 었다는 것입니다. 다단계로 특징을 추출해 학습하는 Convolutional Neural Network은 현 재 딥러닝의 대세로서 특히 이미지 인식에서 큰 발전을 이룩하고 있습니다.

- 32 - 그림 9 CNN 의 도식화

3. SGD(Stochatic Gradient Descent)

네트워크를 구성한 뒤, 이제 손실함수()의 값을 최소화하면 소위 말하는 학습이 진행되는 것이다. 함수를 최적화하는 가장 간단한 방법은 그래디언트(gradient)를 계산한 뒤, 그것의 음의 방향으로 점을 이동해 나가는 것이다. 그러나 문제가 하나 있는 데, 일반적으로 neural network의 input data의 개수가 엄청나게 많다는 것이다. 때문에 정확한 gradient를 계산하기 위해서는 모든 training data에 대해 gradient를 전부 계산하 고, 그 값을 평균 내어 정확한 gradient를 구한 다음 한 번 update해야한다. 그러나 이런 방법은 너무나도 비효율적이기 때문에 Stochastic Gradient Descent (SGD) 라는 방법을 사용해야한다.

- 33 - 그림 10 Gradient Descent 알고리즘의 이동경로

SGD는 모든 데이터의 gradient를 평균내어 gradient update를 하는 대신 (이를 ‘full batch’라고 한다), 일부의 데이터로 ‘mini batch’를 형성하여 한 batch에 대한 gradient만 을 계산하여 전체 parameter를 update한다. Convex optimization의 경우, 특정 조건이 충족되면 SGD와 GD가 같은 global optimum으로 수렴하는 것이 증명되어있지만, neural network는 convex가 아니기 때문에 batch를 설정하는 방법에 따라 수렴하는 조건이 바 뀌게 된다. Batch size는 일반적으로 메모리가 감당할 수 있을 정도까지 최대한 크게 잡 는 것이 바람직하다.

4. Regularization

딥러닝 학습을 진행하다보면, 종종 overfitting이 발생한다. 즉 머신이 학습 데이터를 너무 완벽하게 학습하려고 하는 나머지, 학습 데이터가 내포하고 있는 노이즈까지도 학 습하려 하는 경향이 생긴다. 따라서 손실 함수의 값이 작아지고, 오류가 줄어드는 것 같 아 보이지만 실제로는 학습이 제대로 된다고 하기는 어려운 상황에 직면하게 된다. 이러 한 현상을 해결하기 위해, 정규화(regularization)이라는 개념이 도입되었다. 즉, 정규화는 학습 알고리즘을 약간 수정하여 모델이보다 잘 일반화 되도록 하는 기술입니다.

- 34 - 그림 11 underfitting, overfitting 에 대한 설명

가. Dropout

Dropout 은 딥네트워크를 학습하는 데에 있어 은닉 계층 안의 일부 노드를 강제로 꺼 버리는 과정을 통해 분류 성능을 크게 향상시키는 트릭이다. ImageNet 에 딥러닝을 성공 적으로 적용했던 사례인 AlexNet 에서도 사용되었다. 일반적으로는 매 학습 데이터 하나마다 각 은닉 뉴런 별로 0.5 의 확률로 강제로 꺼질 뉴런을 무작위로 선택한다. 이러한 과정을 통해, 만약 n 개의 은닉 뉴런을 가지고 있었다 면, 마치 2n개의 다른 네트워크를 가지고 앙상블을 만든 효과를 갖게 된다. 하지만, 앙상 블의 모든 네트워크의 가중치는 공유되기 때문에 강력한 정규화 효과를 지니게 된다. 즉, 여러 개의 모델을 한번에 다루는 효과를 부여하게 되어 훨씬 설명력이 좋은 다수의 모델 을 학습하게 된다. 학습을 마친 후에 dropout 을 수행한 모델을 가지고 추론할 경우에는 다수의 모델의 결과를 합쳐서 이용하는 효과를 가지므로, 가중치의 값들을 반으로 줄여서 연산을 수행 하면 된다. 이 과정은 출력들의 기하평균을 취하여 다음 계층으로 보내는 것과 동일한 효과를 낸다. 이론적인 연구는 현재까지 제한적으로 수행되어 있어서, 현재까지는 경험적인 지식들이 좀더 알려져 있다. Dropout 을 사용할 때 가질 수 있는 실제적인 궁금증에 대해 가능한 답을 해보자면, 은닉 계층이 여러 개일 경우에는 매 은닉 계층마다 0.5 dropout 을 사용 하는 것이 좋다. 그렇다면, 입력 계층에도 dropout 을 사용해야 하는가? 실험적으로 밝혀진 바에 따르면 입력계층에도 dropout 을 사용하는 것이 좋다. 딥빌리프네트워크에서는 dropout 을 어떻 게 사용하는가? 미세조정과정에서 감독학습을 할 때 적용할 수 있다.

- 35 - 그림 12 Dropout 도식화

나. L1, L2 regularization

L1과 L2는 가장 일반적인 유형의 정규화이다. 이들은 정규화 항 (regularization term) 을 손실 함수(loss function)에 추가함으로써 구현이 된다. 이 정규화 항의 추가로 인해, 가중치 행렬의 값은 더 작은 가중치 행렬을 갖는 신경망이 되고, 이는 네트워크를 더 단 순한 모델로 인식하게 된다 . 따라서 overfitting을 상당히 줄일 수도 있다. 아래 식들은 각각 L1, L2 정규화를 적용한 손실함수의 형태이다.

여기서 λ는 튜닝이 가능한 정규화 매개 변수이다. 더 나은 결과를 위해 값이 최적화 된 것 은 하이퍼 매개 변수입니다.

- 36 - 제3장

연구개발 내용

제1절 3x3 비변형 고온고압 실험 제2절 FLECHT-SEASET 실험

- 37 -

제3장 연구개발 내용

이번 장에서 본격적으로 본 과제의 연구개발 방법과 얻은 결과에 대한 내용을 설명하 고자 한다. 크게 두 가지 실험으로 분류가 되는데, 첫 번째는 3x3 비변형 고온고압 실험 이고 두 번째는 FLECHT-SEASET 실험이다. 두 케이스의 가장 큰 차이는 학습 데이터 의 수의 차이이다. 첫 번째 시도는 약 100여 개의 실제 실험데이터만 사용하였을 때, 얻 을 수 있는 딥러닝 기법의 결과이고, 두 번째 시도는 약 10000여 개의 재생산된 데이터 를 사용하였을 때의 딥러닝 기법의 결과이다.

제1절 3x3 비변형 고온고압 실험

※ 본 실험의 실험데이터는 열수력 중대사고 안전연구부의 문상기 박사님/ 김종록 박사 님께서 제공해주셨음을 밝힙니다.

1. 실험데이터 구조 및 전처리

압력(system pressure), 초기 수위(initial collapsed water level), 유량(flow rate), 초 기 최대 히터 온도(initial max heater temperature), 냉각수 온도(coolant temperature), 히터 파워(heat power)에 따른 PCT(Peak Cladding Temperature) 값을 유추하고자 한 다. 즉, 앞의 6개의 변수들과 PCT 변수와의 상관관계를 딥러닝 데이터 학습 머신이 잘 학습해낼 수 있는지를 평가해보고자 한다.

- 39 - 표 2 실험 데이터 구성 Initial Init. Max. Coolant System Collapsed heater Heater id Flow rate temperat PCT pressure Water temperat power ure Level ure (bar) (m) (cm/s) (℃) (℃) (kW) (℃) 1 10.5 1.46 4.0 608.73 134.18 26.72 629.5 2 10.6 1.63 4.4 603.39 142.37 27.06 609.58 3 40.4 0.86 0.5 497.56 170.8 10.52 537.32 4 40.5 0.66 0.5 599.26 169.71 15.45 638.96 5 40.5 0.84 1.0 512.45 212.06 10.27 527.31 6 40.4 0.71 1.0 597.51 212.29 15.37 625.54 7 40.5 0.66 1.0 605.09 206.19 18.29 659.23 8 40.5 0.76 1.0 588.85 200.93 27.74 724.47 9 40.4 0.97 2.2 601.86 204.9 27.61 640.95 10 40.4 0.95 2.1 608.55 188.78 27.25 642.98 ... 98 80.9 0.92 4.3 626.17 244.38 39.69 654.3

케라스에서 효율적으로 데이터를 불러오기 위해 다음과 같이 학습데이터를 전처리하는 피클링(pickling)을 수행한다. 개념와 코드는 다음 그림13과 같다. 좌측은 raw data인 실 험 결과를 취합해놓은 엑셀 파일이고, 이를 피클링하여 사전형 배열로 만든 결과는 우측 과 같다.

그림 13 데이터 피클링 전/후 비교

학습 데이터의 피클링의 장점은 다음과 같다. 첫 번째는 효율성 측면이다. 피클링과정 에서 데이터가 압축되기 때문에 보다 효율적으로 불러올 수 있고, 더 작은 파일로 보관 할 수 있다. 또한 데이터가 ASCI 코드가 아닌 binary 포맷으로 저장되기 때문에, 읽는 속도가 이전에 비해 현저히 빠르다. 두 번째는 편의성 측면이다. raw data를 상태로 파일

- 40 - 을 불러올 경우, 매번 training data 부분과 validation data 부분과 target data 부분등을 후처리 해야한다. 그러나 사전식 배열로 피클링 해놓는 데이터는, 해당하는 레이블 이름 을 입력인자로 넣으면 그에 해당하는 부분만 로드할 수 있다. 다음은 피클링을 수행하는 코드의 구조이다. 엑셀호환 작업을 하기 위한 openpyxl 라 이브러리와 피클링을 수행하기 위한 pickle 라이브러리가 외부에서 참조되어 사용되었다. 그 후 데이터 형식에 맞게 적절히 배열된 후, 마지막으로 binary 파일로 dumping 되는 구조의 코드이다.

그림 14 Python code for pickling training data

2. 딥러닝 학습 결과

본 실험의 실험 데이터들은 다음 그림과 같이 그래프화 할 수 있다.

- 41 - 그림 15 3X3 고온고압 실험 데이터 그래프

가로축은 data의 레이블링이고, 세로축은 그 데이터에 해당하는 실수값들이다. 차례대 로, 압력(pressure), Collapsed water level, 질량 유량, 초기 히터의 온도, 냉각재의 온 도, 히터 파워, 마지막으로 우리가 추정하고자하는 PCT(Peak Cladding Temperature)가 되겠다. 위의 6개의 변수와 PCT가 어떤 상관관계를 갖고 있는지 그래프를 갖고 유추해 내기란 매우 힘들어 보인다. 사람이 직관적으로 인지해낼 수 없는 상관관계를 딥러닝 네 트워크는 캐치해낼 수 있을지 다음과 같은 인공지능 네트워크를 통해서 평가해보고자 한 다.

- 42 - 그림 16 학습에 사용될 딥러닝 네트워크

위의 그림과 같이, 각각 6, 30, 50, 30, 1개의 뉴런(Neuron)들을 각 레이어(Layer)에 서 갖는 딥러닝 네트워크를 구성하였다. 가장 처음과 마지막의 뉴런의 개수는, 학습데이 터의 입력(Input)과 출력(Output)에 의해 정해지는 값이며, 중간의 뉴런 개수는 경험적 으로 사용자가 정하는 값들이다. 여러 문헌에서도 언급되어 있듯이, 뉴런 개수 및 레이어 수에 대한 명확한 진단값이 존재하지 않는다. 따라서, 우리의 연구에서도 trial-error 방 법으로 위의 네트워크 구성이 적절하다고 판단하였다. 또한 각 레이어들에서는 선형함수 (linear) 함수를 activation 으로 선택하였다. 이에 대한 옵션은 몇 개가 존재하지 않았는 데, 이유는 다음과 같다. classification 문제에서 주로 사용되는 sigmoid 또는 tanh 함수들은 치역(Range of function)이 [0,1]이다. 최종 레이어에서 softmax 함수를 거쳐 확률값을 리턴하기 위한 문제에서는 사용하도 아무 상관이 없으나, 현재 우리의 문제에서는 PCT의 온도를 학습 해야하는 상황이기 때문에 이는 적절하지 않다. 실제로 아래는 sigmod 함수로 학습을 진 행하였을 경우의 그래프들이다.

- 43 - 그림 17 sigmoid 를 activation 함수를 적용했을 때의 학습결과

그림 18 sigmoid 를 activation 함수를 적용했을 때의 loss function 의 프로파일

- 44 - 그래프와 같이, epoch 이 증가함에도 불구하고 loss 값이 매우 천천히 증가하고 있다. 그에 따라, 적절한 PCT 값을 예측해내지 못하는 것을 확인할 수 있다. 우리가 제시 한 네트워크의 코드는 다음과 같이 직관적으로 구현될 수 있다.

그림 19 제시된 네트워크의 코드 구현 위와 같이 매우 직관으로 코드를 구현할 수 있다. 각 레이어의 weight들은 고른 분포 를 따라 초기화하였다.

코드 학습결과는 다음과 같다.

그림 20 exact 값과 학습에 의한 값의 그래프

- 45 - 그림 21 네트워크의 학습 에러에 대한 프로파일링

그림 22 학습결과에 대한 학습 상대 오차 프로파일

- 46 - 상대 오차 그래프에서 보여주는 것과 같이, 1 개의 경우를 제외하고는 모두 오차범위 5% 이내로 학습이 가능하였다. 조금 더 심도 있는 논의가 필요하다고 판단이 되지만, 이 는 실험에서 기인되는 오차의 가능성이라 생각할 여지도 있어 보인다. 이와 같이 6개의 인풋과 1개의 아웃풋을 학습하기 위해 100여개의 실험 데이터를 활용한 경우, 오차 범위 5% 이내로 학습이 가능함을 확인하였다.

- 47 - 제2절 FLECHT-SEASET 실험

본 절에서 수행할 딥러닝 학습은 FLECHT-SEASET (Full-Length Emergency Core Heat Transfer Separate Effects And System Effects Tests) 이라는 매우 유명한 실험 이다. 이전 절에서 수행한 실험은 실험 데이터의 수가, 적은 편에 속했으며 뿐만 아니라, 예측해야하는 값이 single neuron 이었다. 이에 비해 본 장에서 학습하고자 하는 데이터 는 시간열(time squence), 즉 시간에 따른 Cladding 의 특정 위치에서의 온도 프로파일 이며, 데이터의 수는 10,000개이다. 다시 정리하자면, 이전 절에서 수행한 3X3 고온고압 실험보다 더 복잡한 데이터를 학습해야하는 상황이다. 이번 절에서는 딥러닝 네트워크의 시간열에 대한 학습 가능성을 평가해보고자 한다.

※ 본 실험 데이터는 열수력 중대사고 안전연구부의 허재석, 박해민 박사님께서 제공해 주셨음을 밝힙니다.

1. 실험 데이터

FLECHT-SEASET 실험의 학습을 위하여, 다음과 같이 학습데이터를 구성하였다.

표 3 학습 데이터 인풋 형태 Index Physical Models/Boundary Conditions 1 Interfacial friction between vapor and droplet field 2 Interfacial friction for bubbly flow 3 Interfacial friction for slug flow 4 Interfacial friction for annular flow 5 Interfacial friction for inverted annular flow 6 Interfacial friction for inverted slug flow 7 Droplet entrainment 8 Droplet deentrainment 9 Interfacial heat transfer in bubbly flow 10 Interfacial heat transfer in slug flow 11 Interfacial heat transfer in transition between bubbly and annular Interfacial heat transfer in transition between cap/slug and 12 bubbly 13 Interfacial heat transfer in annular flow 14 Interfacial heat transfer in stratified flow 15 Interfacial heat transfer in inverted annular flow Interfacial heat transfer in inverted annular and inverted slug 16 interpolation regime 17 Interfacial heat transfer in inverted slug flow 18 Interfacial heat transfer in dispersed flow

- 48 - 19 Interfacial heat transfer for flashing 20 Forced convection heat transfer 悢 single phase liquid 21 Forced convection heat transfer 悢 single phase vapor 22 Chen heat transfer coefficient 悢 macro 23 Chen heat transfer coefficient 悢 micro 24 Critical heat flux model 25 Minimum film boiling temperature 26 Film boiling lookup table 27 Bromley corrleation 28 Material thermal conductivity (Boron Nitride) 29 Material thermal conductivity (Kanthal) 30 Material thermal conductivity (ss) 31 Inlet flow 32 Inlet pressure 33 Outlet pressure 34 Inlet temperature 35 power

표 4 학습 데이터 아웃풋 형태 time elevation Temperature 5.00023 2 658.286 6.00023 2 636.15 7.00023 2 622.952 8.00023 2 576.268 9.00005 2 566.187 10 2 541.116 11 2 514.381 12.0001 2 469.698 13 2 434.836 ...... 251 2 347.6 252 2 347.582 253 2 347.564 254 2 347.547 255 2 347.53 256 2 347.513 257 2 347.497 258 2 347.48 259 2 347.464

본 실험에 대한 실제 실험 데이터가 딥러닝 학습을 수행할만큼 충분하지 않았기 때문 에 다음과 같은 방법으로 데이터 생성을 진행하였다.

1) 각 Input의 값들을 SPACE 코드의 입력으로 넣고 수치계산을 수행. 2) 그 결과 산출된 온도들을 Output 파일이라 고려.

- 49 - 즉, 수치계산 결과를 실험 데이터로 간주하여 학습을 진행하고자 한다. 실험 데이터들 이 내포하고 있는 각종 불확실성(실험 관련 오차, 노이즈들)과 코드 계산을 통해 나온 해의 불확실성을 정량적으로 비교하기는 불가능 하지만, 어느 정도 비교가능한 수준이라 가정하고 본 절의 논의를 전개하고자 한다. 이전 절과 마찬가지로 data를 pickling을 수행하였다. 그 과정은 위와 중복되므로, 생략 하고 결과만 아래와 같이 제시한다. 그림과 같이 data의 크기가 768mb에서 22mb 로 약 98% 정도 감소한 것을 확인할 수 있다.

각 학습데이터의 결과 값들을 plot하면 다음과 같은 결과를 얻는다. 가로축은 시간, 세 로축은 온도를 나타내며, 각 선들은 하나의 계산 case를 나타낸다. 우리의 경우 약 10,000개의 case를 학습데이터로 취급하기 때문에, 10,000개의 라인이 아래 그림에 표시 되고 있다. 35개의 인풋들에 조금씩 변화를 가하며, 데이터를 얻었기 때문에, 선들이 변 화가 연속적이고, 그 band width가 한정적임을 확인할 수 있다. 더불어, validation을 위해 10,000개의 set 중 4개의 case를 무작위로 추출하였다. 이러 한 4개의 validation test에 대해, 학습된 네트워크가 얼마나 잘 예측하는지를 평가하는 것이 이 절의 최종 목표가 되겠다.

- 50 - 그림 23 학습 데이터 10,000 개에 대한 그래프

- 51 - 그림 24 Validation 문제 4개에 대한 그래프

또한 학습에 사용된 네트워크 및 활성함수(activation function)은 다음과 같은 구조를 갖는다. 특징적인 것은, 레이어의 첫 단에서 Dense layer를 사용하지 않고, Convolutional 1D layer를 사용했다는 점이다. 이렇게 필터에 기반 한 레이어를 사용하는 경우는 이미 지처리나 자연어 처리 등 신호처리와 관련된 응용인데, 우리의 경우 시간열을 다루기 때 문에 나름의 유사성이 있다고 판단하여 위와 같은 레이어를 사용하였다. Convolutional layer를 사용할 때는, feature map의 수를 명시해야하기 때문에 아래와 같이 input의 shape에 feature map의 수가 담기도록 reshape 해야만 한다. 또한 Dense layer와 연결을 하기 전에 반드시 Flatten을 하여, feature map의 구조에서 일반적인 뉴 런의 구조로 변화시켜야만 한다.

- 52 - 그림 25 네트워크 구조 및 convolutional layer 를 사용하는 방법

2. 학습 결과

코드의 학습에 따른 loss function의 프로파일은 다음 그림과 같이 빠르게 수렴함을 볼 수 있다. learning rate 는 0.1로 셋팅을 하였고, local minima에 빠지는 경향은 보이지 않아, 별도의 dropout이나 l1, l2-regularization 은 고려하지 않았다.

- 53 - 그림 26 학습에 따른 loss function 의 behavior

다음은 validation test로 선정한 4가지 경우에 대한 실험값과 예측값에 대한 그래프와 상대오차 그래프들이다.

- 54 - 그림 27 case1) 실험값과 예측값

그림 28 case1) 상대오차 그래프

- 55 - 그림 29 case2) 실험값과 예측값

그림 30 case2) 상대오차 그래프

- 56 - 그림 31 case3) 실험값과 예측값

그림 32 case3) 상대오차 그래프

- 57 - 그림 33 case4) 실험값과 예측값

그림 34 case4) 상대오차 그래프

- 58 - 그래프에서 알 수 있듯이, case 3, 4의 경우는 case 1, 2에 비해 상대적으로 결과를 잘 예측함을 알 수 있다. 전자의 경우 최대 상대 오차는 10%이내, 후자의 경우 20% 이내를 나타내고 있다. 그러나 reflood시 온도가 급격하게 감소하는 transient 영역을 제외한 영 역들에서는 1~2프로 이내의 오차를 보이고 있다. 이는 우리가 제공한 학습의 input 데이 터들을 이용하여, 전체적인 온도의 평균값은 잘 맞출 수 있지만, 온도가 급격하게 변화하 는 부분은 비교적 잘 예측하지 못함을 보여주고 있다.

- 59 - - 60 - 제4장

요약 및 결론

제1절 요약 제2절 결론

- 61 -

제4장 요약 및 결론

제1절 과제 요약

본 과제에서는, 딥러닝 네트워크를 활용하여 PCT(Peak Cladding Temperature)와 Reflood 시 온도의 변화를 예측하고자 하였다. 이러한 과제를 진행하기 위해, 딥러닝과 관련된 선행지식들의 조사 및 학습이 필요했다. 최신 딥러닝 기법까지는 답습을 하지 못 하였지만, 여러 어플리케이션 분야에서 가장 좋은 성능을 보이고 있는 네트워크 중 하나 인 Convolutional neural network와 가장 기본적이지만 무난한 성능을 보이는 MLP(Multi-Layer Perceptron) 방법에 대한 조사 및 코드 실행을 해냈다. 또한 최적화 기법인 SGD(Stochastic Gradient Descent) 방법에 대한 고찰과, learning rate 및 관련된 여러 기술(Dropout, Regularization, Early Stopping)등에 대한 조사를 마 무리하였다. 6개의 인풋과 1개의 아웃풋으로 구성된 100 case의 학습데이터를 이용하여 PCT 온도 예측에 대한 딥러닝 예측 평가를 하였고, 상대 오차 5% 이내의 결과를 보였다. 또한 36 개의 인풋과 255개의 아웃풋으로 구성된 10,000 case의 학습데이터를 이용하여 FLECHT-SEASET에 대한 딥러닝 예측 역시 평가하였다. 상대적으로 많은 수의 아웃풋 이었음에도 불구하고, 최대 오차율 10~20%, 평균 오차율 5% 이내로 결과를 예측해냈 다. 이는 딥러닝 학습이 단순히 어느 지점에서의 값만을 예측하지 않고, 더 나아가 시간 열에 대한 예측까지 해낼 수 있다는 점을 시사한다.

제2절 결론

과제의 시작 전에도 미리 언급을 하였지만, 성공적인 딥러닝 학습을 위해서는 질 좋은 방대한 학습 데이터의 존재가 필수적이다. 물론, 좋은 데이터가 있더라도 보다 진일보 된 뉴런 네트워크 구성 및 파라미터 학습, 데이터 전처리 등의 기술이 수반되어야 하지만, 학습데이터에 대한 신뢰도 및 노이즈가 심하다면 어떠한 방법을 사용하여도, 바람직한 결과를 얻어내기는 거의 불가능할 것이다. 본 과제에서는 인풋 데이터의 구성을 최대한 단순화 하여 함수를 쉽게 fitting하고자 노 력했지만, 만족할만한 수준의 오차율을 보이지는 못했다고 평가한다. 이러한 이유에는 몇 가지 예측 가능한 가능성들이 존재하는데, 첫째는 학습 데이터 자체의 노이즈이다. 학습 epoch를 높일수록 overfitting 하며 이러한 노이즈를 학습할 수는 있겠지만, loss

- 63 - function이 감소하는 추세를 바라볼 때, 이러한 방향이 적절하다고 판단하기는 힘들다. 두 번째는 데이터 구성의 문제이다. 인풋 데이터를 구성하는데에 있어, 우리가 인지하 지는 못했지만 학습에 필수적인 변수를 포함시키지 못했을 가능성이 있다. 혹은, 아웃풋 을 PCT로 하기보다는 Initial temperature와의 온도 차이를 학습하는 것이 더 바람직한 방향일 수도 있다. 또 다른 가능성은 각 물리값들의 단위 문제이다. 예를 들어 유량의 경 우 m/s를 데이터로 쓰는 경우와 m/min을 데이터로 쓰는 경우에 따라, 네트워크가 학습 을 진행할 때, learning rate에 따라 함수가 최적화 되는 거동이 달라지기 때문에, 적절한 normalization 혹은 비교 가능한 변수들 사이의 단위 선정이 필요할 수 있다. 마지막으로는 네트워크 구성 자체의 부적절함이다. MLP와 CNN 이라는 방법을 이용하 여 네트워크를 구성하였지만, 이러한 뉴런의 연결구조가 본 문제들을 해결하기에 적합한 지는 미지수이다. 사전 연구의 특성상, 더 다양한 네트워크를 적용해보지는 못했지만, 시 계열을 다루기에 최적화 된 LSTM(Long and Short Term Memory)방법과 feature map 과 input data를 동시에 섞어서 사용하는 Residual 네트워크 등의 네트워크에서 학습이 어떠한 방식으로 진행되고 어떠한 결과를 산출할지는 미지의 영역이다.

우리는 본 연구에서 딥러닝에 기반한 데이터 예측 기법이 이상유동 모델링 및 예측에 적용가능한지에 대한 평가를 하고자 시도하였다. 결과적으로 평균 오차율 5%이내의 학 습을 보였지만, 이를 갖고 실제 상황에 적용가능한지에 대해 판단하기는 어렵다. 문제의 상황에 따라, 이러한 평균 오차율 5%가 적절할 수도 있고, 관심 있는 영역에서의 최대 오차율이 중요한 경우가 있을 것이다. 따라서 적용가능성에 대한 질문은 조심스럽지만, 상황에 따라 가능할 수 있다고 판단할 수 있으리라 생각된다. 마지막으로, 통계적 처리 기법 중에 가장 진일보 된 방법이라 평가받고 있는 딥러닝 학 습에 대해 우리 연구원에서 계속적인 관심과 연구가 필요하다고 생각한다. 우리 연구원 의 강점 중에 하나인, 긴 역사와 그에 따라 축적된 수 많은 데이터들 및 노하우들을 적 절히 다루기에 딥러닝 학습법이 가장 자연스럽게 생각해낼 수 있는 방법이라고 본다. 본 과제에서 구성한 데이터 구성이나 네트워크 구성이 최적화 된 형태가 아닐 가능성이 매 우 높다. 또한, 고급 딥러닝 기술들의 접목 역시 구현되지 않았다. 따라서, 본 저자는 본 사전연구의 결과가 딥러닝 학습법의 가능성을 폄하시킬 것에 우려한다. 더불어, 동시대의 가장 촉망받는 기술과 연구원의 연구 방향의 교집합이 지속적으로 생기며, 현 시류에 뒤처지 지 않았으면 하는 바람으로 본 과제 보고서를 맺음한다.

- 64 - 제5장

참고문헌

- 65 -

제5장 참고문헌

[1] Keras: The Python Deep Learning library, Documentation, URL : https://keras.io/ , [2] Deep Learning, Yoshua Bengio and Ian J. Goodfellow and Aaron Courville, Book in preparation for MIT Press, 2015

[3] Bengio, Yoshua. “Learning deep architectures for AI.” Foundations and trends® in 2.1 (2009): 1-127.

[4] http://neuralnetworksanddeeplearning.com/

[5] DeepLearning.net - Convolutional Neural Network (LeNet) Tutorial

[6] Bengio, Yoshua; LeCun, Yann; Hinton, Geoffrey (2015). "Deep Learning". Nature. 521 (7553): 436 悢444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID 26017442.

[7] Schmidhuber, J. (2015). "Deep Learning in Neural Networks: An Overview". Neural Networks. 61: 85 悢117. arXiv:1404.7828 悾Freely accessible. doi:10.1016/j.neunet.2014.09.003. PMID 25462637.

- 67 - - 68 - 서지정보양식

KAERI보고서번호 KAERI/RR-4403/2018 보고서 종류 연구보고서

제 목 / 부 제 딥러닝을 활용한 빅데이터 분석에 기반한 이상유동 모델링

연구책임자 및 도성주 / 열수력중대사고안전연구부 부 서 명

연구자 및 부서명

출 판 지 대전 발 행 일 2018.10.25 총 페이지 70p.

공 개 여 부 공개( o ), 비공개( ) 표( 4 )개, 그림( 34 )개, 비 밀 여 부 대외비( ), __ 급 비밀 참 고 사 항 참고문헌( 7 )개 INIS 공개여부 공개( o ), 비공개( ) 초록 (15-20줄 내외)

기존 직관적, 경험적으로 모델링 되었던 이상유동 상관식들을, 이미 여러 분야에서 검증된 data fitting machine 인 deep learning 기법을 통하여, 모델링하고자 한다. 서로 다른 데이터 개수(100개와 10,000개)와 데이터 구조를 갖는 두 실험의 학습을 진행하면서 그 타당성을 평가할 것이다. 더불어 현재 널리 사용되고 좋은 성능을 보이고 있다고 보고되고 있는 MLP(Multi-Layer Perceptron) 네트워크와 CNN(Convolutional Neuron Network)을 적극 활용할 것이다. 위에 언급 된 두 가지 실험 데이터에 대한 학습을 진행한 후, 실제 실험값과 상대오차를 지표로 본 사전연구의 활용가능성을 평가하고자 한다.

주제명키워드 딥러닝 학습, 이상 유동 모델링, 빅데이터, 상관식 모델링, 데이터 피팅 (10단어내외)

- 69 - BIBLIOGRAPHIC INFORMATION SHEET

KAERI Report No. KAERI/RR-4403/2018 Report Type Research Report

Two-phase Fluid Modeling by Analyzing Big Data in Deep Learning Title / Subtitle Framework

Project Manager Seongju Do / Thermal Hydraulic & Severe Accident Safety Research Division and Department

Researcher and Department

Date of Total number Publication Place Daejeon 2018.10.25 70p. Publication of page

Open Open( o ), Closed ( ) Tabs. ( 4 ) Figs. ( 34 ) Classified Restricted( ),__Class Document Reference Refs. ( 7 ) INIS Open Open( o ), Closed ( ) Abstract (15-20 Lines)

We intend to model the existing intuitive and empirically modeled ideal flow correlations through the deep learning method, which is already a data fitting machine that has been proven in various fields. 䠯 We will evaluate the validity of two experiments with different data numbers (100 and 10,000) and data structures. In addition, it will utilize the MLP (Multi-Layer Perceptron) network and the CNN (Convolutional Neuron Network), which are reported to be widely used and perform well. After studying the two experimental data mentioned above, we will evaluate the possibility of using the preliminary study based on the real experimental value and the relative error as indicators.

Subject Keywords deep learning, two-phase fluid modelling, big data, correlation modelling, data (About 10 words) fitting method

- 70 - 주 의

1. 이 보고서는 한국원자력연구원에서 시행한 자체연구개발사업의 연구보고서입니다. 2. 이 보고서 내용을 발표하는 때에는 반드시 한국원자력연구원에서 시행한 자체연구개발사업의 연구결과임을 밝혀야 합니다. 3. 국가과학기술 기밀유지에 필요한 내용은 대외적으로 발표하거나 공개하여서는 아니 됩니다.