2024년 8월 25일 일요일

최적화 관련 상식

  • 물품을 무게순으로 미리 정렬한 뒤 FF 알고리즘을 적용하는 방법을 FFD 알고리즘(first-first decreasing algorithm)이라 한다.
  • 절제 평면법은 완화 문제의 최적 설루션에서 시작해서 실행 가능 설루션을 남기면서 완화 문제의 최적 설루션을 소거하는 제약조건을 조직적으로 추가하는 절차를 반복 적용하는 알고리즘이다. 정수 계획 문제에 대한 절제 평면법을 1958년에 고모리가 제안했다.
  • 여러 초기 솔루션에서 국소 탐색 알고리즘을 실행해서 얻어진 국소 최적 설루션 중에서 가장 좋은 것을 출력하는 기법이 다중 시작 국소 탐색 알고리즘(multi-start local search, MSL)이다.
  • 최적화에 대한 근사 성능이 보증되지 않은 실행 가능 설루션을 하나 출력하는 알고리즘을 휴리스틱이라 한다.
  • 주 쌍대법(primal-dual method)는 선형 계획 완화 문제의 쌍대 문제를 이용해 원래 문제에 대해 실행 가능 설루션을 구하는 방법이다.
  • 모듈러리티(modularity)란 커뮤니티 검출의 우수함을 나타내는 평가 함수의 하나다.
  • 동적 계획법(dynamic programming, DP)은 문제를 작은 부분 문제로 분할해서 푼 뒤, 부분 문제의 최적 설루션을 결합해서 원래 문제의 최적 설루션을 구하는 분할 정복법과 유사한 기법이다. 동적 계획법은 '원래 문제의 최적 설루션이 어떤 부분 문제의 최적 설루션을 포함한다'라는 부분 구조 최적성을 갖는 문제를 대상으로 한다
  • NP 난해한 조합 최적화 문제를 푸는 알고리즘은 완전 알고리즘, 근사 알고리즘, 휴리스틱으로 분류할 수 있다. 임의의 문제 사례에 대해 최적 설루션을 하나 출력하는 알고리즘을 완전 알고리즘이라 한다.
  • 계산 도중 경과를 일시적으로 유지하기 위해 필요한 기억 영역의 크기를 공간 복잡도(space complexity)라 한다. 시간 복잡도와 공간 복잡도를 합쳐 계산 복잡도라 한다.
  • 근방은 국소 탐색 알고리즘의 설계에서 가장 중요한 요소 중 하나다. 근방 안에 개선 설루션이 포함된 가능성이 높아지도록, 그러면서도 근방이 너무 커지지 않도록 설계해야 한다.
  • 조합 최적화 문제의 실행 가능 솔루션을 단계적으로 구축할 때 각 단계에서 국소적인 평갓값이 가장 높은 요소를 선택하는 기법을 탐욕 알고리즘(greedy method)이라 한다.
  • 과거의 탐색에서 얻은 좋은 설루션에 무작위로 변형을 추가하는 것을 초기 설루션으로 하여 국소 탐색 알고리즘을 적용하는 절차를 반복하는 기법이 반복 국소 탐색 알고리즘(iterated local search, ILS)이다.
  • 알고리즘의 성능은 계산 종료까지 실행된 기본 연산(사칙 연산, 비교 연산, 입력 데이터 로딩, 출력 데이터 쓰기 등)의 회수를 이용해 평가되는 경우가 많고, 이를 계산 시간 또는 시간 복잡도(time complexity)라 한다.
  • 정수 계획 문제를 포함한 NP 난해한 조합 최적화 문제에서는 분기 한정법과 절제 평면법이 대표적인 완전 알고리즘으로 알려져 있다. 분기 한정법은 잠정 설루션에서 얻을 수 있는 최적값의 하한과 완화 문제를 풀어 얻을 수 있는 최적 설루션의 상한을 이용해 한정 조작을 구현한다.
  • 조합 최적화 문제는 최적 설루션을 포함하는 설루션의 집합이 조합적인 구조를 갖는 최적화 문제이며 설루션이 집합, 순서, 할당, 그래프, 논릿값, 정수 등으로 나타나는 경우가 많다. 정수 변수는 이산적인 값을 갖는 사상을 나타내는 것뿐만 아니라 제약조건이나 상태를 전환하는 스위치로 이용할 수 있어, 원리적으로 모든 조합 최적화 문제는 정수 계획 문제로 정식화할 수 있다.
  • 국소 탐색 알고리즘은 많은 조합 최적화 문제에 대해 관측되는 '좋은 설루션끼리는 비슷한 구조를 갖는다'라는 근접 최적성(proximity optimality principle, POP)이라 불리는 특징을 바탕으로 설계되어 있다. 근접 최적성이 성립한다면 좋은 설루션과 비슷한 설루션 안에서 개선 설루션을 발견할 가능성이 높다.
  • 알고리즘의 실행에 필요한 계산 복잡도를 평가할 때, 알고리즘의 세부 영향을 제외하기 위해 상수 배의 차이를 무시한 오더 표기법을 자주 이용한다. 란다우의 O-표기법이라고도 한다.
  • 주어진 계산 시간 안에 최적 설루션을 구하지 못하더라도, 높은 품질의 실행 가능 설루션을 구할 수 있다면 충분히 만족할 수 있는 사례도 많다. 임의의 문제 사례에 대해 근사 성능을 보증할 수 있는 실행 가능 설루션을 하나 출력하는 알고리즘을 근사 알고리즘이라 한다.
  • 보통 선형 계획 문제에서 모든 변수는 연속적인 실숫값을 갖는데, 모든 변수가 이산적인 정숫값만 갖는 선형 계획 문제를 정수(선형) 계획 문제(Integer programming problem, IP)라 한다. 여기서 실숫값을 갖는 변수를 실수 변수, 정숫값만 갖는 변수를 정수 변수라 한다.
  • 두 개 이상의 변을 포함하며, 시작점과 종료점이 같은 경로를 닫힌 경로(cycle)라 한다.

 

얼티메이텀-이근

목표는 당신의 능력만으로 이룰 수 있는게 아니다.

목표달성은 인간관계에 따라 결정되는 경우가 많다. 그래서 바른 인성과 좋은 감성을 가진 사람들과 깊은 관계를 유지해야 하며, 당신 또한 그들에게 그런 사람이 되어줘야 한다. 그렇지 않으면 중요한 순간에 일을 그르칠 수 있다.

 

할무어중령 (멜깁슨 주연의 영화 위 워 솔저스, 베트남 전쟁 실제 참전)

우리가 전투에 투입되면

내가 맨 먼저 적진을 밟고

맨 마지막에 적진에서 나올 것이며

단 한명도 내 뒤에 남겨두지 않겠다.

우린 살든 죽든 함께 고국으로 돌아온다

미국과 월맹의 베트남 전쟁 첫 정규 전투인 이아드랑 계곡을 배경으로 하고 있는 영화로서 당시 전투에 투입되었던 지휘관 할 무어 중령의 실제 연설 내용이다.

 

존 F. 케네디

무엇인가를 결정하고 실행할 때 위험과 비용이 따른다. 하지만 그것은 장기적으로 안락한 정체에 빠지는 위험과 비용보다 훨씬 적다. 

 

리더의 필수자질

  1. 말한대로 행동하라. 한마디 말을 하기에 앞서 내가 정말로 실천할 수 있는지 한번 생각해보자. 지금 당장 할 수 없는 일이라면 다른 사람들 앞에서 할 것처럼 떠벌리지 말고 기다리자. 스스로 준비가 됐다고 생각할 때 비로소 이야기하고 직접 행동으로 보여주는게 좋다.

  2. 행동하려는 의지가 우선이다. 실패가 두렵다고 아무것도 하지 않는 것보다는 실패하더라도 자신의 말을 증명하고자 노력하는 자세가 필요하다. 리더의 말이 논리적이라는 것을 보여주려면 그 방법은 행동뿐이다.

  3. 자기 자신에게 증명하라. 행동의 주체는 당신이고 실천의 의지도 결국 당신으로부터 비롯된다. 팀원들을 움직이게 할 심산으로 팀을 갉아먹는 행동을 할 필요는 없다. 팀을 위한 모든 행동은 진실되고 정직해야 한다.

 

우리가 결단을 내리지 못하는 가장 큰 이유

우리가 결단을 내리지 못하는 가장 큰 이유는 바로 잘못된 결정일지 모르는 불안감 때문이다. 그러나 결정에 대한 결과는 일어나기 전까지는 아무도 모른다. 자신의 결정에 확신을 가져야 한다. 물론 자신의 결정이 100% 옳은 선택이고 성공을 이끄는 방법이 아닐 수도 있다.

하지만 불필요한 고민은 결단을 내려야 하는 최적의 타이밍을 놓치게 만들고 오히려 더 나쁜 결과를 초래하기도 한다. 결단을 내리고 혹시라도 잘못되었다면 빠르게 상황을 판단해 대처하거나 수정하면 된다. 가장 중요한 것은 자신에 대한 확신이다. 스스로에 대한 확신이 없다면 주체적인 결정을 내릴 수 없다. 팀의 성공은 바로 여기에 달렸다.

 

자신에게 익숙한 행동을 찾아보자.

자신에게 익숙한 행동은 심리적 안정에 도움이 된다. 일거리가 쌓이고 결정해야 할 것들에 대한 압박이 밀려오고 있다면 잠시 멈추고 에스프레소를 한잔 마셔보다. 물론 나는 에스프레소광이라서 그렇지만 썩 내키지 않는다면 당신이 좋아하는 걸 마셔도 괜찮다. 핵심은 스스로의 패턴을 만들어 마음 편히 결단할 시스템을 갖추는 것이다. 결단에 대한 패턴은 당신에게 시간과 마음의 여유를 선사할 것이다.

 

조직의 중요성

개인의 역량은 조직안에서 발휘될 때 진짜 힘을 발휘할 수 있음을 기억하길 바란다.

현명한 구성원은 시스템을 탓하거나 시스템의 부재를 원망하지 않는다. 스스로 자신만의 시스템을 만들어 일을 진행하고 리더에게 지속적으로 건의하며 소통한다.

조직이 오래되고 구성원이 많아질수록 규칙과 규율등이 필수적이다. 하지만 그런 관습들은 조직의 변화에 대한 거부 반응을 불러 일으키고 발전 자체를 의심하고 두렵게 만든다.

 

현실에 안주하지 마라.

현재에 안주하는 편안함은 잠시뿐이다. 모든 것이 변한다. 영원할 거라고 생각했던 현실의 달콤함이 내일은 악몽이 될수도 있다. 그 변화의 중심에서 살아남고 발전하기 위해서는 당신이 할 일만 생각하면 된다. 변화를 두려워하지 않고 발전하려는 마음으로 그때 그때마다 늦지 않은 선택을 하는 것만으로도 더 확실한 승산을 얻는다. 그러므로 변화를 추구하는 것에 두려워하지 마라. 변화는 당신의 삶을 송두리째 바꾸는게 아니라 끊임없는 수정과 보완을 통해 더 나은 곳으로 나아가게 만든다. 변하지 않겠다는 것은 시대의 흐름에 반항하는 것이며, 곧 자신의 한계를 결정짓는 단초가 된다.

문제가 생겼을 때 오히려 좋은 기회라고 생각하면 문제에서 자유로워질 수 있다. 그러므로 당신에게 어려움이 닥치더라도 상황을 긍정적으로 보려는 태도를 가져라. 우리는 상황 때문에 괴로워지는 것이 아니라 상황을 바라보는 관점때문에 고통스러워진다는 걸 기억하라.

알고도 행동하지 않는다는 건 삶을 낭비하고 있다는 증거다. 말하지마라. 변명하거나 도망치지도 마라. 당신이 반드시 해야만 하는 일을 두고 도망쳐서는 안된다. 어떻게든 그 일을 완수하는 편이 당신의 삶을 올바른 방향으로 이끄는 것이다. 강한 자가 살아남는게 아니라 살아남는 자가 강한 것이라는 말도 있지 않는가?

일단 결정했다면 도전하고 실현해야 한다. 누군가에게 이 일이 잘될지 안 될지, 성공할지 실패할지 묻지마라. 도전하고 실현하는 방법은 지극히 단순해야 한다. 아쉬워서 뒤돌아볼 필요도 없다. 이미 지난 것이고 더 이상 당신 소유가 아니다. 당신이 지금까지 못했던 것을 실현하기 위해 할일은 오직 앞만보고 최고를 향해 내달리는 것이다. 모든 도전과 성공은 그렇게 태어났다.

 

인생

인생은 마음대로 되는 일도 없고 완벽한 준비를 했더라도 운이 좋지 않아 좌절하는 경우도 생긴다. 그래도 중요한 건 당신의 태도다. 넘어져도 다시 일어나겠다는 가장 쉽고도 어려운 진리가 당신을 목적지로 이끌기 때문이다. 그런 의미에서 당신이 과거에 어떤 인생을 살았든 지금 이 순간부터 다시 시작하겠다는 마음을 가졌으면 좋겠다. 크게 변하는 게 없다고 하더라도 다시 시작할 수 있다는 마음을 먹으면 기분이 한결 나아진다. 그리고 그 순간에 좋은 기회를 포착할 수 있다.

 

비교

이기 없으면 잇몸으로라도 물라고 했다. 꼭 있어야 할 것이 없으면 없는대로 나아가라는 교훈이 남긴말이다. 남들에게 있고 당신에게 없는 걸 비교하는 건 슬픈일이다. 차라리 당신에게 있고 남들에게 없는 걸 생각하길 바란다. 당신은 능히 해낼 수 있고 강한 멘탈로 목적에 도달할 수 있을 것이다. 고로 지금 당장 시작하라.

 

나자신을 존중하자

특별한 삶을 살고 싶다면 지금의 나 자신을 존중해야 한다. 생존할 수 있다는 믿음과 확신, 삶에 대한 확고한 목표만 있다면 무엇이든지 해낼 수 있다. 지금보다 더 나은 삶을 만들 수 있다. 만약 지금 당신을 활활 타오르게 만드는 것이 있다면 바로 도전하라. 나는 그런 당신을 지지하고 응원할 것이다.

 

에드먼드 버크

악이 승리하기 위해서 필요한 것은

선한 인간들이 아무런 행동도 하지 안는 것이다. 

자발적 DR

자발적 DR이란 Demand Response의 약어로서
한전에서 전력 수급을 관리하는 측면에서 전기 사용자가 전기 소비를 감축하면 금전적으로 보상받는 제도로 발전기보다 경제적으로 전력 피크에 대응할 수 있는 방법을 말한다.

과거에는 전력량 조정을 위해서 의무적으로 수요감축 정책을 실행했지만 이러한 강압적인 방식에서 자발적 방식으로 정책을 변경하고 해당 내용에 근거하여 금전적 보조금을 제공하는 방식을 말한다.

 

image 

로봇산업, 스마트팩토리

# 로봇 산업에 특이점 온다

Covid-19의 제약이 기회가 되는 분야가 바로 로봇이다.
올 상반기 코스닥에 상장된 로봇 기업들의 매출과 수익성도 크게 향상되었다.
알파고가 바둑에서 인간을 압도하면서 AI가 특이점을 넘어선 것처럼 임베디드 하드웨어와 소프트웨어 기술이 함께 발전하면서 로봇 산업도 조만간 특이점을 넘어설 것이라는 전망이 나오고 있다.

