Abstract

  • 기존 sequence transduction model들은 인코더와 디코더를 포함한 복잡한 recurrent 나 cnn에 기반
  • 가장 성능이 좋은 모델 또한 attention mechanism으로 인코더와 디코더를 연결한 구조
  • Transformer는 온전히 attention mechanism에만 기반함
  • recurrence 나 convolution은 사용하지 않음
  • 더 parallelizable하고, 훨씬 적은 학습 시간이 걸림

Introduction

  • Recurrent model은 parallelization이 불가능해 longer sequence length에서 치명적
  • Attention mechanism 은 다양한 분야의 sequence modeling과 transduction model에서 주요하게 다뤄짐
  • Transformer는 input과 output간 global dependency를 뽑아내기 위해 recurrence를 사용하지 않고, attention mechanism만을 사용함

Background

sequential computation을 줄이는 것은 Extended Neural GPU, ByteNet, ConvS2S에서도 다뤄짐

  • 이 연구들은 모두 CNN을 basic building block으로 사용함
  • input output 거리에서 dependency를 학습하기 어려움
  • Transformer에서는 Multi-Head Attention 으로 상수 시간으로 줄어듦

Self-attenion(=intra-attention)

  • reading comprehension, abstractive summarization, textual entailment, learning task, independent sentence representations를 포함한 다양한 task에서 성공적으로 사용됨

End-to-end memory network

  • sequence-aligned recurrence 보다 recurrent attention mechanism에 기반함
  • simple-language question answering 과 language modeling task에서 좋은 성능을 보임

Model Architecture

(1) Encoder and Decoder Stacks

Encoder

  • Encoder는 6개의 identical layer로 이루어짐
  • 각 layer는 두 개의 sub-layer가 있음
  • 첫 번째 sub-layer는 multi-head self-attention mechanism
  • 두 번째 sub-layer는 간단한 position-wise fully connected feed-forward network
  • 각 two sub-layers 마다 layer normalization 후에 residual connection을 사용함
  • 즉 각 sub-layer의 결과는 LayerNorm(x+Sublayer(x)) 임
  • residual connection을 구현하기 위해, embedding layer를 포함한 모든 sub-layer들의 output은 512 차원임
    • dmodel = 512

Decoder

  • Decoder도 마찬가지로 6개의 identical layer로 이루어짐
  • 각 Encoder layer의 두 sub-layer에, decoder는 세번째 sub-layer를 추가함
    • encoder stack의 결과에 해당 layer가 multi-head attention을 수행함
  • 마찬가지로 residual connection 적용

(2) Attention

  1. Scaled Dot-Product Attention

  • Query q는 어떤 단어를 나타내는 vector이고, K는 문장의 모든 단어들에 대한 vector들을 stack해놓은 matrix
  • Attention function은 쿼리와 key-value쌍을 output에 매핑함 (query,key,value,output은 모두 vector임) output은 value들의 weighted sum으로 계산됨
    • 하나의 단어, 모든 단어들의 dot product를 함으로써 어떠한 Relation vector를 만듦
  • 두 가지 Attention function
  •  
    • Additive attention : single hidden layer로 feed-forward layer network를 사용해 compatibility function을 계산
    • Dot-product attention : scaling factor (1√dk) 를 제외하면 이 연구에서의 attention 방식과 동일
      • dot-product 방식이 더 빠르고 공간 효율적임
      • 기존 방식과 다르게 1/√dk로 스케일링함. 논문에서는 이를 softmax가 0 근처에서는 gradient가 높고, large positive and large negative value들에 대해서는 매우 낮은 gradient를 가지기 때문에 학습이 잘 되지 않는 문제가 일어나고, scaling을 통해 모든 값들이 0 근처에 오도록 만들어줌으로써 이러한 문제를 해결한다고함

2. Multi-Head Attention

  • Single attention을 dmodel-dimensional keys, values, queries에 적용하는 것보다, queries, keys, values를 h번 서로 다른, 학습된 linear projection으로 dk, dk와dv차원에 linear하게 project하는 게 더 효과적이라는 사실을 알아냄