# 물류로봇은 가장 높은 성장성 전망에 지속 성장 기대됨


오늘날 물류대란의 주요 원인은 인력이 부족하기 때문이다.

현재는 물류산업에서 로봇의 효율성만을 따지지만 머지않은 미래에는 로봇의 역할이 더욱더 커질 것이다.

# 성장세

2022년에는 로봇 성장이 주춤하겠지만 지속적인 성장은 멈추지 않을 것으로 예상된다.
전통적인 산업용 로봇 및 물류 로봇뿐만 아니라 코로나 19 팬데믹으로 위생 요구가 증가함에 따라 의료 산업 로봇과 같은 틈새 시장이 열리고 있는 점 주목해야 한다.

 

# 5G MEC(Mobile Edge Computing)


데이터를 기지국등 사용자와 가까운 가장자리(엣지)에서 처리하는 기술을
말한다. 다중 액세스 엣지 컴퓨팅이라고 한다.
화성에 있는 탐사 로봇을 지구에서 조종한다는 관점으로 원거리에서도 로봇을 실시간으로 제어하는데 있어 지연을 최소화한 기술이다.

MEC 2027년까지 연 평균 40% 가까이 성장 전망이 예상된다.

 

# 스마트팩토리 정의

제품의 기획, 설계, 생산, 유통, 판매 등 전 과정을 사이버물리시스템(CPS : Cyber Physical System), 사물인터넷(IoT : Internet of Thing), 로봇, 3D 프린팅, 빅데이터 등으로 통합하여 효율적으로 제품을 생산할 수 있는 지능형 공장을 말한다.

# 스마트팩토리 핵심요소

애플리케이션 분야
디바이스 분야

 

# CPPS(Cyber Physical Production System)

스마트 제조 기술 요소(센서, IoT, Cloud, 빅데이터, Deep Learning, 머신비전, MES, SCADA, Digital Twin, VR, AR)들의 융복합 기술임으로 단위 기술에 대한 사이버 물리 시스템으로써 융복합 기술들을 통합 가능한 디지털 트윈 및 가상현실(VR : Virtual Reality)을 활용한 기술들의 확보 연구가 필요하다.

 

# BOP(Bill of Process)

제조 정보의 집합체를 의미하며 제조를 위한 구성요소 P3R들을 상호 연계하여 통합 관리되는 제조 정보의 집합체를 말한다.

# P3R

제조를 위한 구성요소로서 Product, Process, Plant, Resource로 구성되며 상세 내용은 다음과 같다.

  • 제품(Product) : 생산을 해야 할 대상(제품)
  • 자원(Resource) : 생산을 위해 필요한 자원(설비, Tool, 로봇, 작업자 등)
  • 프로세스(Process) : 어떻게 제품을 생산할 것인가의 공정 오퍼레이션 방법
  • 공장(Plant) : 어느 공장에서 생산할 것인가에 대한 결정(공장, 플랜트)

 

# 디지털 트윈

제품, 생산 설비와 공장의 디지털에 기반한 사이버 세계와 실제 세계의 통합 시스템을 예기한다.
실제 세계의 제품, 공정, 설비, 공장 등을 대상으로 다음과 같은 과정을 수행한다.

  • 3D가상화를 통한 사이버 세계의 디지털 모델을 구축
  • 사전 시뮬레이션
  • 최적의 생산 계획 및 공정 설계
  • 실제 생산에 적용
  • 설비 고장 등 실제 현장의 변화를 각종 센서 등으로 인지하여 사이버 세계에 실시간으로 동기화
  • 수집된 정보를 자율적으로 분석하고 의사결정하여 최적의 솔루션을 제시

 

# 스마트팩토리의 6개 개별요소

  • BOP 기반 공정계획 및 설계 시뮬레이션 시스템
  • BOP 기반 디지털 트윈
  • OPC-UA 통합
  • MES 시스템
  • SCADA 시스템
  • VR 연동

# BOP기반의 공정설계 최적화

BOP기반으로 공정 설계 계획 단계부터 시뮬레이션을 통한 시스템 대안을 제안하며 최적의 시스템 및 운영방안을 확정할 수 있다.
또한 Real Factory의 실질적인 형상과 사물을 부분적으로 CPPS와 비교할 수 있으며

가상현실과 연계하여 설계자 및 사용자는 초기 설계와 운영에 대해 쉽게 접근이 가능하도록 구축하였다. 

CI/CD

CI/CD란 무엇인가?

  • CIContinuous Integration (지속적 통합) : 지속적으로 퀄리티 컨트롤을 적용하는 프로세스를 실행하는 것.
  • CDContinuous Delivery (지속적 배포) : 팀이 짧은 주기로 소프트웨어를 개발하는 소프트웨어 공학적 접근의 하나로, 소프트웨어가 언제든지 신뢰 가능한 수준으로 출시될 수 있도록 보증하기 위한 것.

출처 - Wikipedia

Image from Devops Explained

  • CI/CD는 개발하는 과정(프로세스)에 밀접한 관련이 있습니다. 서비스를 개발하는 일은 단순히 코딩으로만 끝나는 것이 아닙니다.
  • 개발부터 운영이 끝없이 반복되는 위 그림과 같은 형태를 띕니다.
    • 흔히 말하는 개발 프로세스는 Dev에 해당하는 프로세스들이고, 릴리즈부터 배포, 모니터링까지 이르기를 운영(Ops)에 해당하는 프로세스입니다.
  • 그렇다면 CI/CD와 이것이 무슨 상관인지 하나씩 알아보겠습니다.

CI란?

CI지속적 통합지속적으로 퀄리티 컨트롤을 적용하는 프로세스를 실행하는 것이라고 정의가 쓰여있습니다. 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드테스트되어서 하나의 레포지토리로 관리되는 것을 의미합니다.

  • SCMSource Code Management의 과정도 CI에 속합니다.
    • Git을 사용해 Github 레포 하나로 여러명의 개발자가 소스코드를 올리고 충돌을 처리하는 모든 과정도 CI에 속합니다.
    • Git이 아닌 SVN도 마찬가지입니다.
  • 빌드 후 작성된 테스트 코드를 통해 유효성을 검증하는 것도 CI에 속합니다.
    • 아주 간단한 예시로 Pull Request를 생성했을 때, 소스코드가 Conflict나는 경우 Merge 버튼이 비활성화 되는 경험을 해보셨을 겁니다. 그것 또한 유효성 검사에서 실패한 것으로 CI에 속합니다.
    • 더 나아가, CI 툴을 사용해 소스코드가 컨벤션에 준수하는지 등을 체크하는 린터linter로 검증을 하도록 할 수 있는 등 다양한 일이 가능합니다.

CI를 하면 뭐가 좋은가요?

  • 지속적 통합을 하게되면 소스코드는 항상 Ready-to-run 상태(배포가 가능한 상태는 아닙니다.)가 됩니다. 즉, 중간에 누군가 합류를 해도 빌드가 되는 코드를 받을 수 있습니다.
    • 혼자서 개발할 때는 이런 문제를 겪어보지 못해서 중요성을 체감하지 못합니다.
    • 하지만, 회사 프로젝트나 오픈소스 프로젝트 등 여러명이서 개발을 하는 상태라면 이 문제는 더욱 중요해집니다.
      • 중간에 합류해서 새로운 기능을 개발하려고 하는데 누군가 작업하고 있는 코드가 아직 공유 레포upstream에 올라가 있어서 빌드가 안된다.
      • 이런 경우가 발생하면 그 사람과 얘기해서 해결하던가, 직접 소스코드를 보고 돌아가도록 디버깅을 하던가 해야합니다. 하지만, 이 자체로도 시간이 소요되므로 생산성이 매우매우 떨어지게 됩니다.
    • 게다가, 특정한 날을 정해서 각자 개발한 소스코드를 병합하도록 하게되면 그에 따르는 많은 시간을 소모하게 됩니다.
      • 만약, 기존 코드와 Merge한 코드가 에러가 난다면 이를 처리하는 과정에도 많은 시간이 소요될 것입니다.
  • 항상 양질의 코드 퀄리티를 유지할 수 있습니다.
    • 테스트의 자동화를 이루게되면 항상 테스트 코드를 통과하는 코드만 공유 레포에 올라갈 수 있기 때문에 상당한 퀄리티의 소스코드로 유지되게 됩니다.

CD란?

CD는 지속적 제공Continuous Delivery과 지속적 배포Continuous Deployment를 모두 의미합니다.

  • 지속적 제공Continuous Delivery : CI 과정이 모두 끝난 뒤 유효성 검증이 된 코드를 레포지토리에 올리는 것을 자동화합니다. (프로덕션 레벨로 배포하는 것과는 별개입니다.)
    • 항상 프로덕션 레벨로 배포할 수 있는 준비가 되어있는 소스코드를 자동으로 올라갈 수 있도록 합니다.
  • 지속적 배포Continuous Deployment : CI/CD 과정의 마지막 단계입니다. 지속적 제공을 통해 배포 가능한 소스코드를 프로덕션 레벨로 릴리즈하는 것을 의미합니다.

실제 사례에서 지속적 배포는 개발자가 애플리케이션을 수정한 뒤 몇 분 이내에 애플리케이션을 자동으로 실행할 수 있는 것을 의미합니다.

CD를 하면 뭐가 좋은가요?

  • 개발부터 배포까지 과정이 번거롭지 않고 간소화 되기 때문에 사용자 피드백을 빠르게 반영할 수 있습니다.
    • 장애 대응이 빨라집니다. 릴리즈를 했는데 굉장히 크리티컬한 이슈가 발견되었을 때, 개발부터 배포까지의 과정이 복잡하면 반영에 오래걸리게 됩니다.
  • 만약, 로드밸런서로 수십대의 서버를 동시에 운용한다면?
    • 자동화를 하지않으면 직접 서버에 들어가서 일일이 실행해야하기 때문에 하루종일 배포를 할 수도 있습니다.
CI/CD를 가능하게 해주는 툴

CI/CD를 제공하는 툴은 상당히 많습니다. 그 중에서 유명한 것 약 3개 정도를 비교해보겠습니다.

툴별로 이름, 가격, 특징에 근거한 내용을 정리함

Jenkins

무료 오픈소스지만
직접 설치해서 서버를 운용해야함.
설치가 어려움
자바 분야 CI/CD로 뿌리가 깊다.
다양한 플러그인 제공
파이프라인 구성 자유도 매우 높음

Circle CI

무료 플랜은 동시에 Job 1개만 돌 수 있음.
(게다가, 크레딧은 1주당 2500)
Perfomance 플랜은 한달에 30$
기업용은 꽤 비싸다
Docker-Compose를 사용 가능
무료 플랜에서는 도커 레이어 캐싱 불가

Travis CI

오픈소스(Public Repo)는 무료
기업용은 꽤 비싼편
심지어 취미용도 비싸다
Github 의존도가 높음
빌드 매트릭스 제공
(여러 버전으로 빌드를 해야할 때 이를 지원함.)

  • 이외에도 TeamCity 등 많은 CI/CD 툴이 있으므로 알아보고, 여건에 맞게 골라서 사용하시면 됩니다.
  • 이번 프로젝트에서는 Circle CI를 통해 자동화를 했습니다. Circle CI로 자동화하는 과정에 대한 자세한 설명은 다음 포스팅에 이어서 작성하겠습니다

출처: https://minz.dev/18 [MinJunKweon 개발 블로그] 

MMFF94

MMFF94 Force Field(및 관련 MMFF94s)은 Merck에 의해 개발되었으며 MMFF94는 더 이상 약자로 간주되지 않지만 때때로 Merck 분자력장(Merck Molecular Force Field)이라고 불린다.

이 방법은 유기 및 약물과 유사한 분자 범위에서 우수한 정확도를 제공한다. 핵심 매개 변수화(parameterization)는 500개의 테스트 분자 시스템에 걸쳐 실험 데이터가 아닌 고품질 양자 계산에 의해 제공되었다.

이 방법에는 C, H, N, O, F, Si, P, S, Cl, Br 및 I의 일반적인 유기 원소(organic elements)를 포함한 광범위한 원자 유형에 대한 매개 변수가 포함된다. 또한 다음과 같은 공통 이온을 지원한다.
Fe+2, Fe+3, F-, Cl-, Br-, Li+, Na+, K+, Zn+2, Ca+2, Cu+1, Cu+2, and Mg+2

Open Babel 구현은 원자 타이핑을 자동으로 수행하고 이러한 요소를 인식해야 한다.


MMFF94는 다음과 같은 정보를 제공한다.
1. 기하학적 구조, 결합 길이, 각도 등을 최적화하는 데 탁월한 성능 발휘
2. 정전기 및 수소 결합 효과를 포함한 정보 제공


MMFF94를 사용할 경우 적절한 논문을 인용해야 한다.

  1. Thomas A. Halgren, J. Comput. Chem., 17, 490-519(1996).
  2. Thomas A. Halgren, J. Comput. Chem., 17, 520-552(1996).
  3. Thomas A. Halgren, J. Comput. Chem., 17, 553-586(1996).
  4. Thomas A. Halgren and Robert B. Nachbar, J. Comput. Chem., 17, 587-615 (1996).
  5. Thomas A. Halgren, J. Comput. Chem., 17, 616-641(1996).
  6. Thomas A. Halgren, J. Comput. Chem., 20, 720-729 (1999). 

일부 실험과 대부분의 이론적 계산은 고립된 구조의 니트로겐에서 중요한 피라미드형 "퍼커링(puckering)"을 보여준다. MMFF94s 변형은 방향족 아닐린(aromatic aniline)과 같은 특정 유형의 비국소 삼각 N 원자(delocalized trigonal N atoms)를 평면화하기 위해 약간 다른 평면 외 휨(out of plane bending) 및 이면체 비틀림(dihedral torsion) 매개변수를 갖는다.
이것은 용액 또는 결정 구조의 시간 –평균(time-average) 분자 기하학과 더 잘 일치한다.

힘장(force-field) 최적화 분자를 결정 구조 기하학과 비교하는 경우 이러한 이유로 MMFF94s 변형을 사용하는 것이 좋다. 다른 모든 파라미터는 동일하다.

그러나, 만약 당신이 도킹 시뮬레이션, 활성 솔루션 형상 또는 다른 유형의 계산 연구를 고려하고 있다면, 하나 이상의 N형상이 우세하기 때문에 MMFF94 변형을 사용하는 것이 좋다..


참고

MMFF94를 사용할 경우 해당 방법을 자세히 설명하는 다음 문서도 인용해야 한다.

Brining the MMFF force field to the RDKIT

MMFF Force 필드를 RDKit로 가져오기: 구현 및 검증

파올로 토스카, 니콜라우스 스티플 & 그레고리 랜드룸

Bringing the MMFF force field to the RDKit: implementation and validation

Journal of Cheminformatics 제6권 제37조(2014년) 본조 인용

초록

광범위한 다양한 구조를 적절히 처리할 수 있는 MMFF94/MMFF94s와 같은 범용 힘 필드(force field)는 Cheminformatics Toolkit의 맥락에서 매우 중요하다. 여기서는 RDKit 내에서 이 힘 필드의 오픈 소스 구현을 제시한다. 새로운 MMFF 기능은 RDKit에서 UFF용으로 이미 사용 가능한 것과 함께 개발된 C++/C#/파이톤/자바 API를 통해 접근할 수 있다. 우리의 구현은 MMFF 저자가 제공한 공식 검증 제품군과 비교하여 충분히 검증되었다. 모든 에너지와 기울기가 정확하게 계산되었다. 더욱이, SMILES 문자열에서 만들어진 3D 분자에 원자 유형과 힘 상수가 정확하게 할당되었다. 완전한 유연성을 제공하기 위해 사용 가능한 API는 MMFF 에너지 표현식에서 개별 용어를 포함/제외하고 제한된 지오메트리 최적화를 수행할 수 있는 직접 액세스를 제공한다. MMFF가 가능한 분자역학 엔진의 가용성은 나머지 RDKit 기능과 결합되고 BSD 라이선스가 적용되는 것으로 학계와 산업계에서 활동하는 연구자들에게 매력적이다.

배경

분자 역학 힘장은 CPU 집약적인 양자 역학적 방법에 비해 계산에 필요한 자원요구가 적기 때문에 분자 시뮬레이션을 위한 계산 화학자의 작업량 정도가 된다. 일반적으로 약물 설계자와 화학정보학자(cheminformaticians)는 일반적으로 생물학적 고분자에서 작은 약물과 같은 분자에 이르기까지 다양한 구조의 스펙트럼에 걸쳐 우수한 성능을 전달하는 힘 분야에 가장 관심이 많다. 이러한 힘 필드(force fields)는 매개 변수 누락으로 인해 거의 실패하지 않기 때문에 배치 워크플로우에서 리간드 또는 수용체/리간드 합성물의 3D 구성을 최적화하는 데 이상적이다. 일반화된 힘장의 예로는 UFF [1], MMFF94 [2]-[8], OPLS [9], [10], GAFF [11] 및 CGenFF [12]이 있다.

이 중 가장 널리 사용되고 인정받는 것 중 하나는 MMFF94로, Merck 연구소의 Halgren에 의해 약 20년 전에 개발되었고 J. Comput에 대한 일련의 5개의 논문에 의해 문서화되었다. 화학. [2]-[6] 몇 년 후, MMFF94는 기하학 최적화 연구에 맞춰 비틀림 및 평면 외 상호 작용의 다른 매개 변수화로 특징지어지는 "정적" MMFF94s 변형[7]에 의해 보완되었다. 본 문서의 나머지 부분에서 "MMFF"는 MMFF94 및 MMFF94s 변형을 총칭한다. MMFF는 최초 도입 당시 사용 중인 대부분의 일반화된 힘장보다 우수한 작은 분자를 다루는 데 견고성과 품질을 보여주었으며, 또한 보다 최근의 OPLS2005 및 GAFF 힘장[14]과 동등하거나 더 우수하다. 그것의 다재다능함과 효율성은 현재 시장에 출시된 모든 주요 상업용 분자 모델링 패키지(CCG MOE, 슈뢰딩거 마에스트로, 몰소프트 ICM, Certara SYBIL-X)와 체민매틱스 툴킷(ChemAxon, OpenEye)에 그것의 구현을 보증한다.

여기서는 오픈 소스 Cheminformatics 툴킷 RDKit [15] 내에서 MMFF의 구현을 제시한다. MMFF 기능은 C++, C#, Python 및 Java API를 통해 액세스할 수 있다. MMFF의 다른 비상업적 구현은 [16]-[19] 존재하지만, 우리의 구현은 Kearsley [20], [21]이 제공한 정의에 따른 완전한 구현이며, 우리가 아는 한 허용 BSD 3항 면허에 따라 이용할 수 있는 유일한 구현이다.

실행

MMFF 에너지 표현은 결합 스트레칭, 각도 휨, 스트레치-벤드, 평면 외 휨, 비틀림, 반데르발스 및 정전기(식 1)의 7가지 용어로 구성된다. 개별 용어의 기능적 형태는 원본 문헌[2].

EMMFF=messebij+messagesEAijk+eEBAijk+∑EOPijk;l+∑ETijkl+evEvdWij+∑EQij

(1)

주어진 분자 시스템에 대한 힘장을 만드는 첫 번째 단계는 각 원자에 정확한 유형을 할당하는 것이다. MMFF는 95개의 숫자 원자 유형으로 인코딩된 각 원자의 화학적 특성과 환경을 기반으로 216개의 상징적인 원자 유형을 식별한다. 올바른 원자 입력은 방향족 플래그의 적절한 속성에 따라 결정적으로 달라집니다. MMFF에 의해 사용되는 방향족 모델은 RDKit 전체에서 일반적으로 사용되는 방향족 모델과 다르기 때문에, 방향족 모델은 분자의 케쿨화된 표현에서 시작하여 MMFF 기준에 따라 다시 인식되어야 한다. 그 후에 원자 유형은 하이드로겐에 이어 무거운 원자에 할당된다.

두 번째 단계로, 원자 중심의 부분 전하는 형식 전하의 할당이 필요한 MMFF 전하 모델[6]에 따라 계산된다. 

유기금속 DB

유기금속 DB(Dictionary of Inorganic and Organometallic Compounds)를 웹에서 검색할 수 있는 방식이 있으며 Free Trial을 요청하면 사용이 가능하다.
만약 사용가능 계정이 있다면 http://dioc.chemnetbase.com/ 에 접속하여 연결하면 된다.

다만 현재 분자구조상 3d 변환 시 pubchem의 metal 데이터 변환과 동일한 이슈가 있을 것으로 예상이 된다. 

C-ITS

1. 정의

C-ITS란 Cooperative Intelligent Transport Systems의 약어로서, 협력 지능형 교통 체계의 줄임말이다. 현재 상용단계인 ITS(Intelligent Transport Systems)의 차세대 버전이라고 할 수 있다.

2. 현재 ITS의 수준

현 ITS는 교통수단 및 시설에 전자제어 및 통신을 접목해 교통 정보와 맞춤형 서비스를 제공하는 체계이다.

1) ITS를 기반으로 만들어지는 것

   - 실시간 교통정보
   - 교차로 제어
   - 하이패스

2) C-ITS의 기능

   - 차량, 사물 통신(Vehicle to Everything, V2X)을 활용해 차량과 차량, 차량과 인프라가 유무선으로 정보를 주고 받아 하나의 거대한 정보 체계를 이룬다. 실시간 교통 정보  수준을 넘어서, 보행자나 차량 위치 데이터 등을 공유해 실시간 자율주행에 활용하고 전체 차량이 수집한 교통 상황을 종합해 교통 체증을 분산하는 등 고도화된 체계를 갖춘다.

 

C-ITS는 현재의 ITS보다 더 능동적이고 광역화된 교통 제어를 위한 체계다. 출처=국토교통부

C-ITS는 현재의 ITS보다 더 능동적이고 광역화된 교통제어를 위한 체계다.

 

세계 최초 Wave, C-V2X, 5G V2X 통신 개념도. 출처=국토교통부

 

3. C-ITS의 동향

C-ITS의 상용화를 위해서는 갈길이 멀다.

사고 차량의 데이터를 실시간으로 받아들여 본인 차량이 대처할 수 있도록 하기 위해서는 본인이 탑승한 차량이 통신 기능이 장착된 자율주행 차량이고, 통신 역시 초저지연성을 지원하는 5G네트워크가 기반이어야 한다. 아직까지 C-ITS를 활용할 정도의 통신 및 자율주행 차량이 등장하지는 않은 만큼 현재의 C-ITS사업은 미래의 자율주행 차량 환경을 위한 포석이다. 여기에 인공지능으로 제어되는 C-ITS까지 등장한다면 지금보다 훨씬 더 쾌적하고 안전한 도심 여건이 조성될 것이다. 

결정정보 및 물성예측

분자화합물의 결정정보는 다음과 같은 정보를 포함하고 있음
1) 분자내 원자간 결합 길이
2) 원자간 결합 각도 정보

이러한 특징을 쉽게 추출하여 Input Parameter로 사용하게 되면 오차를 줄이는데 조금 영향을 줄 수 있을 것으로 판단됨

 

Edge Computing

Cloud Computing 및 Issue

  • Cloud Computing은 인터넷을 통해 서버, 저장소, 소프트웨어, 분석 등의 Computing 서비스를 제공 (Ex. 네이버의 NDrive, 구글 Docs)
  • Cloud 서비스 이용 증가로 Server 및 Data Center에서 처리할 수 있는 Data Overflow 및 수집 Data 분석, 송신 과정에서 Data Delay발생, 기타 통신 과정에서의 보안 문제 발생

Edge Computing

  • Cloud Computing의 Data 처리 속도, 용량 및 보안 문제 해결을 위해 Edge Computing 출현
  • Edge Computing은 최종 단말기에서 컴퓨팅을 수행하는 것을 말하며, 분산된 개방형 Architecture로 분산된 처리 성능을 제공하여 Mobile Computing 및 IoT기술 지원
  • IoT 기술과 Bigdata를 활용한 서비스에 효과적인 방식으로 자율주행, 가상현실, 스마트팩토리 등에 적용

image

image

 

Edge Computing 장점

  • 데이터 연결의 안정성 및 전송 비용 절감
    로컬 클라우드 컴퓨팅 및 스토리지 기능 제공
    대부분의 무선 프로토콜 지원(저전력 센서 ~ 스마트폰)
    개방형 소프트웨어 플랫폼을 통한 경제적인 개발 및 배포
  • 빠른 응답속도
    클라우드 컴퓨팅 리소스를 로컬로 관리
  • 센서 기반의 대량의 데이터 분석 지원
    로컬 영역 센서의 데이터를 집계하여 분석기능을 지원하기 때문에 상당한 비용과 시간 절약 가능

 

활용가능 분야

  • Smart Cities
  • Smart Buildings
  • Smart Hospital
  • Smart Construction

 

image

image 

물질의 성능

화합물의 물성은 주변 환경의 조건(온도/습도/압력 등)에 의해 많은 영향을 받는다.
이에 화합물의 물성에 대한 측정값을 리포팅할 경우에는 주변 환경조건에 대해서 언급을 해주는 것이 필요하다. 예를 들어 증기압(Vapor Pressure)의 경우에는 몇 도 상태의 증기압이 중요하다. 따라서 증기압을 계산할 온도 조건이 몇 도인지에 대한 기준이 필요하다.

표준온도압력

어떤 물질의 열역학량을 정의하기 위해서는 표준적인 상태를 정해야 할 필요가 있다.
이러한 표준을 표준 온도 압력이라고 한다.
표준온도압력에는 SATP(Standard Ambient Temperature and Pressure)와 STP(Standard Temperature and Pressure)의 두 가지 종류가 있는데, SATP가 상대적으로 널리 사용된다.

SATP : 온도 25 ℃(298.15K), 기압 1Bar(100000 Pa)

STP : 온도 0℃(273.15K), 기압 1atm(101325 Pa) 

가스터빈

1. 가스터빈은 외기온도에 따른 영향을 받음

1) 여름철의 경우 외기온도가 상승함에 따라 가스터빈 성능이 저하되고
열수요 감소에 따른 여열처리 문제가 발생한다.
2) 열병합 발전의 여러 가지 운전모드와 운전방법에 따라 성능 특성은 매우 중요하다.

2. 가스터빈의 성능향상 연구

1) 열병합발전의 여열을 이용한 가스터빈 발전 시스템의 성능향상을 위한 연구로 외기온도 변화에 따른 증기분사 가스터빈 방법과
흡수식 칠러 냉각 시스템을 결합한 가스터빈 열병합발전 시스템의 성능해석

2) 분당 복합열병합 발전소의 각 운전모드별, 조건별 성능시험을 실시

각 운전모드별 성능특성을 파악하고
각 조건별 최적 운전방법을 도출함

3. 경년열화 보정

1) 터빈의 경년열화

- 일정시간이 경과후 터빈의 경년열화에 따른 보정작업이 필요함
-> 예를들어 일정 가동시간이 경과후에는 종합전기 출력은 평균적으로 어느정도 감소된다.

2) Correction Curve

- 전체 종합전기 출력은 보증성능 대비 어느 정도 비율로 저하되고

- 종합전기 효율은 보증성능 대비 어느 정도 저하된다.

4. 가스터빈 성능저하 원인

1) 경년열화에 따른 성능저하

image

2) 압축기 효율감소에 따른 출력저하

- 압축기 효율의 1% 감소는 1.5~2%의 G/T 출력 저하로 나타남

- 압축기의 효율은 압축기 블레이드의 청결도와 밀접한 상관관계를 갖고 있음
-> 대기 상태의 공기에는 일정량의 습도와 함께 먼지를 비롯한 각종 부유 입자들이 포함되어 있어 이러한 물질들이 공기와 함께 압축기로 흡입됨
흡입된 물질들은 습기로 인하여 압축기 블레이드에 점착되어 막오염을 유발시키고 블레이드 형상을 변화시켜 압축기 성능을 왜곡시킴

- 대기온도 상승에 따른 공기 밀도 저하
-> 공기밀도 저하는 공기 압축비를 감소시킴
-> 압축기 출구압력의 감소는 터빈입구 압력이 낮아지게 함 -> 터빈출구 온도 증가 -> 터빈에서 생성되는 출력 감소

3) 대기온도에 따른 전기출력 감소 원인 규명

- 현상 : 온도가 섭시 1도 상승할때마다 발전소 출력은 약 0.6%(250kw) 감소되는 현상을 보임

- 원인 : 대기의 온도에 따라 출력이 달라지고 대기온도가 상승하면 공기 밀도가 감소되어 압축기로 유입되는 공기의 단위체적당 질량이 감소하여 출력이 저하되는 현상이 나타남

- 이슈 : 전력수요가 증가하는 하절기에 대기 온도의 상승으로 인해 출력 감소 현상이 발생 -> 전력 공급이 부족하게 됨

image

5. 결론

1) 가스터빈 열병합 발전소의 성능 저하 원인

- 여러가지 운전모드에 따른 급속한 운전방법 변화

- 시간에 따른 설비의 노후와

- 설비 구성부의 성능변화

- 외귀온도 상승에 따른 성능감소

2) 성능시험시 보정

- 온도에 따른 보정을 위해 터빈제작사에서 제공한 Correction Curve를 사용하여 보정계수를 산정할 수 있음

3) 기기성능 저하원인

- 공기압축기 Blade의 막오염으로 인하여 압축기 효율이 저하될 수 있음

- 가스터빈의 경우 가동시간이 10,000시간이 경과하면 경년열화로 인하여 보증성능대비 1.5%의 성능 저하가 발생함

4) 대기온도에 따른 성능저하

- 유입되는 공기의 단위체적당 질량이 감소하면 출력이 저하되는 현상이 나타남

5) 터빈 유형에 따른 성능저하

- 가스터빈은 준공후 10,000시간이 경과되면 성능저하가 발생함
-> 주기적인 계획정비 실시로 핵심부품인 고온부품을 주기적으로 교체 및 성능을

- 스팀터빈은 준공시점과 거의 변화가 없음 

가전자란?

원자의 가장 바깥 껍질에 있는 전자. 분자결합, 고체의 응집(凝集) 등에 기여하고 원자가 등 화학적 성질을 결정한다 

Gaussian Process

 

함수의 확률적 분포.