3. Transformer는 세 가지 방법으로 multi-head attention을 사용함

  •    인코더-디코더 attention layers
    • query는 이전 디코더 layer에서 나옴
    • memory key와 value는 인코더의 output에서 나옴
    • 따라서 디코더의 모든 position이 input sequence의 모든 position을 다룸
    • 전형적인 sequence-to-sequence model에서의 인코더-디코더 attention 방식임
  • 인코더는 self-attention layer를 포함
    • self-attention layer에서 key, value, query는 모두 같은 곳(인코더의 이전 layer의 output)에서 나옴
    • 인코더의 각 position은 인코더의 이전 layer의 모든 position을 다룰 수 있음
  • 디코더 또한 self-attention layer를 가짐
    • 마찬가지로, 디코더의 각 position은 해당 position까지 모든 position을 다룰 수 있음
    • 디코더의 leftforward information flow는 auto-regressive property 때문에 막아줘야 할 필요가 있음
    • 이 연구에서는 scaled-dot product attention에서 모든 softmax의 input value 중 illegal connection에 해당하는 값을 −∞로 masking out해서 구현함

(3) Position-wise Feed-Forward Networks

  • 인코더 디코더의 각 layer는 fully connected feed-forward network를 가짐
    • 이는 각 position에 따로따로, 동일하게 적용됨
    • ReLu 활성화 함수를 포함한 두 개의 선형 변환이 포함됨
    • linear transformation은 다른 position에 대해 동일하지만 layer간 parameter는 다름

(4) Embeddings and Softmax

  • 다른 sequence transduction models 처럼, 학습된 임베딩을 사용함
  • input 토큰과 output 토큰을 dmodel 의 벡터로 변환하기 위함

(5) Positional Encoding

  • Transformer는 어떤 recurrene, convolution도 사용하지 않기 때문에, sequence의 순서를 사용하기 위해 sequence의 상대적, 절대적 position에 대한 정보를 주입해줘야 함
  • 인코더와 디코더 stack 아래의 input 임베딩에 "Positional Encoding"을 추가함
  • Positional Encoding은 input 임베딩처럼, 같은 차원 (dmodel)을 가져서, 둘을 더할 수 있음
  • 다양한 positional encoding 방법 중에, transformer는 다른 주기의 sine, cosine function을 사용함
    • pos : position
    • i : demension
    • positional encoding의 각 차원은 sine 곡선에 해당함
    • 모델이 상대적인 position으로 쉽게 배울 수 있을거라 가정하여 위 function을 사용함

  • 두 방식은 거의 같은 결과를 보임
  • transformer에선 sine 곡선의 방식을 택함

ESP 원문.pdf
2.12MB

ABSTRACT

이제는 의사결정 문제에서 어떤 의사결정을 하였고, 얼마나 바람직한 의사결정을 하였는지에 대한 중요한 데이터들이 있다. 데이터를 이용하여 surrogate model을 학습할 수 있고 model로 하여금 결과를 최적화 하는 의사결정을 할 수가 있다. 이러한 과정들을 Evolutionary Surrogate-Assisted Prescription 또는 ESP라 부른다. 예시를 들어보면, Surrogate는 Randomforest, neural network로 훈련되었고, 최종 전략은 Surrogate model의 예측을 최대화하기 위해 진화한 신경망이다. 본 논문에서는 순차적 의사결정으로 강화학습 벤치마크의 framework를 평가 할 수 있다.Surrogate와 Strategy network 모두 의사 결정 행동을 정규화하기 때문에 솔루션 또한 더 낫다. 따라서 ESP는 실제 문제에서 의사 결정 최적화의 유망한 기반을 형성한다.

INTRODUCTION

Figure1

Example

  • Context 변수 : 원자재, 날씨와 같은 주어지는 데이터
  • Action 변수 : 최적화 하고 싶은 셋팅값, 주유량
  • Predictor : P(C,A) = target
  • Prescriptor : P(C) = A

Figure 1 : Predictor는 과거 데이터에서 주어진 Contexts 변수와 어떠한 Actions 변수들이 작용했는지에 대해 결과물이 도출 된다. Predictor는 randomforest, neural network와 같은지도학습 방법의 머신러닝 모델을 학습한다. Predictor는 Prescriptor의 결과를 향상 시키기 위하여 사용되고, 최상의 결과를 가져오는 의사결정 정책의 신경망으로 사용된다. 대부분의 평가는 Surrogate에 의해 진행되고, 프로세스를 효율적으로 만들고 정규화 되어 잘 일반화되는 의사 결정 정책으로 이어진다.

 