정의역(domain)의 dimension이 유한한 경우, 함수의 확률적 분포는 multivariate Gaussian으로 나타낼 수 있다. (Gaussian prior를 갖을 때)

Infinite domain에서의 함수의 확률 분포를 나타낸다면? Gaussian Process

Stochastic process의 random variable sub-collection이 multivariate Gaussian 분포를 가지는 process를 Gaussian process로 정의한다.

clip_image001

Covariance Matrix K는 kernel function k(·, ·)으로 정의된다. K는 positive semidefinete (항상? 더읽어봐야할듯)

kernel을 Gaussian kernel을 사용하면?

입력 x_i, x_j의 거리가 가까울 수록 높은 covariance를 갖는다. 반대로 x_i, x_j의 거리가 멀 수록 낮은 covariance를 갖는다.

kernel을 design함으로써 Gaussian process의 특성을 조절해줄 수 있다.

Gaussian Process Regression

앞서 말했듯이 Gaussian process는 함수의 확률적 분포를 modeling할 수 있게 해준다.

'함수의 확률적 분포'가 Bayesian regression의 framework에서 어떻게 적용되는 지 살펴보자.

Training set S는 x_i, y_i (i=1, .,., m) 이고 각 sample은 알려지지않은 분포로부터 i.i.d. 관계를 갖는다.

clip_image002

e는 i.i.d. Gaussian noise, 함수 f 는 Gaussian process prior를 갖는다고 가정 (Bayesian regression에서 Θ를 그렇게 가정했듯이)

함수 f의 Gaussian process 특성을 이용하면 다음과 같은 결과를 얻는다.

(Gaussian process의 random variable의 sub-collection은 multivariate Gaussian 분포이다)

clip_image003

Annotation *은 새로운 test sample을 의미.

최종적으로 구하고자하는 y* | y, X, X*  는 다음과 같이 나타난다.

X : training input

y : training output

X* : testing input

y* : testing output (regression 결과)

clip_image004

(강의노트가 갑임...)

최종적으로 Gaussian 분포로 유도하는 방법은 Bayesian regression과 유사하다.

1. Regression 결과 또한 parameter의 불확실성을 반영하는 것을 볼 수있다.

2. non-parametric

3. Regression framework에 kernel을 도입.

4. 컨셉은 어렵지만 간단하고(?) straightforward한 선형 대수학으로 전개가 가능하다.

clip_image005

출처: https://hellbell.tistory.com/entry/Gaussian-Process 

데이터 분석을 위한 수리모델 & 해석학 입문

1. 가용성 편향

인간에게는 머리에 떠올리기 쉬운 사건에 대해, 이것을 먼저 과대평가해버리는 경향이 있다. 이것을 가용성 편향이라고 한다.

2. 중첩요인

원인이 되는 변수와 관련되어 있으며 결과의 변수와 인과관계를 가지는 요인을 중첩 요인이라고 한다.

3. 가용성 편향

인간에게는 머리에 떠올리기 쉬운 사건에 대해서, 이것을 먼저 과대평가해버리는 경향이 있다. 이것을 가용성 편향(availability bias)이라고 한다.

4. 표준화(standardization)

데이터를 관측할 때 측정될 값의 선택지를 사전에 결정해 두는 것을 표준화라고 한다. 표준화를 해 두면 데이터를 한꺼번에 처리하고 분석할 수 있는 장점이 있다.

5. 누적분포함수

경험분포의 형태를 직감적으로 파악하기 위해서는 히스토그램을 이용하는 것이 편리하지만 정량적으로 분포의 형태를 측정할 때는 누적 분포함수를 이용한다. 누적 분포함수는 확률분포로부터 계산할 수 있는 함수이다.

6. 양자화

연속적인 값을 갖는 상태와 행동을 불연속적인 값으로 변환할 수 있다. 이를 양자화라고 한다. 양자화가 손쉬운 방법처럼 보이지만 상태나 행동의 차원이 커지면 문제가 발생한다. 

데이터 분석 모델 성능 평가 지표

# F1의 공식

F1 = 2*(Precision*Recall) / (Precision+Recall)

# F1값 해석

F1값이 높으면 Precision과 Recall 모두 좋은 결과를 보인다는 것을 의미한다.
F1값이 낮으면 False Positive가 문제가 있는 것인지
False Negative가 문제가 있는 것인지 정확히 알 수가 없다.
따라서 이 경우에는 디버깅이 필요하다.

 

# TP, FP, FN, TN

- TP : 내가 1로 예측을 했는데 정답도 1인 경우, 즉 양성이라고 한 예측이 정답과 일치하는 경우에 TP입니다. 진짜 true로 양성 positive라고 한 경우인 것이죠
- FP는 내가 1로 예측을 했지만 정답은 0인 경우, 즉 양성이라고 한 예측이 정답과 불일치하는 경우가 FP입니다. 가짜 false로 양성 positive라고 한 경우인 것이죠
- FN은 내가 0으로 예측을 했지만 정답은 1인 경우, 즉 음성이라고 한 예측이 정답과 불일치하는 경우가 FN입니다. 가짜 false로 음성 negative라고 한 경우인 것이죠.
- TN는 내가 0으로 예측을 했는데 정답도 0인 경우, 즉 음성이라고 한 예측이 정답과 일치하는 경우에 TN입니다. 진짜 true로 음성 negative라고 한 경우인 것이죠

# Precision

precision=TP/(TP+FP)

 

# Recall

recall=TP/(TP+FN)

여기서 precision의 의미는 양성 positive라고 판단한 경우 중에 진짜 true 양성 positive인 확률입니다. 즉 정확도라고 보시면 됩니다.

recall은 실제로 양성 positive 케이스들에서 진짜 true 양성 positive로 예측에 성공한 확률입니다. 즉 내가 예측했어야하는 케이스들에서 놓치지 않고 예측해서 진짜를 잡아낸 경우라고 보시면 됩니다.


Accuracy

It’s the ratio of the correctly labeled subjects to the whole pool of subjects.
Accuracy is the most intuitive one.
Accuracy answers the following question: How many students did we correctly label out of all the students?
Accuracy = (TP+TN)/(TP+FP+FN+TN)
numerator: all correctly labeled subject (All trues)
denominator: all subjects

Precision

Precision is the ratio of the correctly +ve labeled by our program to all +ve labeled.
Precision answers the following: How many of those who we labeled as diabetic are actually diabetic?
Precision = TP/(TP+FP)
numerator: +ve labeled diabetic people.
denominator: all +ve labeled by our program (whether they’re diabetic or not in reality).

Recall (aka Sensitivity)

Recall is the ratio of the correctly +ve labeled by our program to all who are diabetic in reality.
Recall answers the following question: Of all the people who are diabetic, how many of those we correctly predict?
Recall = TP/(TP+FN)
numerator: +ve labeled diabetic people.
denominator: all people who are diabetic (whether detected by our program or not)

F1-score (aka F-Score / F-Measure)

F1 Score considers both precision and recall.
It is the harmonic mean(average) of the precision and recall.
F1 Score is best if there is some sort of balance between precision (p) & recall (r) in the system. Oppositely F1 Score isn’t so high if one measure is improved at the expense of the other.
For example, if P is 1 & R is 0, F1 score is 0.
F1 Score = 2*(Recall * Precision) / (Recall + Precision)

Specificity

Specificity is the correctly -ve labeled by the program to all who are healthy in reality.
Specifity answers the following question: Of all the people who are healthy, how many of those did we correctly predict?
Specificity = TN/(TN+FP)
numerator: -ve labeled healthy people.
denominator: all people who are healthy in reality (whether +ve or -ve labeled)

General Notes

Yes, accuracy is a great measure but only when you have symmetric datasets (false negatives & false positives counts are close), also, false negatives & false positives have similar costs.
If the cost of false positives and false negatives are different then F1 is your savior. F1 is best if you have an uneven class distribution.

Precision is how sure you are of your true positives whilst recall is how sure you are that you are not missing any positives.

Choose Recall if the idea of false positives is far better than false negatives, in other words, if the occurrence of false negatives is unaccepted/intolerable, that you’d rather get some extra false positives(false alarms) over saving some false negatives, like in our diabetes example.
You’d rather get some healthy people labeled diabetic over leaving a diabetic person labeled healthy.

Choose precision if you want to be more confident of your true positives. for example, Spam emails. You’d rather have some spam emails in your inbox rather than some regular emails in your spam box. So, the email company wants to be extra sure that email Y is spam before they put it in the spam box and you never get to see it.

Choose Specificity if you want to cover all true negatives, meaning you don’t want any false alarms, you don’t want any false positives. for example, you’re running a drug test in which all people who test positive will immediately go to jail, you don’t want anyone drug-free going to jail. False positives here are intolerable.

Bottom Line is

— Accuracy value of 90% means that 1 of every 10 labels is incorrect, and 9 is correct.
— Precision value of 80% means that on average, 2 of every 10 diabetic labeled student by our program is healthy, and 8 is diabetic.
— Recall value is 70% means that 3 of every 10 diabetic people in reality are missed by our program and 7 labeled as diabetic.
— Specificity value is 60% means that 4 of every 10 healthy people in reality are miss-labeled as diabetic and 6 are correctly labeled as healthy.

Confusion Matrix

Wikipedia will explain it better than me

In the field of machine learning and specifically the problem of statistical classification, a confusion matrix, also known as an error matrix, is a specific table layout that allows visualization of the performance of an algorithm, typically a supervised learning one (in unsupervised learning it is usually called a matching matrix). Each row of the matrix represents the instances in a predicted class while each column represents the instances in an actual class (or vice versa).The name stems from the fact that it makes it easy to see if the system is confusing two classes (i.e. commonly mislabeling one as another).

A nice & easy how-to of calculating a confusion matrix is here.

from sklearn.metrics import confusion_matrix
>>>tn, fp, fn, tp = confusion_matrix([0, 1, 0, 1],
[1, 1, 1, 0]).ravel()
# true negatives, false positives, false negatives, true positives
>>>(tn, fp, fn, tp)

(0, 2, 1, 1) 

3 Ways To Improve Your Data Science Teams Efficiency

research@theseattledataguy.com November 11, 2020 data science 0

Photo by SpaceX on Unsplash

규모에 관계없이 모든 기업이 자사 제품, 전략 및 보고에 데이터 과학 및 기계 학습을 구현하는 방안을 검토하고 있다.

그러나 기업이 데이터 과학 팀을 관리하기 시작하면서 팀이 직면하는 많은 과제와 비효율성이 있다는 것을 금방 깨닫게 된다.

지나치게 언급된 “데이터 과학자가 가장 섹시한 직업”이라는 기사가 나온지 거의 10년이 지났지만, 데이터 과학자의 업무 속도를 떨어뜨리는 비효율성은 여전히 많다.

데이터 과학자들은 여전히 부서 전반에 걸쳐 동료들과 협업하고 소통하기 위해 노력하고 있다. 또한 기업 내부의 데이터 소스가 폭발적으로 증가하면서 데이터 거버넌스 관리가 더욱 어려워졌다. 마지막으로, 일부 회사에서는 일관성 있고 합의된 프로세스가 없기 때문에 팀이 같은 입장을 취하기가 어려운 경우가 많이 발생한다.

이 모든 고통을 해결할 수 있다. 데이터 과학 팀의 효율성을 높이는 데 도움이 될 수 있는 툴과 모범 사례가 있다. 이 기사에서는 이러한 문제와 귀사가 데이터 과학 팀의 결과를 최적화할 수 있도록 귀사 팀이 직면한 문제에 접근하는 방법에 대해 설명한다.

협업 및 커뮤니케이션

협업과 커뮤니케이션은 모든 기술 팀에서 해결해야 할 과제로 남아 있습니다. 이것이 대부분의 신속한 변화를 위한 방법론들이 어떤 형태의 독립 회의와 다른 형태의 투명한 의사소통을 가지고 있는 이유입니다. 하지만 소통과 협업에 있어서 스탠드업 미팅만으로는 충분하지 않다.

커뮤니케이션

기술관련 프로젝트 업무를 진행할 때 의사소통은 매우 중요하다. 백엔드 팀과 프런트 엔드 팀을 관리하는 사람이라면 누구나 다양한 구성 요소와 조각을 올바르게 조립하는 것이 얼마나 어려운 일인지 알 수 있다.

이와 같은 문제가 데이터 과학자들에게도 발생한다. 데이터 엔지니어나 이해당사자와 커뮤니케이션할 때 오해가 발생할 수 있는 기회는 많다. 이러한 문제들 중 다수는 투명성 부족뿐만 아니라 관점과 목표의 일반적인 차이 때문에 발생한다.

협업

협업은 기업의 모범 사례를 공유하는 데 도움이 되기 때문에 데이터 과학 모범 사례의 또 다른 중요한 측면이다. 이것은 많은 데이터 과학자들에게 지난 10년 동안 도전이었다. 왜냐하면 그들의 작업은 종종 공유된 팀 폴더에 저장되었기 때문이다.

일부 데이터 과학자의 또 다른 어려움은 보다 협업적인 환경에서 버전 제어를 관리하는 것이다. 점점 더 많은 개발자와 데이터 과학자들이 같은 코드 조각과 주피터 노트북에서 상호작용하면서, 누가 왜 변경했는지 추적하기가 어려워지고 있다.

이것은 결국 되돌리고 싶지만 무엇을 했는지 기억하지 못하는 편집을 하게 되면 혼란을 야기할 수 있다.

Solution

data science consulting

이에 대응하여 데이터 과학 팀이 협업 및 커뮤니케이션을 보다 효과적으로 관리할 수 있도록 많은 기업들이 생겨났다. 특히 두 개가 눈에 띈다.

Domino Data Lab 및 Saturn Cloud.
두 제품 모두 여러 면에서 다소 비슷한 기능을 제공한다. 두 제품 중에서 Domino Data Lab는 훨씬 더 엔터프라이즈 중심적이고 기능이 풍부한 제품을 보유하고 있다.

데이터 과학자들이 Jupyter 노트북을 더 잘 추적, 공유 및 관리할 수 있도록 돕는 데 중점을 두기 시작했다.

두 제품 모두 자동 버전 제어 기능을 제공하므로 데이터 과학자들이 노트북의 변경 사항을 매우 쉽게 롤백할 수 있다. 특히 이 기능은 모델 및 연구 협업 시 큰 도움이 됩니다. 팀 구성원은 모두 자신의 노트북과 모델을 업데이트할 수 있으며 워크플로우를 망치는 변경 사항을 적용할 걱정을 하지 않아도 된다.

이러한 모든 기능은 협업을 용이하게 함으로써 데이터 과학자의 효율성을 획기적으로 향상시킬 수 있다.

 

데이터 거버넌스 및 데이터 계보 개선

충분한 관심을 받지는 못하지만 데이터 거버넌스에서 가장 중요한 주제 중 하나일 것이다. 문제는 데이터 거버넌스가 섹시하지 않다는 것이다. 가용 데이터, 데이터 출처, 담당자를 규제하는 것이 핵심이다.

데이터 거버넌스에는 여러 가지 측면이 있다.

BARC(Business Application Research Center)에 따르면 조직의 주요 데이터 거버넌스 목표는 데이터의 가치를 높이고, 데이터 사용에 대한 내부 규칙을 수립하고, 컴플라이언스 요구사항을 이행하는 것이어야 한다. 데이터 거버넌스는 데이터의 가용성, 유용성, 무결성 및 보안을 관리하는 데 집중된다.