비즈니스, 정부, 교육, 헬스케어와 같은 많은 조직들이 이제는 중요한 데이터들을 수집한다. 또한 데이터들은 조직의 의사결정을 변화시키고 있다. 이제는 머신러닝을 이용하여 행동, 수요를 예측하여 더 나은 의사결정을 할 수 있게 되었지만 이것은 과정의 일부일 뿐이다. 예측 모델은 실제로 최적의 의사결정이 무엇인지 명시하고 있지 않다. 좋은 의사 결정을 하기 위해서는 다른 무언가가 필요하다. Strategies를 생성하고, 평가하여 결과에 기초한 새롭고 더 나은 Strategies를 생성함으로써 좋은 의사결정 전략을 찾을 필요가 있다. 하지만 많은 도메인에서 이러한 탐색을 시도할 수 있는 것은 아니다. 예를들어 의학적 치료와 같은 도메인을 시험하는 것은 많은 비용이 들 수 있다.엔지니어링 설계를 평가하는 것과 같은 일들은 많은 리소스가 필요할 수 도 있다. 그러나 과거 결정과 그 결과에 대한 과거 데이터가 존재하기 때문에 이를 평가하기 위해 예측 모델을 Surrogate로 사용하여 검색할 수 있다.

 

개인적 의견 논문이 작성된 시기에는 의학적 치료에 대한 데이터가 많이 존재 하지 않았지만 현재는 적은 비용에 적은 리소스로 simulate 할 수 있을 것이라 생각함. 더불어 Surrogate는 더 Empact한 효과를 가져올 수 있지 않을까 생각됨

 

로컬 탐색을 통해 솔루션을 점진적으로 개선하는 강화 학습(RL)과 같은 검색 방법은 솔루션 전략 검색에도 도움이 되지 않는다. 또한, 변수의 수는 매우 클 수 있다. 예를 들어 일부 제조 및 물류 문제에서처럼 수천 또는 수백만 개일 수 있어, Kriging 및 베이지안 최적화와 같은 방법을 비효율적으로 만든다.

개인적 의견 로컬 탐색이 아니라면 강화 학습이 더 좋거나 같을 수도 있다는 생각이들지만 다르게 해석하면 ESP는 여러 도메인에 걸쳐 최적의 의사결정을 탐색을 가능하게 하는 솔루션이 됨

population기반 탐색을 하게 되면, 기만적인? 고차원의 landscapes를 탐색하고 여러 목표에 걸친 절충점을 발견할 수 있다. 이 strategy는 neural net으로 표현되고 평가는 과거의 결과를 토대로 훈련된 예측모델을 사용하여 수행한다.

이 논문의 목표는 현재 사용되는 ESP를 소개하고 일련의 의사 결정으로 구성된 의사 결정 전략으로 더 확장하는 것이다. ESP는 여러 가지 방법으로 강화학습을 개선한다. 동일한 횟수의 에피소드를 고려할 때 수렴 속도가 빨라져 샘플링 효율성이 향상되고, 정책 성능에 대한 분산이 낮아지며, 솔루션의 신뢰성이 높아지고 비용 절감, 안정성 향상이 이루어진다. 놀랍게도 Surrogate를 최적화 하는 것은 정규화의 효과도 가져온다. ESP는 일반적이므로 때때로 도메인 자체에서 발견된 솔루션들 보다 효과가 좋을 수 있다. 또한 ESP는 위에 설명된 population 기반 검색의 이점을 RL로, 즉 향상된 탐색, 다중 객관성 및 고차원 검색 공간으로 스케일업한다. ESP는 표준 강화학습 접근법과 비교하여 더 나은 샘플 효율성, 신뢰성 및 더 낮은 비용을 입증한다. 실험은 또한 대리인을 통한 정규화와 다양한 종류의 예측 모델(예: 랜덤 포레스트 및 신경망)을 활용하여 데이터에 가장 잘 맞는 능력을 보여준다. 따라서 ESP는 순차적 의사 결정 작업에 대한 유망한 진화 최적화 기반 접근 방식을 형성한다.

 

개인적 의견 Surrogate 최적화가 정규화의 효과도 가져오는 것이 어떻게 입증 되었는지 확인할 필요가 있는 것 같음. 논문에서는 강화학습보다 ESP가 더 좋은 최적화 방법론이라고 설명하는데, 도메인마다 차이가 있을 것이라고 생각함

RELATED WORK