데이터 거버넌스는 데이터 과학자가 데이터의 출처를 파악하고 신뢰할 수 있는지 여부를 파악하는 데 도움이 되기 때문에 중요하다. 요즘 기업들은 모든 시스템이 다른 모든 시스템과 통합되기 때문에 어디에서나 데이터가 거의 없다는 것이 힘든 일이다.

Solution

data governance consulting

결과적으로, 어떤 데이터가 가장 최신이고 어떤 데이터가 진실의 근원인지 구별하기 어려울 수 있다. 여기서 데이터 거버넌스/리니지 툴이 유용하게 사용된다. Talend의 TreeSchema와 같은 도구, 특히 Talend의 데이터 리니지 도구이다.

TreeSchema와 같은 도구는 자동으로 팀의 다양한 데이터 소스를 긁어내어 누가 어떤 테이블을 소유하고 있는지, 데이터의 스키마는 무엇인지, 데이터는 어디서 왔는지와 같은 메타데이터를 보다 효과적으로 추적할 수 있도록 도와준다.

TreeSchema는 데이터의 출처를 추적하는 데 도움이 될 뿐만 아니라, 데이터의 변경 사항 및 잘못된 데이터 관행을 추적하는 데도 도움이 된다.

예를 들어 테이블에 새 데이터 원본 또는 필드를 추가한다고 가정하자. 일반 회사에서는 새 데이터 개체가 생성되지만 다른 사용자가 해당 데이터가 무엇인지 알 수 있는 문서가 없을 수 있다. 문서가 있는 경우 일부 공유 폴더 또는 SharePoint 사이트에 있을 수 있다. 대신 TreeSchema를 사용하면 데이터 문서를 중앙 집중화하고 문서에 구멍이 있을 때 업데이트를 받을 수 있다. 이것은 아래 사진에서 볼 수 있다.

팀의 데이터 거버넌스를 관리하기 위한 중앙 집중식 솔루션을 갖추면 데이터 과학자들이 모든 열의 의미를 파악하기 위해 데이터 엔지니어를 따라다니는데  너무 많은 시간을 할애하지 않아도 된다.

 

데이터 과학 프로세스 정의

데이터 과학은 여전히 상대적으로 새로운 분야이기 때문에 새로운 데이터 과학자들이 따를 수 있는 구체적인 프로세스와 방법론은 많지 않다. 소프트웨어에는 소프트웨어 개발자가 아이디어에서 제품으로 전환하는 과정을 명확히 하는 Scrum과 Waterfall과 같은 개념이 있다.

데이터 과학에서, 이러한 개념의 완성도가 떨어진다. 탐사 데이터 분석(EDA)과 같은 일반적인 아이디어들이 있다. 하지만 완전히 구체적인 것은 아무것도 없다. 저는 첫 직장에서 목표가 무엇인지, 언제 일이 완료되었는지에 대한 명확한 지침이 없는 프로젝트를 막 받았을 때 이런 과정이 부족했던 경험을 했다.

솔루션

이러한 혼동을 피하기 위해 데이터 과학 팀은 질문에서 답변으로 어떻게 진행될 것인지에 대한 일반적인 프로세스를 수립해야 한다. 데이터 과학은 소프트웨어 개발이 아니기 때문에 귀사팀의 데이터 과학 프로세스는 대부분의 소프트웨어 개발 프로세스만큼 엄격해서는 안 된다고 생각한다. 분석을 수행하거나 모델을 개발하는 경우 정의된 목적은 적다.

대신, 대부분의 데이터 과학 프로세스는 팀이 현재 답변하려는 질문에 집중하고 너무 많은 토끼 굴에 말려들지 않도록 하는 데 초점을 맞출 수 있다.

많은 과학자들이 동의하는 것 같은 과정의 일반적인 윤곽이 몇 가지 있다. 이는 데이터 수집, 데이터 정리, EDA, 통합 및 결론, 모델 개발 및 모델 구축이다.

이러한 각 단계는 데이터 과학자가 목표를 더 잘 정의하고 각 단계가 완료되면 알 수 있도록 도와줍니다.

예를 들어, 이론상의 EDA는 영원히 지속될 수 있다. 분석가는 모든 구체적인 사실과 수치를 계속 분석할 수 있다. 이것은 프로젝트를 추진하는 데 도움이 되지 않는다.

그렇기 때문에 EDA에 대한 일부 경계를 정의하는 것이 유리하다. 그게 시간 문제든 답할 질문들이든… 두 가지 모두 데이터 과학자와 분석가가 데이터에서 너무 많은 것을 잃지 않도록 경계를 제공한다.

Chanin Nantasenamat은 데이터 과학 프로세스에서 이 프로세스를 시각적으로 잘 보여주고 있다. 데이터 과학의 표준 절차에 대한 시각적 가이드이다. 결론과 통합 단계를 건너뛴다. 하지만 비주얼은 좋은 관점을 제공한다.

결론

데이터 과학은 보편화되었다. 말하자면, 데이터 과학 팀, 툴 및 전략은 구현하기가 쉽지 않다.

회사의 규모에 관계없이 데이터 과학 팀은 효율성을 개선할 수 있다. 커뮤니케이션 및 협업을 개선하고, 데이터를 알고 신뢰하며, 데이터 분석 프로세스에 대한 일반적인 지침을 마련함으로써 이러한 작업을 수행할 수 있다. 이러한 세 가지 영역을 개선하면 중복, 불필요한 작업 및 신뢰할 수 없는 결과를 줄일 수 있다. 이러한 성장 기회의 대부분은 적절한 툴 및/또는 프로세스를 찾고 데이터 과학자가 해당 툴 및 프로세스의 사용에 적응할 수 있도록 지원함으로써 구현될 수 있다.

데이터 과학이 항상 어려울 필요는 없다. 더 정의된 경로를 제공하는 데 도움이 된다면 말이다. 

Stable Baselines3 RL Colab Notebooks

강화학습을 수행하는데 있어 보다 효율적으로 진행할 수 있도록 도와주는 라이브러리에는 여러가지가 있지만 Stable Baselines를 무시할 수 없습니다. 본래 OpenAI사에서 개발한 Baselines를 보다 개선하여 탄생하게 된 라이브러리입니다.
현재는 Baselines3까지 나와있는 상태이고요. 기본적인 사용법과 예제는 Colab버전으로 친절하게 제공되고 있습니다.

 

Colab notebooks part of the documentation of Stable Baselines3 reinforcement learning library

Those notebooks are independent examples.

Documentation: https://stable-baselines3.readthedocs.io/

Content

RL Tutorial JNRR19

We recommend looking at rl-tutorial-jnrr19 for a more complete tutorial.

  1. Getting Started Colab Notebook
  2. Gym Wrappers, saving and loading models Colab Notebook
  3. Multiprocessing Colab Notebook
  4. Callbacks and hyperparameter tuning Colab Notebook
  5. Creating a custom gym environment Colab Notebook

 

Descriptor 선택과 활동 환경

모델링 캠페인을 처리할 때, 모든 구조적 특성이 관심있는 실험 특성을 결정하는 데 관련되지 않을수도 있다는 가설을 세울 수 있다.
마찬가지로, 모든 MD가 모델링 목적에 적합한 것은 아니다. 
따라서, 분자 설명자의 선택은 각각의 컴퓨터 지원 프로젝트의 결과에 직접적으로 영향을 미친다.

분자 설명자의 선택은 모델링 기법의 특성보다 QSAR 모델의 사전 예측 성능에 훨씬 더 큰 영향을 미치는 것으로 나타났다.  따라서, 상호 평가의 문제를 가장 잘 다루기 위해서는 최적의 설명자 집합은 상호 검정 문제를 가장 잘 해결한다. 
분자 서술자의 선택 외에도, 처리와 사용은 분자 사이의 유사성이 어떻게 표현되는지와 같은 해당 계산 모델에 결정적인 영향을 미친다.

설명자 기반 애플리케이션을 다룰 때 고려해야 할 관련 요소는 소위 "활동 환경"입니다. 활동 환경은 분자 설명자 공간과 실험 활동 공간 사이의 관계로 생각할 수 있다.

즉, 전자를 지도의 지리적 좌표 집합(즉, 위도와 경도)으로 상상하는 경우, 후자는 지도의 각 지점에서 지형의 높이를 나타낸다(그림 3).

활동 환경은 관심 끝점/검사의 특성, 훈련용 콤파운드로 적용되는 화학 공간, 이러한 영역의 화합물의 밀도 분포, 그리고 가장 중요한 것은 사용된 분자 설명자의 특성에 따라 달라진다. 

분자 활동 환경은 부드럽게 구르는 언덕, 울퉁불퉁한 협곡과 비슷하거나 중간 시나리오일 수 있다.

완만하게 구르는 언덕(그림 3a)이 있는 경우 분자 구조의 작은 변화(또는 구조 정보를 포착하는 데 사용되는 설명자의 작은 변화)가 활동에 작은 영향을 미칠 것이다. 이 경우, 주어진 분자의 주변은 유사한 활동을 공유하는 점점 더 다양한 구조의 스펙트럼에 의해 채워질 것이다.

반대로, "계곡과 비슷한" 환경이 존재하는 경우(그림 3b), 작은 구조 변화는 활동에 극적인 영향을 미칠 수 있다. 이러한 급격한 변화를 흔히 "활동 절벽"이라고 한다.

image

일반적으로 “활동 절벽”은 주변 분자가 효력, 활동 또는 독성의 큰 차이를 보이는 화학 공간의 영역으로 정의된다.

활동 절벽의 연구는 "작은 화학적 변화 = 큰 활동 변화" 특성을 고려할 때 많은 구조-활동 기반 적용에 높은 관심을 갖고 있다.

한편, 활동 절벽은 계산 화학자들에게 기본적인 구조-활동 관계를 이해하기 위한 기본적인 정보를 제공하지만, 다른 한편으로는 해당 모델의 일반화 능력에도 영향을 미친다.
이러한 맥락에서 분자 설명자는는 분자 구조가 어떻게 정보로 변환되고, 그에 따라 분자 간의 유사성이 어떻게 인식되는지를 결정하는 근본적인 역할을 한다. 따라서, 분자 설명자 공간의 적절한 선택은 활동 절벽의 존재를 감소시키거나 강조할 수 있으며, 독성학적 문제를 위한 완만하게 구르는 언덕과 리드 최적화 목적을 위한 험준한 풍경과 같은 분석 대상 문제에 대한 최적의 구조-활동 시나리오를 초래할 수 있다.

마지막으로, 기본 분자 구조와의 모호하지 않은 연결 때문에, 분자 설명자를 활용하여 기본 생물 논리 과정에 대한 기계적 통찰력을 얻을 수 있다. 이를 위해 대부분의 모델링 및 설명자 기반 프로토콜에 쉽게 해석할 수 있는 분자 설명자를 선택하는 것이 좋다.

또한, 모델 해석성은 "파시모닉" 모델, 즉 가능한 한 적은 수의 (그리고 가장 단순한) 설명자로 구성된 모델을 선택하여 육성할 수 있다.

마지막으로, 구조 해석과의 연계가 즉각적이지 않더라도, 인코딩된 구조 특성을 이해하는 것이 새로운 화학 및 생물학적 개념의 도입의 기초를 마련할 수 있다. 

Force Field

[컴퓨터를 이용한 신약개발] Force field
생명과학 신현길 (2018-04-09)

아래 사이트에서 해당 내용을 가져왔습니다. 참고하시면 좋겠습니다. 신현길님 감사합니다.
https://www.ibric.org/myboard/read.php?Board=news&id=292968&BackLink=L215Ym9hcmQvbGlzdC5waHA/Qm9hcmQ9bmV3cyZQQVJBMz0yMQ==

실제 단백질 구조는 고정되어 있는 것이 아니라 끊임없이 움직이고 있는데, 이러한 움직임은 ligand와 단백질간의 상호작용에도 영향을 미친다.

# Flexible Docking

이러한 단백질의 움직임을 시뮬레이션 하기 위한 목적으로 개발된 force field 들이 있는데,
force field를 적용해서 단백질 구조와 ligand 구조의 변화를 같이 변화시키는 docking 방법을 flexible docking이라 하고,

# Rigid Docking

단백질 구조를 고정시키고 계산하는 방법을 rigid docking이라 부른다.
(flexible docking이 꼭 force field를 사용해서 진행되는 것은 아니고 다른 방법들도 여러가지 존재하며, docking을 한 논문들을 보면 rigid docking을 수행한 경우가 대부분이다.)

Force field는 potential energy function과 각 함수에 사용되는 parameter set으로 구성된다.

1. Potential energy function

Potential energy function은 크게 bonded interaction과 nonbonded interaction으로 나눌 수 있다.

1.1. Bonded interaction


그림 1. Bonded interaction
Bonded interaction은 직접적으로 화학 결합을 하고 있는 원자 간의 상호작용을 계산하기 때문에 분자 내에서의 상호작용(intramolecular interaction)을 계산하는데 사용되며 bond stretching, angle bending, torsion, improper dihedral에 의한 상호작용을 합해서 계산한다. (그림1)


그림2. Cross term 예시
Cross term은 bond, angle, dihedral angle, improper dihedral angle을 조합해서 표현한 항을 의미한다. (그림2)

1.2. Nonbonded interaction


그림3. Nonbonded interaction
Nonbonded interaction은 직접적으로 화학결합을 하고 있지 않은 원자 간의 상호작용을 계산하기 때문에 분자 간의 상호작용(intermolecular interaction)을 계산하는데 주로 사용된다. (그림3) Electrostatic interaction과 Van der Waals interaction을 합해서 계산한다.

2. Parameter set

실제 force field를 이용해서 계산을 하면 입력된 분자구조에서 원자 쌍을 선택해서 에너지 계산이 진행되며 선택된 원자의 타입에 따라 다른 parameter가 선택되어 potential energy function을 계산하게 된다.

2.1. Atom typing (원자 타입 정의)

원자를 구분하는 방식을 atom typing 이라고 한다. 단순히 원자의 종류뿐 아니라 해당 원자의 주변에 위치한 원자들 종류 및 결합 방식에 따라 원자의 특성이 달라지기 때문에 원자는 주변의 화학적 환경에 따라 분류가 되며 각 원자 타입 별로 다른 parameter를 사용해서 계산이 진행된다. (예: amide group에 있는 carbonyl carbon과 carboxylate에 있는 carbonyl carbon은 서로 다른 타입) 원자 타입이 구체적일수록 계산이 정확해지지만 동시에 각각에 대한 parameter를 추가해야 하는 어려움이 발생한다.

2.2. Partial charge (부분 전하)

원자 타입과 별개로 각각의 원자들에 대한 부분전하가 할당이 되어야 계산을 할 수 있다. 각 원자 타입마다 미리 정의해 놓은 부분 전하를 할당하는 방법과 계산 시작과 동시에 전하를 일정한 규칙에 따라 할당하는 방법이 있다. 후자의 경우 초기 전하를 각 원자에 할당해준 뒤 결합을 하고 있는 원자의 타입에 따라 일정 전하를 나눠주면서 부분 전하를 결정하게 된다. 양자 계산을 통해 얻어진 부분 전하 값을 적용해서 계산을 하기도 한다.