전통적인 모델 RL은 주어진 상태와 동작들에 따라서 시스템의 다음 상태를 추정하는 시스템의 역학을 구현한 전환 모델 구축을 목표로 한다. RL process 일부로 학습된 전환 모델을 통해 효과적인 조치의 선택을 가능하게 한다. 이 모델로 에이전트는 환경의 미래 상태에 대한 예측을 가능하게 한다. 그러나 모델 기반 RL은 보통 엄청난 양의 데이터를 전환 모델을 구축하는 데에 사용해야한다. 간단한 시스템도 수만수십가지의 샘플이 필요로 할 수도 있다. PILCO 와 같은 기술은 모델 기반 RL에서 샘플 효율성을 구체적으로 다루기 위해 개발 되었지만 낮은 차원의 도메인을 제외 하고는 계산적으로 힘들 수 있다.

 

개인적 의견 2002년도 논문이기 때문에 기술의 차이는 현저히 있을 것이라 판단됨. 현재 강화학습을 할때에도 꼭 많은 양의 데이터가 필요한지 의문임

 

RL이 실제 비용이 드는 복잡한 태스크에 적용 되고 있기 때문에 샘플의 효율성은 더욱 강조되고 있다. 따라서 성능 및 효율성은 샘플링, 보상 추정 방식에 따라 달라진다. 대표적인 model-free 상황에서 off-policy 방법으로, Deep Q Networks(DQN)은 action values를 이용하여 미래 보상을 모델링함으로써 샘플 효율성 문제를 해결한다. 또한 Q값이라고도 한다. Q 네트워크는 실제 상호 작용에서 훈련 데이터를 수집하는 재생 버퍼를 기반으로 학습된다. 이중 Q-Learing 및 dueling network architectures와 같은 고급 기술은 도전적인 문제에서 DQN을 경쟁력 있게 만든다. 하지만 일반적으로 진화적 대리 지원 처방을 통한 효과적인 강화 학습은 매개 변수 설정에 상당히 민감하고 압도적인 수의 샘플을 필요로 한다.

 

개인적 의견 지금은 RL에 자동으로 매개 변수 설정을 해 주는 정책은 없는지? 아직까지 많은 샘플을 필요로 하는지 궁금함. 필자가 알기론 ESP는 적은 양의 데이터로도 유의미한 퍼포먼스를 도출 할 수 있는데, 아직도 강화학습이 적은양으로 불가능한지 궁금함. 만약 강화학습이 아직도 많은 리소스가 필요하다면 사용할 필요가 없지 않은가?

ESP는 예측 변수를 블랙박스로 취급하여 많은 경우에 충분한 Random Forest와 같은 단순한 모델을 포함하여 모델 선택의 높은 유연성을 허용합니다.

THE ESP APPROACH

ESP의 접근 방식의 목표는 결과를 최적화 하는 의사결정 정책을 찾는 것이다. 가능한 Context - C와 Action A의 집합이 주어지면, 의사결정 정책 D는 각 Context C에서 수행될 Action A의 집합을 반환합니다.

 여기서 C∈C 와 A∈A 그러한 (C,A) 쌍 각각에 대해 일련의 결과 O(C,A), 즉 상황 C에서 결정 A를 수행하는 결과가 있다. 예를 들어 Context는 환자에 대한 설명일 수 있고, Action은 약물일 수 있으며 결과는 부작용 및 비용일 수 있다. ESP에서는 Predictor와 Prescriptor 두 개의 모델이 사용된다. Predictor는 Context 정보와 해당 컨텍스트에서 수행된 Action을 input으로 사용합니다. Predictor의 Output은 주어진 Context에서 주어진 Action이 적용될 때의 결과입니다. 따라서 Predictor는 다음과 같이 정의됩니다.

Figure 2 : Predictor는 Prescriptor가 Evolved하는 동시에 점진적으로 train 될 수 있으며, Prescriptor를 사용하여 탐색을 유도한다. 즉, 사용자는 Prescriptor의 output을 실제 환경에 적용하고, 결과를 관찰하고, Predictor의 Trainning Set로 통합할 수 있다.

 

개인적 의견 당연한 이야기겠지만 실제 환경에 얼마나 잘 적용하고 추후에 고도화를 어떻게 하느냐가 Surrogate Model의 성능을 판가름 할 것이라 생각듦. 실제 Surrogate Model을 활용한 예시가 더 있는지 Search 해 볼 필요가 있음.

따라서 모든 차원 O의 j가 $\sum_j L(Oj,O'j)$가 최소화된다. 함수 L은 cross-entropy나 mean-squared-error와 같은 Machine Learning에 사용되는 일반적인 손실 함수 중 하나일 수 있으며, Predictor 자체는 신경망 또는 RandomForest 와 같은 학습된 Machine Learning 모델일 수 있다. Prescriptor 주어진 Context를 input으로 사용하고 Action을 출력합니다.

따라서 모든 Context i에서 $\sum_{i,j}O'_{j}(C_i,A_i)$ 최대화됩니다. 그래서 문제의 최적 의사결정 정책으로 근사화 된다. 최적의 Action A는 알 수 없으므로 Searching을 통해 찾아야 한다. 그런 다음 ESP 알고리즘은 Predictor, Prescriptor를 구성하는 외부 루프로 작동합니다.

ESP 구동 순서

(1) 과거 train data를 기반으로 한 Predictor trainning

(2) Predictor를 Surrogate로 하여 Prescriptor를 Evolve

(3) 현실 세계에서 가장 뛰어난 Prescriptor를 적용

(4) 새 데이터를 수집하고 Trainning Set에 추가합니다.

(5) 수렴할 때까지 반복합니다.

진화적 탐색은 늘 그렇듯, 만족스러운 결과가 나왔거나 더이상 진전을 이룰 수 없을때 프로세스가 종료된다.

 

개인적 의견 최적의 Action A를 Searching할 때 사용하는 Fitness함수를 어떻게 효율적, 효과적으로 잘 구축하는지가 핵심임. 의문이 드는 것은 새 데이터를 수집 했을 때 Trainning Set에 데이터가 추가 될 텐데, Surrogate모델의 재구축을 해야하지 않을까? 라는 의문이 들긴함.

 

(C,A,O) 데이터 세트가 주어지면 예측 변수 모델을 구축하는 것이 간단합니다. 알고리즘의 선택은 도메인, 즉 데이터가 얼마나 많은지, 그것이 연속적이든 이산적이든, 구조적이든 비정형적이든에 따라 달라진다. Random Forest와 신경망은 이 논문에서 이 역할을 통해 입증될 것이다. 이와 대조적으로 Prescriptor 모델은 ESP의 신경 진화를 사용하여 구축되었습니다. 신경망은 복잡한 비선형 매핑을 자연스럽게 표현할 수 있기 때문에 그리고 evolution 그러한 매핑을 발견하는 효율적인 방법이기 때문에 여러 목표를 최적화하는 데 자연스럽게 적합하다. Predictor와 함께 Evolve하기 때문에 Prescriptor는 제한된 Trainning dataset 또는 실제 환경에서 평가할 수 있는 기회에 제한되지 않는다. 대신 Predictor가 Fitness 역할을 하므로 자주 효율적으로 queried? 할 수 있습니다.

 

RL 구동 순서

ESP 프레임워크를 RL 문제에 적용하는 것은 Context와 Action을 시퀀스로 확장하는 것을 포함한다.

(1) 실제 영역에 엘리트 Prescriptor를 적용

(2) 각 Prescriptor의 각 시간 단계에 대한 Q 값을 수집

(3) 2단계에서 수집한 데이터를 기반으로 Predictor를 trainning

(4) Predictor를 Surrogate으로 하여 Predictor Evolve

(5) 수렴할 때까지 반복

Figure 3 : ESP 과정을 시각화 한다 (a) True reward for every state-action pair (b−c) After 1000 episodes, the top Prescriptors for direct evolution (DE) and PPO are still far from optimal (d) ESP Prescriptor (orange) and Predictor (background) for several iterations

반투명 원은 지금까지 샘플링된 state-action 쌍, 즉 Predictor가 trainning 되는 샘플을 나타냅니다. 125회까지 ESP는 최적의 Prescriptor를 중심으로 수렴 되었으며, ESP Predictor는 이 최적 근사치에 수렴되어 ESP가 시간이 지남에 따라 Predictor를 활용하여 good Action을 신속하게 찾을 수 있는 방법을 보여줍니다. Prescriptor는 Predictor가 최적이라고 제안하는 Action과 정확히 일치하지 않습니다. Prescriptor는 시간이 지남에 따라 진화한 예측 변수를 암시적으로 결합함으로써 Predictor의 과적합을 정규화합니다. 알고리즘에 대한 전체 비디오는 http://evolution.ml/demos/espvisualization 을 참조하십시오.

 

개인적 의견

이외의 최근 데이터를 사용하여 RL과 ESP를 비교해보는 기회가 있으면 좋을 것 같다고 생각함

GA (Genetic Algorithm)

개인적 해석

  • 최적의 해를 찾는 알고리즘이라고 생각함 Ex. Cost 최소화, 이익 최대화
  • GA가 정확하고, 최적의 값을 찾기 위해서는 모델의 정당성, 신뢰도가 확보되어야 함
    • 부모 염색체가 정확하지 않은 값이라면 당연히 자손 염색체도 좋은 결과 값이 나올 수 없다고 생각함
  • Fitness function을 얼마나 창의적으로 설계하느냐가 GA의 핵심이라는 생각이 듦

의미

  • 최적의 해를 구하는 방법론인 GA라고 불리는 유전 알고리즘
  • 지도학습, 비지도학습이라고 오해할 수 있지만 GA는 모델의 종류가 아닌 파라미터의 최적화 문제를 풀기 위한 일종의 방법

개념 정의

  • 염색체(Chromosome) : 여러개의 유전자를 담고 있는 하나의 집합을 의미한다. GA에서는 하나의 해(파라미터)를 표현한다.
  • 유전자(Gene) : 염색체를 구성하고 있는 요소로서, 하나의 유전 정보를 나타낸다. 예를 들어, 하나의 특정한 염색체가 [A,B,C,D] 라고 정의된다면 해당 염색체의 유전자는 A,B,C,D로 4개의 유전자가 존재한다.
  • 자손(Offspring) : 특정 시간(t)에 존재했던 염색체들(예를 들어, A,B 두 개의 염색체가 있다고 가정.)로부터 생성된 새로운 염색체들(C,D라고 가정.)이다. 즉 C,D 는 A,B 염색체들의 자손이라고 할 수 있다. 자손 염색체는 부모 염색체의 비슷한 유전 정보를 갖는다.
  • 정확도(Fitness) : 특정한 염색체가 갖고 있는 고윳값으로서, 특정한 염색체가 표현하는 해(파라미터)가 해결하려는 문제에 대해 얼마나 적합한지를 나타낸다.

연산정의

초기에 어떠한 문제에 적용하기 위해서 총 5개의 연산을 정의해야함.

  • 초기 염색체를 생성하는 연산
    • 최초의 염색체를 생성하기 위해서는 이전의 염색체가 존재하지 않기 때문에 최초의 염색체를 생성하는 연산을 따로 정의해주어야 한다. GA에서 가장 많이 이용되는 방법은 규칙 없이 임의의 값으로 초기 염색체를 생성하는 것이다.
  • 적합도를 계산하는 연산
    • 염색체에 표현된 정보를 토대로 적합도를 계산하는 연산이다. 이 연산은 해결하려는 문제에 따라 달라진다.
  • 적합도를 기준으로 염색체를 선택하는 연산
    • 자손 염색체를 생성할 때 흔히 적합도가 가장 높은 염색체들을 선택하는 것이 최고의 방법이라고 생각할 수 있다. 하지만 이러한 방법은 염색체의 다양성을 손상시키기 때문에 Global optimum을 찾기에는 부적합하다. 이러한 문제를 피하기 위해서 GA에서는 룰렛 휠 선택(Roulette Wheel Selection) 방법을 이용한다. 룰렛 휠 선택이란, 우리가 흔히 생각하는 원판을 돌리면서 확률에 기반해 결과가 도출되는 룰렛의 개념과 비슷하다고 생각하면 된다. 밑의 그림은 룰렛 휠 선택에 대한 확률적 수식이며 다음 그림은 수식을 룰렛 그림으로 나타낸 그림이다. 룰렛 그림에서 면적의 총 합은 1(100%)이다. 왜냐하면 각각이 확률값이며 확률의 합은 1이기 때문이다.
  • 선택된 염색체들로부터 자손을 생성하는 연산
    • 방금 언급했던 룰렛 휠 선택 방법으로 선정된 두 개의 부모 염색체들로부터 하나의 자손 염색체를 생성한다. 이 때 GA에서는 자손 염색체를 생성하는 연산으로서 주로 Crossover이라는 연산을 사용한다. Crossover 연산에 대해 그림으로 설명하자면 다음과 같다.

  • 돌연변이 (mutation) 연산
    • 룰렛 휠 선택을 통해 Crossover 연산만을 사용한다면 Local optimum에 빠지는 문제를 발생시킬 수 있다. 이러한 문제를 피하기 위해서 자손 염색체에 돌연변이 연산을 추가적으로 적용하는 방법이 있다.
    • 보통은 0.1%나 0.05%등의 아주 낮은 확률로 돌연변이가 발생하도록 한다.

알고리즘 구조

유전 알고리즘은 t에 존재하는 염색체들의 집합으로부터 적합도가 가장 좋은 염색체를 선택하고, 선택된 해의 방향으로 검색을 반복하면서 최적해를 찾아가는 구조로 동작한다.

  1. 초기 염색체의 집합 생성
  2. 초기 염색체들에 대한 적합도 계산
  3. 현재 염색체들로부터 자손들을 생성
  4. 생성된 자손들의 적합도 계산
  5. 종료 조건 판별

6-1) 종료 조건이 거짓인 경우, (3)으로 이동하여 반복