Reference

1. Kenno Vanommeslaeghe et al., Molecular mechanics, Current pharmaceutical design, 2014, 20, 3281-3292

출처: [BRIC Bio통신원] [컴퓨터를 이용한 신약개발] Force field ( https://www.ibric.org/myboard/read.php?Board=news&id=292968 ) 

양자 계산 결과

참고 : [BRIC Bio통신원] [컴퓨터를 이용한 신약 개발] 양자 계산 결과 ( https://www.ibric.org/myboard/read.php?Board=news&id=304844 )

1.Quantum mechanics (QM) vs Molecular mechanics (MM)

몇 회 전에 소개했던 force field(FF)에 기반한 분자 동역학 (molecular mechanics, MM)과 양자역학(Quantum mechanics, QM)의 큰 차이점은 분자를 보는 관점이다.

1) MM
- 분자는 원자간의 화학결합을 통한 구조체(chemical structure)로 이루어져 있다.
- 분자를 구성하는 원자 간 상호작용을 계산한다.

2) QM
- 분자는 전자와 양성자로 구성되어 있다.
- 원자들 사이의 화학 결합이라는 개념도 존재하지 않는다.
- 분자 내 각 원자를 구성하는 전자와 양성자들 사이의 상호작용을 계산하는 관계로 MM보다 훨씬 더 많은 계산량을 필요로 한다.

MM에서의 분자 vs QM에서의 분자
그림1. MM에서의 분자 vs QM에서의 분자

 

2.계산 키워드

양자 계산에서는 주어진 계산 키워드에 따라 다른 값을 출력하게 된다.
따라서 원하는 계산을 수행하기 위해서는 적절한 키워드를 사용해야 한다.
사용할 수 있는 키워드 종류는 많기 때문에 각 양자 계산 프로그램에서 키워드에 대한 설명을 상세하게 제공 해주고 있다. 이를 참조해서 원하는 계산을 수행한다.

MOPAC input 계산 키워드 예시
그림2. MOPAC input 계산 키워드 예시

사용된 키워드에 따라 양자 계산 후 출력 정보가 달라진다.
예를 들어, GRAPHF 키워드가 있는 경우에만 확장자를 mgf로 하는 파일이 출력되며, 이 파일을 Jmol에서 읽어들이면 분자 오비탈 구조를 출력해볼 수 있다. 키워드가 특이하게 주어지지 않는 경우에는 mgf파일이 출력되지 않는다.

 

3.계산 결과값

계산 결과는 텍스트 파일로 출력이 된다. MOPAC에서는 기본적으로 2개의 output 파일을 주는데 다음과 같다.
1) arc파일 : 양자계산을 통해 계산된 여러가지 성질들을 요약하여 표시
- HOMO (Highest Occupied Molecular Orbital), LUMO(Lowest Unoccupied Molecular Orbital) 에너지 값만 출력된다.
Arc 파일 예시
그림3. Arc 파일 예시

2) out파일 : 계산 결과에 대한 보다 상세한 정보 제공
- 다른 분자 오비탈(Molecular Orbital, MO) 들에 대한 에너지 값들도 확인해 볼 수 있는데, EIGENVALUES 항목에서 MO에너지 값들 전체를 보여준다.MOPAC output

그림4. MOPAC output (.out 파일)

 

그림4에서 빨간 상자로 표시된 부분은 SUPER 키워드를 입력했기 때문에 출력되는 값으로 분자의 반응성을 보기 위해 많이 사용되는 descriptor 값이다.

 

참고자료

1.  http://openmopac.net/manual/allkeys.html
2.    https://www.msg.chem.iastate.edu/GAMESS/GAMESS_Manual/input.pdf 
3.    http://openmopac.net/manual/super.html

출처: [BRIC Bio통신원] [컴퓨터를 이용한 신약 개발] 양자 계산 결과 ( https://www.ibric.org/myboard/read.php?Board=news&id=304844 ) 

화합물 구조 표현 방식 및 관련 소프트웨어

본 내용은 아래 사이트에서 신현길님께서 작성하신 내용을 가져와서 정리한 내용입니다.
신현길 (안전성평가연구소 독성정보연구그룹)
https://www.ibric.org/myboard/read.php?id=279133&Board=news

[컴퓨터를 이용한 신약 개발 (CADD)] 화합물 구조 표현 방식 및 관련 소프트웨어
컴퓨터를 이용한 신약 개발을 하거나 소재개발을 하는 경우에 있어 가장 먼저 해야 하는 작업은 단백질 구조 또는 화합물 구조 정보를 분석에 적합하게 표현하는 방법이다. 이러한 측면에서 필요한 작업이 여러가지가 있지만 화합물 구조를 표현할 수 있는 프로그램과 화합물 구조 파일 형식이 중요하다.

 

1. 화합물 구조 파일 형식


먼저 화합물 구조를 표현하는 파일 형식이 다양하다. 대표적으로는 다음과 같다.
1) sdf
2) smiles
3) inchi

2. 화합물 구조정보 확보


1) 화합물 구조 다운로드
- PubChem, ChemSpider 와 같은 데이터베이스에서 검색해서 다운 받을 수 있다.

2) sdf란?
- sdf는 structure-data file의 약어로 확장자가 sdf인 파일을 의미한다.

3) sdf파일의 형식
- 대상 파일을 오픈하면 다음과 같은 형식을 갖고 있다.

SDF 파일 형식
<그림1. SDF 파일 형식>

sdf파일 안에는 분자구조가 위 그림과 같은 형식으로 저장되는데, 여러가지 분자구조도 함께 저장할 수 있다. 다수의 분자구조를 저장하는 경우 ‘$$$$’ 표시로 각 분자구조를 구분해준다.

Acetaminophen의 smiles코드는 Oc1ccc(NC(=O)C)cc1 이고,
InChi는 InChI = 1S / C8H9NO2 / c1-6(10)9-7-2-4-8(11)5-3-7/h2-5,11H,1H3,(H,9,10) 이다.

3. 화합물 구조 관련 소프트웨어


화합물 구조를 표현하는 방식이 여러가지 있지만, sdf(structure data file)가 주로 사용되는 구조 파일 형식이라고 볼 수 있다. sdf파일을 입력받아서 구조를 보여줄 수 있는 프로그램으로 여러 가지가 있는데, pymol이 유명한 프로그램 중 하나이다.

 

1) Pymol (화합물 구조 표현 프로그램)

Pymol에서 sdf파일을 읽은 화면
<그림2. Pymol에서 sdf파일을 읽은 화면>

2) Jmol (화합물 구조 표현 프로그램)

이 프로그램도 화합물 구조를 보여줄 수 있는데,
특별히 양자계산을 통해 화합물의 전자구조에 대한 정보가 있는 경우,
분자 오비탈도 출력해서 보여줄 수 있다
.
(HOMO는 Highest Occupied Molecular Orbital의 약어로 전자가 채워져 있는 오비탈 중에서 가장 에너지가 높은 오비탈을 의미한다.)

Jmol에서 출력된 Acetaminophen의 HOMO 에너지
<그림3. Jmol에서 출력된 Acetaminophen의 HOMO 에너지>

3) Marvin sketch (화합물 그리기 프로그램)

화합물을 그릴 수 있는 프로그램으로는 Marvin sketch가 있다.
ChemAxon이라는 회사에서 제공하는 툴인데, 이 회사에서 개발된 다른 툴들은 유료지만,
Marvin sketch는 무료로 사용이 가능하다.
화합물 구조에 대한 그림만 있고, 구조 정보를 찾을 수 없는 경우에는,
분자 구조를 직접 그리고 원하는 파일 형태로 저장해서 사용할 수 있다.

화합물 구조 그리는 툴
<그림4. Marvin sketch, 화합물 구조 그리는 툴>

 

4. Open babel (파일 형식 변환)

open babel이라는 소프트웨어는 화합물의 파일 형식을 바꾸기 위해서 많이 사용되는 툴이다.

Open Babel에서 acetaminophen sdf파일을 inchi로 변환하는 화면
<그림5. Open Babel에서 변환 : acetaminophen sdf파일 ->  inchi>

위 그림은 Acetaminophen sdf파일을 InchI (International Chemical Identifier)로 변환하는 과정이다.
1) 변환하고 싶은 파일 형식을 input format에서 지정
2) output format 에서 원하는 파일 형식을 선택
3) 변환 실행 : 해당 파일 형식에 맞춰서 변환된 결과 출력

 

참고자료

1) https://pubchem.ncbi.nlm.nih.gov/
2) http://www.chemspider.com/
3) /myboard/read.php?id=258583&Board=news
4) https://www.pymol.org/
5) http://jmol.sourceforge.net/
6) https://www.chemaxon.com/products/marvin/marvinsketch/
7) http://openbabel.org/wiki/Main_Page

출처: [BRIC Bio통신원] [컴퓨터를 이용한 신약개발 (CADD)] 화합물 구조 표현 방식 및 관련 소프트웨어 ( https://www.ibric.org/myboard/read.php?Board=news&id=279133 ) 

분자 표현방법

 

1. 고전적 분자 설명자(MD)

정확한 구조/화학 특성(또는 서로 다른 복잡성의 특성 집합)을 하나의 숫자로 인코딩하도록 설계되었다. 따라서 각 설명자를 단독으로 사용하거나 다른 설명자와 함께 사용할 수 있다.
고전적인 설명자는 다양한 측정 척도를 가질 수 있다.
예를 들어,
1) 정수(예: 원자 유형의 이중 결합 및 카운트 수)
2) 이진수(예: 주어진 하위 기관의 존재/부재) 
3) 연속 값(예: 분자량)을 가질 수 있다.
MD(Molecular Descriptor)는 다음 단락에서 설명하는 확장, 축소 및 선택 기법에 따라 달라질 수 있다. 대부분의 고전적 분자 설명자는 일반적으로 어느 정도 해석이 가능하며, 어떤 경우에는 구조적 특성 집합(즉, 가역 디코딩)에 다시 매핑하여 복구할 수 있다.

2. 이진 핑거프린트(FP)

이진 핑거프린트(FP)는 분자의 모든 구조적 조각들을 이진 형태로 완전히 표현한다.  핑거프린트는 고전적 분자 설명자와는 달리, 분자 내 특정 하부구조의 유/무를 나타내는 일련의 이진수(비트)로 2D 분자구조에 대한 정보를 인코딩하며 전체로(as a whole) 사용해야만 의미가 있다.
일반적으로 패턴 집합(예: 분지 branched/선형 linear 조각 또는 하위 구조)은 주어진 분자에서 생성되며, 패턴의 존재와 부재는 주어진 길이의 문자열 내에서 각각 "1" 또는 "0"으로 표시된다. 해싱 알고리즘이 종종 적용되어 동일한 비트에서 여러 피쳐가 "충돌"하고, 분자 피쳐와의 일대일 대응성 정도가 손상된다.
핑거프린트를 통해 분자 유사성 및 다양성 계산을 빠르게 계산할 수 있지만 정확한 구조적 특징과 즉시 연결할 가능성은 부족하다.  
그럼에도 불구하고 FP로 인코딩된 분자 조각의 빈도는 관찰된 생체 활동 패턴의 기초가 되는 구조적 특징을 해석하는 데 사용할 수 있다.
고전적인 이진 핑거프린트의 변형으로는 조각의 존재여부 벡터가 아닌 분자를 조각차원의 발생빈도에 해당하는 카운트 벡터로 나타내는 카운트 기반 핑거프린트(count-based fingerprints)가 있다. 카운트 핑거프린트는 이진 핑거프린트에 대한 대안으로 인식되어왔지만, 이진 지문에 대한 체계적인 개선은 아직 입증되지 않은 측면이 있다.

동일 분자에 대한 다양한 표현

image

분자 설명자에 의해 캡처되는 정보는 단순한 벌크 특성에서 복잡한 3차원 정의 또는 하위 구조 주파수까지 다양하다. 특히 다음과 같이 주어진 분자를 표현하기 위해 다양한 수준의 복잡성(“차원”)을 사용할 수 있다.

0차원


가장 간단한 분자 표현은 화학 공식, 즉 화학 원소의 규격과 분자 내에서의 발생빈도 이다.  예를 들어 2,3,7,8-테트라클로로디벤조다이옥신(인간과 생태계에 독성으로 알려진 오염물질)의 화학식은 C12H4Cl4O2로 탄소 12개, 수소 4개, 염소 4개, 산소 2개 원자의 존재를 나타낸다.
이러한 표현은 원자 연결성 및 결합 유형에 대한 지식과는 무관하다. 따라서 화학식을 통해 얻은 분자설명자를  0차원 설명자라고 하며 벌크(bulk) 특성을 포착한다. 0D 설명자는 계산과 해석이 매우 간단하지만, 낮은 정보량과 높은 변성도를 보여준다. 즉 서로 다른 분자에 대해 동일한 값을 갖을 수 있게 된다. 0D 설명자의 몇 가지 예제로서 원자 카운트(예 : 탄소 원자수), 분자량, 원자 특성의 합 또는 평균(예 : 원자 반데르 발스 부피) 등이 있다.

 

1차원


이 표현에 따르면, 분자는 기능군이나 원자 중심 조각과 같은 하위 구조의 집합으로 인식된다. 이 표현은 분자 구조에 대한 완전한 지식을 필요로 하지 않는다. 분자의 1D 표현은 파생된 설명자에 반영되며, 일반적으로 2진수(특정 하위 구조의 존재/부재) 또는 발생 빈도로 표현된다.

 

2차원


이 표현은 화학 결합의 존재와 성질 측면에서 원자가 어떻게 연결되어 있는지도 고려함으로써 1D 표현에 추가 정보 수준을 추가한다. 일반적으로 분자는 그래프로 표현되는데, 꼭짓점(vertexes)은 원자이고 엣지(edges)는 결합이다. 그래프 표현에서 분자 위상(topology)의 몇 가지 숫자형태의 양자수(quantifiers)가 수학적으로 직접적이고 모호하지 않은 방법으로 도출된다.  이러한 양자수는 일반적으로 위상 지수(TI, topological indices)로 알려져 있다. TI는 위상 특성(예: 인접, 연결)을 인코딩하며 일반적으로 크기, 모양, 대칭, 분기 및 순환과 같은 구조적 특성에 민감하다.  종종, 원자의 특정한 화학적 특성도 고려된다.
예를 들어 질량(mass) 및 편광성 또는 수소 결합 기증자/수용자의 존재도 고려한다. 따라서 위상 논리 지수는 다음과 같이 두 가지 범주로 구분할 수 있다.
(1) topostructural indices(위상 구조 지수)
원자 사이의 인접 및 관통 결합 거리에 대한 정보만 인코딩하는 위상 구조 지수
(2) topochemical indices(위상 화학 지수)
위상뿐만 아니라 화학적 정체성과 교배 상태와 같은 원자의 특정 화학적 특성에 대한 정보를 정량화하는 위상 화학 지수

 

3차원


원자의 형태, 연결성, 인접성의 측면뿐만 아니라 원자의 공간 구성이 특징인 공간 측면의 기하학적 사물로 인식함으로써 추가적으로 복잡성이 커질 수 있다.
즉, 분자는 원자 유형과 원자들의 x-y-z 좌표로 정의된다.
3D 표현에서 파생된 설명자는 정보 함량이 높으며 제약 및 생물학적 특성을 모델링하는 데 특히 유용할 수 있다.