6-2) 종료 조건이 참인 경우, 알고리즘을 종료

Fitness Function 

  • 일반적으로 지도학습을 사용하는 분류 작업의 경우 유클리드 거리 및 맨해튼 거리와 같은 오류 측정이 피트니스 함수로 널리 알려져서 사용되어 왔음.
  • 최적화 문제의 경우 문제 영역과 관련된 계산, 매개 변수 집합의 합과 같은 기본기능을 피트니스 함수로 사용할 수 있음

도커란

컨테이너를 사용하여 응용프로그램을 더 쉽게 만들고, 배포하고, 실행할 수 있도록 설계된 도구이며 컨테이너 기반의 오픈소스 가상화 플랫폼입니다.  Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있습니다. 

 

Docker 작동 방식

도커와 VM 차이점

Docker를 사용해야 하는 이유

Docker를 사용하면 코드를 더 빨리 전달하고, 애플리케이션 운영을 표준화하고, 코드를 원활하게 이동하고, 리소스 사용률을 높여 비용을 절감할 수 있습니다. Docker를 사용하면 어디서나 안정적으로 실행할 수 있는 단일 객체를 확보하게 됩니다. Docker의 간단한 구문을 사용해 완벽하게 제어할 수 있습니다. 폭넓게 도입되었다는 것은 Docker를 사용할 수 있는 도구 및 상용 애플리케이션의 에코시스템이 강력하다는 의미입니다.

 