사용자는 3D 표현을 다룰 때 다음과 같은 분자의 지오메트리 최적화와 관련된 여러 문제를 염두에 두어야 한다.
(1) 좌표 값에 대한 최적화 방법에 따른 영향도
(2) 고도로 유연한 분자에 대한 둘 이상의 유사한 최소 에너지 컨포머(conformer)의 존재
(3) 생물 활성(bioactive) 지오메트리와 최적화된(optimized) 지오메트리의 차이, 분자 내 자유롭게 회전 가능한 결합 개수에 따른 변형 정도

이러한 이유로 3D 설명자를 사용할 경우 비용/효익이 경우에 따라 달라지며, 따라서 신중하게 평가해야 한다.

 

4차원

분자 지오메트리 외에도 "4차원"이 도입될 수 있으며, 일반적으로 생물학적 수용체의 분자 및 활성 부위 사이의 상호작용을 정량적으로 식별하고 특징짓는 것을 목표로 한다. 
예를 들어, 그리드 기반 표현은 분자를 수천 개의 균일한 그리드 포인트의 3D 그리드에 배치하고 프로브(스테릭, 정전기, 친수성 등)를 사용하여 분자 표면을 매핑함으로써 얻을 수 있다.
분자는 프로브(probe)와의 분자 상호작용을 통해 표현할 수 있다(예: 비교 분자장 분석 [CoMFA] 및 비교 분자 유사성 지수 분석 [CoMSIA] 설명자).
4D 표현은 "앙상블 기반"도 가능하다. 즉, 훈련 세트의 다양한 공간 특성의 앙상블을 통해 또는 각 리간드를 응모, 양성자 상태 및 방향의 앙상블로 표현함으로써, 적합성 유연성과 정렬의 자유를 포함할 수 있다.

 

5차 이상의 차원(예 : 5D - QSAR 및 6D - QSAR) 보다 높은 차원을 모델링 문제에 추가할 수도 있다.

일반적으로 설명자(descriptor)는 선택한 분자 표현에 근거하여 계산한다. 분석 대상 문제에 대한 선행 지식 및/또는 설명력(performance)에 따라 선택할 수 있다.  분자 설명자는 설계의 기본 원리(rationale underlying design)에 따라 그룹화할 수 있으며, 이는 계산 문제와 필수 모델링 단계에 대한 적용 가능성에 영향을 미친다. 특히, 분자 설명자는 다음과 같이 고전적 분자 설명자(descriptors)와 이진 핑거프린트(fingerprints)에 따라 구분할 수 있다. 

딥러닝 관련 상식

1. GAN아키텍처는 생성된 이미지에 대한 통제를 거의 또는 전혀 제공하지 않는다. InfoGAN은 이러한 부분을 보완하여 생성된 이미지의 다양한 속성을 제어할 수 있도록 한다.
1) 정보 이론의 개념을 사용해서 노이즈 항을 출력에 대해 예측할 수 있고
2) 체계적인 제어를 제공하는 잠재 코드(Latent Code)로 변화시킨다.

2. MLPerf는 머신러닝 소프트웨어 프레임워크로서 머신러닝 하드웨어 가속기, 머신러닝 클라우드 플랫폼의 성능을 측정하기 위한 머신러닝 벤치마크 제품군이다.

3. 최초의 컨볼루션 망 중 하나인 AlexNet은 8개의 계층으로 구성된다. 처음 5개는 최대 풀링 계층이 있는 컨볼루션이고, 마지막 3개는 완전 연결되어 있다. 이와는 달리 레지듀얼 망(ResNet)은 이전 계층으로 직접 공급한다는 흥미로운 아이디어에 기반을 두고 있다.

4. Callbacks은 훈련 중에 동작을 확장하거나 수정하고자 모델로 전달하는 객체다. tf.keras에서 일반적으로 사용되는 몇 가지 유용한 콜백이 있다.

5. 긍정으로 예측한 것 중 실제로 참인 것의 비율을 우리는 정밀도(Precision)이라고 정의한다.  TP / (TP + FP)

6. 사전 학습된 모델이나 특징을 지도 학습 과제에 이용하는 것을 다운스트림 과제라고 정의한다.

7. 원시 오디오 파형을 생성하는 심층 생성 모델을 WaveNet이라고 한다.

8. LeNet은 ConvNets군에 속하며, 최대 풀링 작업을 통해 더 낮은 계층에서 컨볼루션 연산을 교대 수행할 수 있는 구조이다.

9. Xception망은 깊이별 컨볼루션과 점별 컨볼루션이라는 두 가지 기본 블록을 사용한다. 깊이별 컨볼루션은 채널별 n*n 공간 컨볼루션이다. 점별 컨볼루션은 1*1 컨볼루션이다.

10. nove2vec 임베딩 모델은 그로버와 레스코벡에 의해 확장 가능한 방법으로 그래프에서 노드의 특징을 학습하는 기법으로 제안됐다. 이 방법은 그래프에서 다수의 고정 길이 랜덤 워크를 실행함으로써 그래프 구조의 임베딩을 학습한다.

11. tf.hub는 즉시 사용할 수 있는 사전 훈련된 모델 모음을 말한다. tf.data는 매우 효율적인 방법으로 모델을 로드하는데 사용할 수 있다. 

MTS에 대해

# MTS란?

1) MTS란 마할라노비스 다구치 시스템을 통해 이상탐지에 미치는 변수들의 영향력을 확인하고 이들을 통해 효율성이 높은 이상 탐지 모델을 제시하는 것을 말한다. 따라서 상관관계가 있는 적은 수의 데이터로 예측 정확성을 높일 수 잇는 시스템이다.

2) 패턴인식 시스템 중 하나로 서로 비교되는 두 그룹을 하나의 공통지표인 마할라노비스 거리(MD : Mahalanobis Distance)로 나타내고, 품질공학의 SN비(Signal to Noise)개념을 적용하여 패턴인식에 중요한 항목과 중요하지 않은 항목을 선별하여 예측 능력과 효율성이 높은 패턴 인식 시스템을 개발하는 방법이다.

# MTS의 장점

적은 수의 데이터로 유용한 변수들을 선정할 수 있기 때문에 비용절감과 효율성의 측면에서 의미가 있다.

# MTS의 필요성

공정을 모니터링하기 위해서는 여러개의 다양한 센서를 설치한 후 해당 센서에서 취합한 데이터를 이용하여 이상여부를 감지 및 대응하게 된다.

하지만 모니터링 데이터 중에서 특정 센서가 공정의 이상탐지에 영향을 못미치는 변수라면 해당 센서 데이터를 모니터링하고 수집하는 것이 불필요한 작업일 수 있다.

따라서 효율적이고 효과적인 공정관리 시스템을 구축하기 위해서는 센서들이 공정의 합/불 판정에 미치는 영향이 어떠한지 확인해야 한다.

# MTS에서 중요한 점

- 마할라노비스 공간을 잘 정의해야 한다. 이를 위해서는 정상그룹을 대상으로 마할라노비스 공간을 구성해야 한다.

- 일반적으로 정상그룹(양품)과 비정상그룹(불량품)을 구분하는 시스템을 개발해야 할 때 더 관찰하기 쉬운 것은 정상그룹이다.

치수가 너무 커서 불량인 제품이 있고 무게가 낮아서 불량인 제품이 있는 것처럼 비정상 그룹 내에는 다양한 패턴이 존재한다.

하지만 정상그룹은 대체로 상당히 닮아 있고 균일한 특성을 갖고 있다.

# 이상감지 기준 개발(마할라노비스 공간 구성 -> 거리 계산 -> Threshold값 설정)

1) 전문가와 함께 온전한 정상그룹을 대상으로 마할라노비스 공간을 만든다.

- 정상그룹의 시료 안에 비정상 그룹의 시료가 혼입된다면 오염된 데이터로 인해 마할라노비스 공간이 단위 공간으로서 적합하지 않게 된다. 따라서 반드시 해당 분야의 전문가와 함께 정상그룹의 시료를 선정해야 한다.

2) 정상그룹의 시료수가 비정상 그룹의 시료수보다 많아야 한다.

- 정상그룹의 패턴을 정확하게 파악하기 위해서는 비정상 그룹의 시료수보다 많은 시료를 수집해야 한다.

3) 측정항목은 두 그룹(정상, 비정상)에 대해 모두 동일해야 한다.

4) 정상그룹과 비정상 그룹에 대해 표준화 작업을 한다.

- 정상그룹의 평균, 표준편차를 이용하여 표준화를 수행한다.

-> 다차원 공간의 원점을 기준점으로 하고 마할라노비스 거리 평균이 1인 단위 공간을 만들기 위함이다.

clip_image001

- k : 측정 항목의 개수

- n : 측정 시료의 개수

- m : k번째 측정항목의 평균

- s : k번째 측정항목의 표준편차

- 비정상 그룹은 정상그룹의 값(평균, 표준편차)을 이용하여 표준화를 수행한다. 즉 비정상그룹을 정규화된 정상그룹의 기준점과 같아지게 표준화를 하여 두 그룹간의 마할라노비스 거리비교를 쉽게 수행할 수 있도록 한다.

-> 반드시 정상그룹의 평균, 표준편차를 이용하여 표준화 작업을 수행해야 한다.

5) 마할라노비스 거리 계산

- 정상그룹과 비정상 그룹의 마할라노비스 거리를 계산한다.

- j번째 측정 시료의 마할라노비스 거리 계산식은 다음과 같다.

clip_image002

R-1은 측정항목들간의 상관계수 행렬의 역행렬으로 이를 이용하여 n개 시료에 대한 마하라노비스 거리를 계산할 수 있게 된다.

공분산행렬을 사용하는 기존의 마할라노비스 시스템과 다르게 MTS에서는 상관행렬을 사용한다.

-> 상관행렬을 사용하게 되는 경우 데이터 스케일에 영향을 덜 받아 더 균질한 정상그룹의 마할라노비스 거리 집합을 얻을 수 있다.

6) Threshold값 설정

- 정상/비정상 그룹의 마할라노비스 거리를 구분짓는 기준값을 설정한다.

-> 일반적으로 정상그룹의 마할라노비스 거리는 작게 나오고, 비정상그룹의 마할라노비스 거리는 크게 형성된다.

- Threshold값 설정단계는 정상/비정상 그룹을 가장 잘 나눌 수 있는 값을 찾는 과정이다.

-> Threshold값을 너무 낮게 할 경우 정상그룹에 속한 시료가 비정상그룹으로 판정될 가능성이 높아지며, 높게 설정할 경우 반대의 Risk가 존재한다.

# 측정항목별 SN비 이득을 계산

1) SN비 이득계산

- 예측 능력이 있는 중요한 항목들을 선정한다.

2) 2수준계 직교배열표를 이용한 중요항목 선정

- 중요한 항목 선정을 위해서는 직교배열표를 사용한다.

-> 측정항목별로 생기는 수많은 실험횟수가 직교성을 통해 줄어들게 된다.

3) SN 이득율 계산

- 해당 측정항목을 담을 수 있는 직교배열표를 이용하여 망대특성의 SN비를 계산하고 예측 능력을 분석한다.

- 직교배열표를 이용하여 해당개수의 실험조건을 얻은 후, 각각의 실험조건에 대한 마할라노비스 거리를 계산한다.

- 각각의 실험조건에는 Level1값과 Level2값이 있으며 이에 대한 마할라노비스 거리를 계산하여 해당 실험조건에 대한 SN비를 계산한다.(SN Gain = avg(SN비1) - avg(SN비2))

4) SN 이득율 계산결과 해석

- SN Gain > 0 : 진단에 영향을 끼치는 변수

- SN Gain < 0 : 진단에 영향을 미치지 않는 변수 

그래프기반분석

그래프를 사용하여 데이터를 표현하는 방법은 다음과 같다.
1. 추상적인 개념을 다루기에 적합하다.
1) 관계 데이터
2) 상호작용 데이터
그래프를 그려보면 이러한 추상적인 개념을 시각화할 때 도움이 된다.

2. 복잡한 문제의 표현
복잡한 문제를 더 간단한 표현으로 단순화할 수 있다.

3. 실생활에 적용할 분야가 많다.
소셜네트워크, 미디어의 영향, 바이러스 확산 등을 연구하고 모델링할 때 사용할 수 있다. 소셜 네트워크 분석은 데이터 과학에서 그래프 이론을 사용하는 가장 잘 알려진 분야이다. 최근 뉴스에서 코로나 19확산, 이동경로를 나타내고 분석할 때 자주 등장한다.

4. 기존 그래프 분석의 문제점
기존의 그래프 분석방법은 알고리즘을 적용하기 전에 입력 그래프에 대한 사전 지식이 필요하다. 따라서 그래프 자체를 연구하는 것이 불가능하고 그래프 레벨에서의 예측이 불가능하다.
1) 검색알고리즘(BFS, DFS 등)
2) 최단 경로 알고리즘(Dijkstra 알고리즘, A+알고리즘 등)
3) 신장 트리 알고리즘(PRIM알고리즘, Kruskal알고리즘 등)
4) 클러스터링 방법(연결성분, 클러스터링 개수)

5. Graph Neural Network
GNN은 이름에서 알 수 있듯이 그래프에 직접 적용할 수 있는 신경망이다.
점, 선, 그래프 Level에서의 예측 작업에 사용된다.
논문으로 살펴볼 수 있는 방법은 3가지가 있다.
1) Recurrent Graph Nueral Network
2) Spatial Convolutional Network
3) Spectral Convolutional Network

6. GNN의 핵심
점이 이웃과의 연결에 의해 정의된다는 점이다.
어떤 점이 이웃과 연결이 없다면 해당 점은 고립된 상태로 아무런 의미를 갖지 못한다는 것을 의미한다.

7. GNN의 예측업무
1) 학습
GNN은 주로 연결관계와 이웃들의 상태를 이용하여 각 점의 상태를 업데이트하며 이를 학습한다고 정의한다. 또한 마지막 상태를 통해 예측 업물 수행한다.
2) 마지막 상태
일반적으로 마지막 상태를 node embedding이라고 한다.

 

 

 

아래내용은 정리가 필요한 부분입니다.
Shanon HongAn Introduction to Graph Neural Network(GNN) For Analysing Structured Data의 글을 Jeong Jisu님이 정리한 글입니다.

 

 

 

Recurrent Graph Neural Network

오리지날 GNN 논문 ‘The Graph Neural Network Model’에서 소개되었듯이 Recurrent GNN은 Banach Fixed-Point Theorem을 기초로 만들어졌다. Banach Fixed-Point Theorem은 다음과 같다.

 

k가 크면, x에 매핑 T를 k번 적용한 값과 k+1번 적용한 값이 거의 같다는 의미로 이해하면 된다.

Recurrent GNN은 입력과 출력이 아래와 같은 함수 f_w를 정의하여 점의 상태를 업데이트 한다.

 

여기에서, l_{n}는 점 n의 feature, l_{co[n]}은 점 n과 연결된 선들의 feature, l_{ne[n]}은 점 n과 연결된 점들의 feature, x_{ne[n]}은 점 n과 연결된 점들의 상태를 의미한다.

 

An illustration of node state update based on the information in its neighbors. Figure from “The Graph Neural Network Model”.