더 많은 소프트웨어를 더 빨리 제공

Docker 사용자는 평균적으로 Docker를 사용하지 않는 사용자보다 7배 더 많은 소프트웨어를 제공합니다. Docker를 사용하면 필요할 때마다 격리된 서비스를 제공할 수 있습니다.

운영 표준화

작은 컨테이너식 애플리케이션을 사용하면 손쉽게 배포하고, 문제를 파악하고, 수정을 위해 롤백할 수 있습니다.

원활하게 이전

Docker 기반 애플리케이션을 로컬 개발 시스템에서 AWS의 프로덕션 배포로 원활하게 이전할 수 있습니다.

비용 절감

Docker 컨테이너를 사용하면 각 서버에서 좀 더 쉽게 더 많은 코드를 실행하여 사용률을 높이고 비용을 절감할 수 있습니다.

 

Docker Image

도커에서 서비스 운영에 필요한 서버 프로그램소스코드 및 라이브러리컴파일된 실행 파일을 묶는 형태를 Docker Image라 합니다. 다시 말해, 특정 프로세스를 실행하기 위한(즉, 컨테이너 생성(실행)에 필요한) 모든 파일과 설정값(환경)을 지닌 것으로, 더 이상의 의존성 파일을 컴파일하거나 이것저것 설치할 필요 없는 상태의 파일을 의미합니다. 예를 들어 Ubuntu이미지는 Ubuntu를 실행하기 위한 모든 파일을 가지고 있으며, Oracle 이미지는 Oracle을 실행하는데 필요한 파일과 실행명령어, port 정보 등을 모두 가지고 있습니다.

도커 컨테이너 (Docker Container)

이미지(Image)를 실행한 상태로, 응용프로그램의 종속성과 함께 응용프로그램 자체를 패키징 or 캡슐화하여 격리된 공간에서 프로세스를 동작시키는 기술이다.

 

예를들어 표현 하자면,

Docker Image = Class

Docker Container = 객체

+ Recent posts