k번 반복을 통한 업데이트 후 마지막 상태(x_n)와 특징(l_n)을 사용하여 결과값(o_n)을 출력한다. 즉, o_n = g_w(x_n, l_n)이 된다.

함수 f_w, g_w에 대한 자세한 내용은 논문에서 확인할 수 있다.

Spatial Convolutional Network

Spatial Convolutional Network의 아이디어는 이미지 분류와 이미지 영역 구분에 많이 쓰이는 Convolutional Neural Network(CNN)의 아이디어와 비슷하다.
간단히 말하면, 이미지에서 convolution의 아이디어는 학습 가능한 필터를 통해 중심 픽셀의 주변 픽셀을 합치는 것이다. Spatial Convolution Network의 핵심 아이디어는 이 아이디어에서 주변 픽셀 대신 연결된 점의 특징을 적용한 것이다.

 

Figure from “A Comprehensive Survey on Graph Neural Networks

Spectral Convolutional Network

Spectral Convolutional Network는 그래프 신호 처리 이론을 기반으로 고안됐으며 위에 설명한 것들보다 더 수학적 기반을 가지고 있다. 이 글에서는 최대한 쉽고 간략하게 느낌적인 느낌을 설명하도록 하겠다.

‘Semi-Supervised Classification with Graph Convolutional Networks’(논문링크, 블로그링크)에서 두 층으로 된 신경망을 제안하는데 아래 식으로 정리할 수 있다.

 

여기에서 Â는 인접행렬 A를 약간 변형한 것이라고 생각하면 된다. (물론, Â의 정의는 중요하고 ‘spectral’을 붙인 이유이긴 한데 논문에서 각자 읽도록 하자.) 위 식의 형태는 머신러닝에 익숙하다면 본적이 있을 것이다. fully-connected layer 두 개를 연결한 식에선 학습 가능한 행렬 W만 있는데 위 식엔 Â이 붙어있다. 자세한 내용은 논문을 보면 알 수 있고, 여기에선 인접행렬의 변형과 feature matrix를 곱하는 것이 어떤 의미일지만 가볍게 맛보자.

 

Example of a graph with a feature assigned to each node. Figured by the original author.

점이 4개인 그래프를 생각해보자. 위의 그림처럼 연결되어있고 점 옆에 있는 수들은 그래프의 feature를 나타낸다. 아래처럼 대각선을 1로 채운 인접행렬과 feature matrix를 쉽게 얻을 수 있다.

 

Example of the adjacency matrix and feature matrix. Figured by the original author.

이제 두 행렬을 곱할 것이다.

 

Example of graph convolution by matrix multiplication. Figured by the original author.

가장 오른쪽에 있는 행렬이 곱한 결과이다. 곱한 후 [점 1]의 feature를 보자. [점 1] 자신과 이웃인 [점 2], [점 3]의 feature를 합한 값임을 알 수 있다. [점 4]는 [점 1]의 이웃이 아니므로 [점 4]의 feature는 더해지지 않았다. 인접행렬의 성질에 의해 곱한 결과가 자신과 이웃의 feature 합이 되었다.

따라서, Spectral Convolutional Network와 Spatial Convolutional Network는 다른 내용을 기초로 하고 있지만 비슷한 연산 과정을 거친다. 현재 대부분의 Convolutional GNN이 이런 식이다. 점의 정보를 공유하고 업데이트를 하는데 어떻게 전달할 것인지에 대한 연구가 많이 진행되고 있다. 어떻게 전달할지 정의하는 함수를 message-passing 함수라고 한다. ‘Neural Message Passing for Quantum Chemistry’에서 아래 세 가지 함수를 정의하여 GNN을 Quantum Chemistry에 적용하는 연구를 했다. 자세한 정의는 생략하지만 첨자와 기호를 보면 대략 어떤 식인지 추측할 수 있다.

 

GNN은 무엇을 할 수 있는가?

GNN이 해결할 수 있는 문제는 크게 세 가지로 나눌 수 있다.

  1. Node Classification
  2. Link Prediction
  3. Graph Classification

Node Classification

Node embedding을 통해 점들을 분류하는 문제다. 일반적으로 그래프의 일부만 레이블 된 상황에서 semi-supervised learning을 한다. 대표적인 응용 영역으로는 인용 네트워크, Reddit 게시물, Youtube 동영상이 있다.

Link Prediction

그래프의 점들 사이의 관계를 파악하고 두 점 사이에 얼마나 연관성이 있을지 예측하는 문제다. 대표적인 예로 페이스북 친구 추천, 왓챠플레이(유튜브, 넷플릭스) 영상 추천 등이 있다. 물론 저들이 GNN을 실제로 쓰는지는 모르고 우리도 쓰는지 안 쓰는지 비밀이다. 궁금해요? 궁금하면 클릭. 영화와 유저가 점이고 유저가 영화를 봤으면 선으로 연결을 해준 그래프를 생각할 수 있다. 선으로 연결되지 않은 영화, 유저 쌍 중에 연결될 가능성이 높은 쌍을 찾아서 유저가 영화를 감상할 가능성이 높다고 예측할 수 있다.

Graph Classification

그래프 전체를 여러가지 카테고리로 분류하는 문제이다. 이미지 분류와 비슷하지만 대상이 그래프라고 생각하면 된다. 분자 구조가 그래프의 형태로 제공되어 그걸 분류하는 산업 문제에 광범위하게 적용할 수 있으며 따라서 화학, 생의학, 물리학 연구자들과 활발히 협업을 하고 있다.

실제 응용 사례

GNN으로 어떤 일을 할 수 있는지 위 내용을 대략 이해했다면 실제로 어떤 일이 일어났는지 궁금할 것이다. 아래 논문들을 통해 각자의 분야에서 GNN 어떻게 사용할지 조금 더 감 잡을 수 있길 바란다.

Scene graph generation by iterative message passing

CNN에 기반을 둔 많은 방법들이 이미지에서 물체를 탐지하는데 최첨단 성능을 달성했지만 그 물체들 사이의 관계까지는 알지 못한다. CNN으로 탐지된 물체들을 아래 그림의 방법을 통해 scene graph를 만들어서 관계를 파악할 수 있다.

 

Image generation from scene graphs

위에서 언급한 작업의 반대되는 작업도 할 수 있다. 기존 이미지 생성 방법은 Generative Adversarial Network이나 Autoencoder를 사용하였다. 아래 그림의 방법을 사용하면 scene graph로부터 이미지를 생성할 수 있다.

 

Graph-Structured Representations for Visual Question Answering

Visual Question Answering 문제에도 그래프를 도입하여 성능을 끌어올릴 수 있다. 아래 그림에 간략히 요약되어 있는데, 장면과 질문으로부터 각각 scene graph와 question graph를 만든 후 pooling과 GRU를 적용한다.

 

Machine Learning for Scent: Learning Generalizable Perceptual Representations of Small Molecules

머신러닝이 시각, 청각을 넘어서 후각에 진출하고 있다. 분자 구조를 그래프로 변환하고 GNN을 거치면 138개의 향기를 예측할 수 있다고 한다. 기존에는 분자 구조를 분석할 때 Mordred나 fingerprint 방법을 사용했는데 요즘엔 graph neural network를 사용해서 분자 주고를 분석할 수 있다.

 

Graph Convolutional Matrix Completion

유저-영화 평점 행렬이 있을 때 기존 평점을 기반으로 message passing function을 사용해서 아직 평가가 없는 유저-영화 쌍의 예상 평점을 계산한다.

 

 

마무리

사람들은 항상 머신러닝을 ‘블랙박스'로 본다. 대부분 머신러닝 알고리즘은 훈련 데이터의 feature를 통해서만 학습하지만 그 과정의 이유는 모른다. 그래프를 사용하면 학습을 하는 흐름에 논리를 조금 뒷받침할 수 있고 더 자연스러운 과정이라고 생각할 수 있다.

GNN은 여전히 비교적 새로운 분야이며 더 많은 주목을 받을 가치가 있다. 그래프 데이터를 분석할 때 뛰어날 뿐만 아니라 다른 도메인에도 영향을 주고 있다. 이 글이 독자들의 전공 분야, 관심 있는 분야에 ‘GNN을 한번 적용해볼까?’라는 생각을 들게 해주길 바란다.

참고자료

  1. F. Scarselli, M. Gori, “The graph neural network model,” IEEE Transactions on Neural Networks, 2009
  2. Z. Wu, S. Pan, F. Chen, G. Long, C. Zhang, Philip S. Yu, “A Comprehensive Survey on Graph Neural Networks”, arXiv:1901.00596
  3. T. N. Kipf and M. Welling, “Semi-supervised classification with graph convolutional networks,” in Proc. of ICLR, 2017
  4. J. Gilmer, S. S. Schoenholz, P. F. Riley, O. Vinyals, and G. E. Dahl, “Neural Message Passing for Quantum Chemistry”, in Proc. of ICML, 2017
  5. D. Xu, Y. Zhu, C. B. Choy, and L. Fei-Fei, “Scene graph generation by iterative message passing,” in Proc. of CVPR, 2017
  6. J. Johnson, A. Gupta, and L. Fei-Fei, “Image generation from scene graphs,” in Proc. of CVPR, 2018
  7. D. Teney, L. Liu and A. van den Hengel, “Graph-Structured Representations for Visual Question Answering”, in Proc. of CVPR, 2017
  8. B. Sanchez-Lengeling, J. N. Wei, B. K. Lee, R. C. Gerkin, A. Aspuru-Guzik, and A. B. Wiltschko, “Machine Learning for Scent: Learning Generalizable Perceptual Representations of Small Molecules”, arXiv: 1910.10685
  9. R. van den Berg, T. N. Kipf, and M. Welling, “Graph Convolutional Matrix Completion”, arXiv:1706.02263

 

태그

2025년 가열재생방식 가치기반 가치기반학습 가치이터레이션 강화학습 강화학습기초이론 강화학습방법 강화학습종류 개나리 개념 개발업무 최적화 건강 건식전극코팅 검사 검사기 검사장비 검사장비 양산라인 투입 절차 검색엔진최적화 검색키워드 검출율 경쟁력 경험재플레이 고체전해질적용 공부방법 공정간 에너지 흐름 공정내 에너지 절감 기술 과검율 관절 구글검색키워드 군마트 극초박형 셀제조 기계학습 기내반입 기대값 기초용어 나스닥 남녀사랑 냉각시스템 네이버 네이버 검색 키워드 분석 단백질 답변거부능력 더 원씽 덕담 동적계획법 듀얼브레인 드로스 딥시크 레이저노칭 문제점 로봇산업 롤투롤 생산공정 리액트히터 리튬산업 마르코프과정 마르코프의사결정 막걸리 말을 잘하는 방법 멀티 스텝 모델링 메모리 메인내용 메주콩 메주콩파종 멧돌호박 모델기반학습 모델종류 모델프리학습 모듈 모바일 몬테카를로 방법 몬테카를로방법 물류 및 공급망 최적화 물성의 성질 미국 오하이오 미국주가 미국주식 미래기술전망 미래전망 미세플라스틱 미중경쟁 밀도범함수이론 반도체 가격 상승 반사율 방수 배터리 배터리 주요불량 배터리공정 배터리기술 배터리불량 배터리소재 배터리신뢰성 배터리와인공지능 배터리정책 배터리제조 배터리제조신기술 백주 뱀때 버거체인 벨만방정식 병역명문가 보조배터리 보조배터리 기내반입 분석솔루션 불량원인분석 비례적분미분제어 비전 비지도학습 사랑 삼성반도체 새피해 새해인사 새해인사말 생각정리 생각정리기술 생마늘 생산계획 생수 생수페트병 설계최적화 설날인사말 설비고장예측 성심당 성심당온라인 구매 성심당추천빵 셀 스웰링 셀스웰링 셀투팩 소매업 소재개발 소프트뱅크 쇠뜨기 수명예측 수요예측 스마트팩토리 스웰링불량 시간차학습 시계열분석 시뮬레이션 신뢰성 액터-크리틱 양배추 양자컴퓨터 어텐션 어텐션메커니즘 에너지 절감 에너지 절감방법 에너지사용최적화 에너지절감 에너지절감방안 에어드라이어 에피소드 기반 학습 엘지전자 영어 영어 리스닝 예제 오버행불량 오버행불량원인 오프폴리시 온누리상품권 온폴리시 용접 워런버핏 원달러 변화패턴 원달러 환율전망 원엔환율 원인 원자간 상호작용 학습 및 예측 웬디스버거 을사 인간피드백을 통한 강화학습 인공지능 인공지능경쟁 인생 일본금리 일본환율 자발적DR 자이가르닉 효과 장마 재고관리 재생시스템 재활용소재활용 저전압 저축 전자분포 전자의 움직임 전자의분포 전자의움직임 전통시장통통 정식방법 정책기반 정책기반 이터레이션 정책기반학습 정책이터레이션 제사상 제습공조설비 제습효율 제조업 제조에너지절감 제품개발 젠슨황 조합최적화 주식 중국공급과잉 중요샘플링 지도학습 지도학습미세조정 지붕방수 지수평활법 창신메모리테크놀로지 책줄거리 청주 최신배터리기술 최신이슈 최적제어 추정 추천빵 코스모스 콜드 스타트 키워드 분석 탁주 통계적 방법 투자 투자가 투자철학 트럼프2.0 트루시니스 파종 패키징공정 페트병 페트병두께 푸른뱀때 품질관리 피엑스 필요기술 필요지식 하이닉스 학습항목 한국반도체 행복 행위적인공지능 현대차 화합물 물성 확률 효능 효율적인 업무방법 휴머노이드로봇 흡착식 에너 드라이어 흡착식에어드라이어 흡착제 힘의교환 Actor Actor-Critic 강화학습 Actor-Critic학습 Agentic AI AI AI기반품질관리 Air Dryer ARIMA AS재고관리 Attention Attention Algorithm Battery Manufacturing Battery Manufaturing Battery Material Books Books for Beginners to Learn About LLM CATL Cell to Pack confusion matrix Critic CTC CTP CXMT DDR5 Deep Learning Deep Seek DeepSeek Demand Response DFT DIO Double DQN DP DPO DQN Dross DSO Dueling DQN dumplings Dynamic Programming ESS ESS솔루션 EV FFC FFC체결여부 검사 garlic genesis Gongi Graph Enhanced RAG Health Horsetail Hot Areas how to speak well Human Feedback importance sampling Kitchen hoods Korean dumplings Korean Rice Cake Soup Korean Traditional Game Large Language Models LLM LSTM Machine Learning Interatomic Potential Mandy Material Development MDP MLIP MMFF94 Multi-step Modeling New Battery Materials NMP Recovery Nuts PCU Physical AI PID제어 ppm PPO Pre Cooling Unit pre training Precooling Unit Prophet Protein Q-Learning Quality Inspection Data Quality Management RAG Raw Garlic RCU React Heater REINFORCE REINFORCE학습 Reinforcement Learning Reliability Return cooling Unit RL RLHF RORL RUL방법 SARIMA SARSA SCM SCM 핵심 재무 지표 SEO SFT SHAP SHAP로직 small kitchen hoods squd Squid Game Stacking TD학습 Temporal Difference Tener Stack Time Difference Learning truthiness Ttakji Tteokguk VAR ventilations for small spaces Vision Water Z-Stacking