Welcome The Year Of Mighty Mouse!

한 해 동안 열심히 달려온 인실리코젠 모든 직원분이
다가오는 2020년을 힘차게 맞이하고자 한자리에 모였습니다.
2019 인실리코젠 송년의 밤, 그리고 2020을 맞이하는 시무식
영상으로 함께 보시죠!


















자선 경매 행사로 모은 기부금은 아름다운가게에 전달되었으며 윈스턴 처칠의
"우리는 일함으로 생계를 유지하시만 나눔으로 인생을 만들어간다"는 말처럼
의미있는 2019년을 보냈습니다.  

아름다운가게 블로그 확인하기:
Link 1 : http://blog.naver.com/beautifulcup/221797031474 
Link 2 : http://bitly.kr/tlLfO2AG





IX팀 김지인 / 이용태

Posted by 人Co

2020/01/13 08:47 2020/01/13 08:47
, , , , , , , , , , ,
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/335



1인 미디어와 동영상

2019년 현재, 1인 미디어 시대를 사는 우리에게 가장 친숙한 정보 매체는 동영상입니다. 유튜브 같은 동영상 플랫폼을 통하여, 동영상 파일을 업로드하거나 다운로드한 경험이 있을 것입니다. 이때 다양한 동영상 파일 형식들이 지원되고 있으며, 이 중 많이 사용되는 형식으로는 MPEG, MPEG2, MPEG4, MP4 등이 있습니다. 언급한 동영상 형식은 모두 MPEG와 동일하거나 발전된 형식이며, MPEG라는 키워드 자체는 생소하지 않으리라고 생각합니다. 이번 시간에는 이 MPEG가 무엇이며, 우리가 알고 있는 유전체와 어떤 관계가 있는지 알아보도록 하겠습니다.


MPEG이란?

MPEG(엠펙)은 1988년에 설립된 표준화 전문 그룹으로 풀네임은 Moving Picture Experts Group(동영상 전문 그룹)입니다. 좁은 의미로는 그 이름을 가진 코덱이나 파일 확장자이기도 하지만 넓은 의미이자 본래 의미로 따지면 코덱이나 확장자만이 아닌 표준 규격 자체를 포괄하는 용어입니다. 이 그룹에는 미국의 AT&T, 영국의 BritishTelecom, 일본의 NTT, 미쓰비시, 후지쯔와 같은 비디오 및 통신장비 업체들이 주로 소속되어 있습니다. 정지된 화상을 압축하는 방법을 고안하고 있는 JPEG과는 달리 MPEG은 시간에 따라 연속적으로 변하는 동화상 비디오, 오디오 데이터의 압축과 해제 방식을 규정하고 있습니다[그림 1].




[그림 1] MPEG 메인 사이트
(출처 : MPEG 사이트)

앞서, MPEG가 동영상의 표준 규격 자체 즉 표준화된 형식이라고 언급하였습니다. 이번 글의 중요한 주제이자 키워드가 될 수 있습니다. 먼저, 표준화의 정의는 여러 가지 제품들의 종류와 규격을 표준에 따라 제한하고 통일하는 것을 말합니다. 이와 비슷한 말로 정규화가 있습니다. 그럼 왜 표준화가 필요한 걸까요? 일반적인 정보 통신 표준의 의의는 기술의 공개 및 시스템 간의 호환성을 통한 신기술 확산 및 공유에 있습니다. 좀 더 자세히 말하면, MPEG의 표준화는 동영상 압축 및 압축 해제 기술의 확산 및 공유에 매우 큰 영향을 주었다고 할 수 있습니다. 현재, MPEG는 대부분의 디지털 미디어 콘텐츠에 적용되고 있으며, 다양한 형태로 다양한 플랫폼에서 확인할 수 있습니다[그림 2, 3].



[그림 2] 디지털 미디어 콘텐츠와 압축
(출처 : MPEG-G document, Workshop on Genomic Information Representation held in San Diego on 18th April 2018)




[그림 3] 압축 전송의 자유도
(출처 : MPEG-G document, Workshop on Genomic Information Representation held in San Diego on 18th April 2018)


유전체 생산 속도 증가와 압축의 필요성


인간의 유전체 지도를 해독하기 위해 13년간 진행된 인간 게놈 프로젝트(Human Genome Project)가 2003년 종료된 이후, 유전체 분석을 위해 필요한 비용은 기하급수적으로 감소하였습니다. 2014년 미국의 유전체 분석 장비 제조업체인 일루미나(Illumina)는 같은 해 1월 개최된 JP모건 헬스케어 컨퍼런스에서 1,000달러(약 110만 원)로 한 사람의 게놈 전체를 해독할 수 있는 게놈 분석 장비 HiSeq X10 출시를 발표하면서 1,000달러 게놈 시대를 이끌었습니다.
그 이후 2018년에 들어, Veritas Genetics는 999달러의 전체 게놈 시퀀싱 서비스 가격을 80% 인하하여 선착순 1,000명에게 199달러에 유전자 분석 서비스(결과 해석 포함)를 제공한 사례가 있습니다. 이는 1,000달러의 1/10 수준인 100달러(약 11만 원)로 한 사람의 유전체 서열 전체를 해독할 수 있는 100달러 게놈 시대가 곧 온다는 것을 예고합니다.
유전체 생산 비용의 감소는 관련 산업의 발전을 이끌고 있으며, 분석된 대용량의 유전체 데이터는 빅데이터 기술과 맞물려 유전체 분석 시장을 빠르게 발전시켰습니다. Google과 Amazon은 보유하고 있는 클라우드 시스템을 활용하여 유전체 빅데이터 클라우드 서비스를 제공하고 있으며, 23andme와 같은 개인 전장유전체 분석서비스 등 다양한 산업화가 이루어졌습니다. 또한, 국외 유전체 아카이브 중 하나인 EMBL-EBI에 따르면, 2018년부터 10 페타바이트(petabyte) 규모의 데이터를 서비스하고 있습니다(그림4). 이제는 페타바이트(petabyte)급의 생산 시대로 들어왔으며, 이는 현존하는 디지털 데이터 중 가장 빠르게 생산하는 유전체 빅데이터가 된 것입니다.


[그림 4] EBI, 데이터 서비스 용량
(출처 : EMBL EBI annual-report-2018)

대용량 유전체 데이터의 급격한 증가는 이를 저장하는 저장 매체의 발전 속도를 추월하였기에, 저장 및 관리하는 비용의 감소 및 전송의 필요성이 지속해서 제기되었고, 이는 MPEG와 같은 압축 표준이 필요한 이유입니다.


유전체 압축 표준화

유전체 압축에 대한 표준화는 2014년부터 이루어지고 있습니다. 2014년 3월 스페인의 발렌시아에서 진행된 108차 MPEG(Moving Picture Experts Group) 회의에서 유전체 데이터의 압축, 저장, 그리고 스트리밍에 대한 필요성이 최초로 제기되었습니다. 처음 시작부터, 비디오 압축 전문가와 생물정보 전문가에 의해 공동으로 작성되었습니다. 전통적으로 오디오와 비디오 데이터의 압축과 처리에 대한 표준화를 진행해온 MPEG에 유전체 데이터에 대한 표준 이슈를 제기한 것은 특이하지만, 디지털 데이터의 종류를 확장하면 MPEG에서 다룰 만한 표준이라고 볼 수도 있습니다. MPEG는 유전체 표준의 필요성을 받아들여, 미래 미디어 서비스로 대두하고 있는 몰입형 미디어(Immersive Media) 표준개발을 위한 MPEG-I 프로젝트를 2017년부터 시작하였습니다. 이 중 유전체 압축 관련된 표준화도 진행하고 있는데 이를 MPEG-G라고 합니다[그림 5].


[그림 5] MPEG 표준개발 로드맵
(출처 : 한국정보통신기술협회 TTA연구보서, MPEG뉴디미어 포럼 2019)


MPEG-G

생명 공학 표준 (ISO TC 276 / WG 5)을 위해 MPEG와 ISO 기술위원회가 공동으로 개발한 MPEG-G 표준은 유전체 데이터를 처리(분석, annotation 등) 시 발생하는 문제 해결 및 비용 절감을 위한 최초의 국제 표준입니다. 새로운 압축 및 전송 기술뿐만 아니라 메타 데이터의 형태로 연결하는 표준 규격 정보와 시퀀싱 데이터를 효율적으로 처리할 수 있는 상호 운용 가능한 애플리케이션 및 관계된 서비스업계 전반의 에코시스템을 구축하기 위한 API (Application Programming Interfaces)를 제공합니다.
에코시스템(ecosystem) – 원래 생물학 용어로, 자연환경과 생물이 서로 영향을 주고받으면서 함께 생존해 나가는 자연계의 질서를 말합니다. 이것을 1993년 미국하버드대 연구교수인 제임스 무어(Moore)가 비즈니스에 접목해 비즈니스 에코시스템이란 용어를 만들었습니다. 주로 IT 분야의 여러 기업이 몇몇 리더 기업을 중심으로 경쟁과 협력을 통해 공생(共生)하고 함께 발전해 나가는 모습을 지칭합니다.
MPEG-G 표준의 적용을 통하여, 압축 데이터에 대한 선택적 액세스(access), 데이터 스트리밍(streaming), 압축 파일 연결, 유전체 연구 집계, 시퀀싱 데이터 및 메타 데이터의 선택적 암호화 등 다양한 사례에서 필요한 데이터 압축 및 전송을 지원하게 됩니다. (그림 6.)



[그림 6] MPEG-G 표준을 활용한 에코시스템의 완벽한 지원
(출처 : : MPEG-G document, Workshop on Genomic Information Representation held in San Diego on 18th April 2018)


특히 고성능 컴퓨터 기술(HPC, High Performance Computing)과 연계하여, 유전체 아카이브의 익명데이터와 의학 및 헬스산업의 데이터를 연결하는 중요한 가교역할을 할 것으로 기대하고 있습니다[그림 7].



[그림 7] HPC환경의 유전체 분석을 위한 MPEG-G의 역할
(출처 : MPEG-G document, Workshop on Genomic Information Representation held in San Diego on 18th April 2018)


마치면서

정리하면, MPEG-G 표준은 현재 유전체 정보 처리의 효율 및 경제성을 고려한 규격이며, 유전체 압축 기술의 문제점과 한계를 해결하기 위한 가장 규모가 큰 국제 협력이자 노력입니다. 2019년 현재, MPEG-G 표준의 진행은 유전체 파일의 특징 및 규격의 표준에 대한 API 부분은 FDIS(Final Draft International Standard, 최종 규격 전 초안) 단계로 완료되었으나, 실제 적용을 위한 유전체 파일 형식에 따른 압축 방법이나 표준 압축 알고리즘 등 은 아직 연구 논문 수준으로 좀 더 시간이 필요합니다. 유전체 정보를 다루는 견해에서 MPEG-G 표준의 다음 소식을 하루빨리 기다려봅니다.



참고자료
작성 : 대전지사 홍지만 선임

Posted by 人Co

2019/12/17 13:13 2019/12/17 13:13
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/334

[모집공고] 人Co INTERNSHIP 2019 하반기



[모집분야]
- 지원대상 : 학사 기졸업자 또는 졸업예정자
- 지원기간 : 2019년 12월 9일(월) ~ 12월 17일(화)
- 지원서류 : 지원서(첨부된 당사 양식),
              성적증명서 및 졸업증명서(기졸업자 또는 졸업예정자 대상)
- 지원방법 : 지원서류를 메일로 발송 (recruit@insilicogen.com)

[전형일정]

- 1차 서류전형 : 2019년 12월 18일(수) 서류합격 발표 (개별연락)
- 2차 면접전형 : 2019년 12월 23일(월) ~ 2019년 12월 24일(화)
- 최종 합격자발표 : 2019년 12월 26일(목)
- 인턴근무지 : 본사(경기도 용인시)
- 인턴기간 : 총 6주(2020년 1월 6일(월) ~ 2월 14일(금))
- 인턴혜택 : 1. 생물정보 기초 교육 커리큘럼
                  2. 기업 공통업무 기본역량 습득
                  3. 점심 제공
                  4. 수료증 발급
- 별도 공지사항 : 인턴십 기간 동안 정직원과 동일하게 출퇴근 규정 엄수
                    중도 이탈자 수료 불인정

[입사지원서 양식]

Posted by 人Co

2019/12/09 14:26 2019/12/09 14:26
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/333



4차 산업혁명이라는 이름에 걸맞게 생물 분야 뿐만 아니라 어느 도메인에 가도 AI란 용어를 어렵지 않게 찾을 수 있어요. 연구소나 기업은 현재 진행하는 프로젝트에 AI를 접목해 기계학습 및 프로그래밍을 활용하고 있습니다. 덕분에 기존 Rule-based의 작업이 해결하지 못했던 부분까지 많은 인력을 쓰지 않고도 높은 정확도의 프로세스를 진행할 수 있기도 합니다. 그렇다면 AI 분야 특히, 기계학습 혹은 딥러닝(기계학습의 부분집합)에 입문하는 우리는 무엇을 준비해야 할까요?

블로그를 쓰고 있는 현재에도 이 분야와 직・간접적으로 관련된 기초를 탄탄히 하고자 공부하고 있는 사람으로서 AI를 이해하기에 필요한 사전 지식과 그에 도움이 될 만한 좋은 책, 사이트, 세미나 강좌들을 선별하여 소개하려 합니다. 공부 순서는 크게 상관없고요. 기계학습 및 딥러닝을 공부하다가 언젠가 필요해질 때, 이 블로그에 찾아오셔서 방향을 찾아보는 것도 좋은 방법이 될 것으로 생각합니다.


연구 분석가나 개발자는 프로그래밍 언어는 필수적으로 하나 정도는 쓸 수 있어야 합니다. 언어는 다양하지만, 일의 목적에 따라 적합한 언어가 다를 수 있습니다. 기계학습 및 딥러닝 분야에서는 R과 Python이 현재 많이 쓰이고 있어서 개발된 라이브러리를 편하게 이용하기 위해선 둘 중 하나를 추천합니다. 참고로 전 Python을 주로 쓰고 있기에 아래 대부분의 포스팅은 Python에 맞춰져 있습니다.

사용자 삽입 이미지
점프 투 파이썬

책으로 사도 되지만 온라인에 e-book으로 있어서 언제든 참고 가능합니다. 첫 장부터 재미있다고 최면을 걸고 끝까지 한번은 정독하시길 권장 드려요. 후반부에 점차 어려울 순 있겠지만, 독학이 어려운 수준은 절대 아닙니다.

도전! (점프투파이썬)


Linux 기초와 파이썬 및 Pandas 교육(인실리코젠)
우리 회사에서는 Bio 분석가를 위한 교육이 매달 진행되고 있습니다. 달마다 주제가 달라지지만, Linux 기초와 파이썬 및 Pandas 교육도 있습니다. 책이나 강좌로 차근히 배우는 것도 좋지만, 이런 교육을 활용하면 단시간 내에 컴팩트한 기초문법 및 활용을 접할 수가 있습니다. 하지만 교육 수련생의 자릿수가 정해져 있으니 미리 홈페이지와 페이스북 알림을 통해 확인해보시길 추천합니다.

  • 人CoACADEMY : 생물정보 관련 교육 정보를 얻을 수 있음.
  • 人CoDOM : 생물정보 분야의 집단 지성 창출을 목적으로 운영되는 지식 커뮤니티
  • 인실리코젠 페이스북 : 친구를 맺어놓으면 관련 소식을 빠르게 받아볼 수 있음.
  • KOBIC 교육센터 : 인실리코젠이 제작한 온라인 무료 교육(상시 오픈형 교육은아님.)

NumPy는 파이썬의 수학 라이브러리입니다. 라이브러리란 '이미 누군가가 잘 만들어놓은 패키지'로 자주 쓸 것 같은 특정기능을 모아놓은 함수를 의미합니다. 즉, 파이썬으로 코딩 시 수학 라이브러리(예를 들면 Sin(x), Cos(x) 등)를 직접 구현할 필요 없이 NumPy 안에 저장되어있는 함수들을 가져와 쓸 수 있다는 거죠. 수학 및 통계 라이브러리와 더불어 NumPy의 장점은 속도에 있습니다. 내부적으로 C와 Fortran으로 작성되어있어 실행속도가 일반적인 수준에 비해 꽤 빠른 편이죠. NumPy와 관련된 설명은 나무위키에 잘 정리되어있으니 한번 읽어보는 것도 좋겠네요. 또한, 많은 기계학습과 딥러닝 패키지가 NumPy를 기반으로 구현되어있고 input 및 인자 데이터 타입을 NumPy로 요구하기 때문에 꼭 익혀야 하는 모듈이기도 합니다.



신경망(딥러닝) 행렬 표기법
(출처:
http://taewan.kim/post/wij_and_wji/)

기계학습 및 딥러닝에서 왜 이걸 써야 할까요? 우선, 간단하게 행렬 연산에 대해 말해보겠습니다. 기계학습 및 딥러닝 내부적 알고리즘에선 내가 가진 데이터를 잘 설명하는 해(기울기 혹은 가중치)를 찾기 위해 다항식의 연립방정식을 풀 수밖에 없다는 건 공감하실 겁니다. 이런 일들이 시간상 효율적으로 이루어지려면 선형대수학을 이용하여 계산할 수밖에 없고, 그 말은 행렬식을 다뤄야 한다는 말이죠. 만약 기본 자료형인 리스트로 2차원 행렬을 만들게 되면 아래와 같습니다.

>a = [[1, 2], [3, 4]]
>a
[[1, 2], [3, 4]]

여기에 단순히 행렬 스칼라 곱을 하려 해도 이중 for 문을 써서 계산을 해야 하죠. 그러나 NumPy를 쓰면 행렬 연산을 지원하기 때문에 아래와 같이 아~주 간단히, 쉽고, 빠르게 계산진행이 가능합니다.

>import numpy as np
>a = np.array(a)
>a
array([[1, 2],
       [3, 4]])
>a*2
array([[2, 4],
       [6, 8]])

이를 브로드캐스팅(broadcasting)이라 하고 하며, 작은 배열을 큰 배열과 서로 호환되도록 아래와 같이 작은 배열이 큰 배열에 크기를 맞추는 것입니다. 이런 편리한 기능이 있는데 당연히 NumPy를 쓸 수밖에 없겠죠?




Numpy의 broadcasting
(
출처 : 매일매일딥러닝블로그)

NumPy를 공부할 곳은 검색했을 때 무수히 많았어요. 그중 제가 생각했을 때 이것만 봐도 되겠다고 생각한 블로그와 사이트 추려봤으니 시간이 될 때 실습하시길 바랍니다.

Matplotlib이란 시각화 라이브러리 중 하나입니다. 만약 R 언어를 이용하고 있다면 ggplot이란 강력하고 대표적인 라이브러리가 있겠네요. Python에서도 대표적인 하나를 뽑자면 Matplotlib이 있습니다. 그러나 다른 라이브러리보다 이것을 꼭 이용해야 한다고 말하고 싶은 건 아닙니다. Python에선 Matplotlib을 포함하여 seaborn, plotly 같은 고차원 그래픽 모듈도 있으므로 분석가의 목적 또는 기호에 따라 다양하게 이용할 수 있어요. 많은 모듈 중 손쉽게 시각화를 구현할 수 있는 하나 라이브러리를 익혀두는 게 좋습니다.

시각화 모듈은 기계학습 및 딥러닝에서 정말 많이 쓰시게 될 겁니다. EDA(Exploratory Data analysis, 탐색적 데이터 분석) 작업을 하다 보면 데이터 전체의 분포를 보기 위해서는 테이블보다 그림(박스플롯, 산점도)이 강력한 도구가 되기도 합니다.



EDA시각화-Heatmap(왼쪽)과 Line plot(오른쪽)


또한, 이미지 딥러닝 중 segmentation을 예로 들어보면, 내가 생성한 모델의 prediction accuracy가 얼마나 높게 나타나는지 보고 싶을 때가 있을 겁니다. Image processing 기법과 시각화 모듈을 사용하면 원본 이미지와 결과 이미지를 시각화하여 overlap 해보면 모델이 좋은 방향으로 개발되고 있는지 확인도 가능하겠네요.



Deeplearning - segmentation model


조금만 검색하셔도 Matplotlib을 연습할 많은 블로그나 사이트가 있습니다. 그러나 그래프만을 위해 공부를 깊게 하는 건 제 경험상 비효율적인 것 같아요. 시각화 라이브러리는 내가 필요로 할 때 검색해서 만들어가며 자신의 코드를 하나둘 씩 쌓는 게 중요합니다. 혹은 다음에 나올 Pandas를 공부하다 보면 자연스레 시각화 파트에서 익히게 될 수 있을 거예요.



드디어 Pandas 입니다. 역시나 파이썬의 모듈이고요. 이게 뭔지 가장 잘 표현하는 방법은 R의 vector와 dataframe 기능입니다 라고 설명하는 것입니다. R을 접해보시지 않은 분들을 위해 부가 설명해드리면 이 언어는 Wes McKinney가 '시계열 데이터를 분석하기 위해 Python도 R과 같은 데이터 분석이 가능한 모듈이 필요해'라고 생각해서 만든 모듈입니다. 따라서 당연히 R을 닮았습니다. 기본 Python으로 코딩한다면 테이블 형식의 데이터를 행과 열을 추출하고, 혹은 특정 조건을 걸어 추출하고 새로운 테이블 형태로 정리하는…. 말로만 해도 얼마나 많은 번거로움이 나타날지 느껴지시죠?

간단한 예제를 통해 확인해볼게요. 예제를 볼 땐 이걸 순수 Python으로 코딩해서 똑같은 작업을 한다면 몇 줄에 끝낼 수 있을지 상상해보면서 보도록 합시다. 우선 csv 예제 파일을 읽어서 데이터 구조부터 파악해 볼게요.

※첨부파일 : train.csv

>import pandas as pd
>train = pd.read_csv('train.csv')
>print(train.columns)
Index(['datetime', 'season', 'holiday', 'workingday', 'weather', 'temp',
       'atemp', 'humidity', 'windspeed', 'casual', 'registered', 'count'],
      dtype='object')
>train.head()



그럼 여기서 casual, registered, count, datetime 열만 삭제하고 새로운 데이터를 만들려면? Python만으로는 반복문과 변수선언 등등 여러 가지 방법들이 머릿속을 지나가죠. 그렇지만 pandas는 한 줄로 처리할 수 있습니다. 그 dataframe에서 간단히 plot 생성도 가능하고요.

train = train.drop(["casual", "registered", "count", "datetime"], axis=1)
train.head()





Matplotlib같은 시각화 모듈과 함께 Pandas를 사용하면 아주 강력한 EDA툴이 되기도 합니다. 특히나 Mckinney의 의도처럼 시계열 데이터를 가공하고 EDA를 진행하는데 강력한 도구가 될 수 있답니다.


Time-series plot

요즘엔 AI뿐 아니라 데이터 분석을 위해서 관련 교육이 늘어가는 추세가 보입니다. 특히 Jupyter + Pandas + maplotlib/seaborn 을 묶어서 교육을 진행하는 프로그램들이 점차 늘어나고 있습니다. 우리 인실리코젠의 외부 교육프로그램도 해당 주제를 다루고 있으니 페이스북을 통해서 교육 소식을 접하시고 필요하시면 신청하면 좋을 것 같습니다. 19년 08월에 진행한 교육 내용은 아래의 github을 참고 해주세요~

Website

GitHub


구글의 코랩(Colab) 서버는 구글이 제공하는 Jupyter notebook입니다. 막상 기계학습과 딥러닝을 진행하려 하다 보면 적절한 환경부터 세팅이 안 되어 있거나, 가지고 있는 컴퓨터의 성능이 좋지 않아 시작부터 어려움을 느낄 때가 있습니다. 그러나 Colab을 이용하면 인터넷 환경만 갖춰진다면 어떠한 컴퓨터 심지어 태블릿으로도 실습이 가능해집니다. 구글 계정만 있으면 무료일 뿐만 아니라 딥러닝 구현 시 GPU도 몇 번의 클릭으로 연동할 수 있어서 연산속도도 빠르게 됩니다. 잘 만든 Jupyter는 그 자체만으로도 나만의 문서가 될 수 있으니, 시간이 될 때 잘 작성된 블로그나 문서를 보고 연습하시길 추천합니다.
(특징 : Jupiter notebook 환경 제공, 무료, GPU 사용 가능, 구글 드라이브와 연동 가능)

Colab deeplearning tutorial


이 부분은 다른 파트와는 달리 완벽히 이론적인 부분입니다. 기계학습의 기원은 전산학, 컴퓨터 공학, 통계학 등 다양한 곳으로부터 발전했다고 합니다. 이는 결국, AI를 통찰하기 위해선 수학이 기본이 되어야 함을 이야기합니다. 얼마나 깊이 공부해야 하는가는 목표에 따라 다르겠지만, 세부적인 수식까진 아니더라도 전체적인 계산 흐름 정도는 알아야 해석할 수 있어야 자신의 데이터에 맞는 디버깅 또는 최적화가 가능하다 생각해요. 그러기 위해서는 앞서 언급한 통계학(기초통계학, 회귀분석, 선형대수학)과 미분학이 어느 정도 뒷받침되어주어야 합니다.

간단한 예를 들어 볼게요. 기계학습 및 딥러닝에선 손실함수(Cost function 혹은 Loss function)의 최소화가 목적입니다. 이때 주로 드는 예시가 MSE(Mean Squared Error, 평균제곱 오차)방법입니다.


Cost함수 : Mean squared error
(출처 :
https://en.wikipedia.org/wiki/Mean_squared_error)

MSE를 최저로 만들기 위해 weight를 최적화 방법으로 업데이트 해 나가는 것이 기계학습 및 딥러닝의 핵심 원리입니다. 이때의 optimizer로는 Gradient descent(경사 하강법)가 있을 수 있고요. 이때 만약 여러분이 통계학적 지식이 있다면 방금 예시와 설명만으로도 내부적인 흐름이 느껴지실 겁니다. 예를 들면 MSE는 결국 (실측치-예측치)의 평균이고 이 값은 예측이 잘될수록 0에 수렴할 테니 MSE의 정의가 타당해 보일 것이고요. y^ = wx + b 라고 단순 선형이라고 가정한다면 MSE는 w에 대해 2차 함수로 나타날 것이며 아래처럼 곡선 형태임이 예상됩니다. 결국, 이 함수의 기울기가 0인 지점의 weight 값이 최적이 될 테고, '데이터가 들어올 때마다 일정량만큼 최적의 weight를 향해 수렴해 가는 방식이겠구나'라고 생각할 수 있습니다.

여기서 제가 생각한 것은 단지 과정의 흐름입니다. 실력이 좋으신 분은 손으로 직접 풀어가며 계산도 가능하겠죠. 하지만 그렇게까지는 아니어도 내부적인 흐름만 알더라도 기계학습이 한층 재미있어질 것입니다. 아무래도 전공이 아니라면 장벽이 있고 범위도 넓어 어려움이 있겠지만, 그때마다 관련 강의나 책을 찾아보면서 차근히 익혀나가길 추천해 드려요.

통계가 완전 처음이 아니라면 전 Gareth James 저자의 ISL(An Introduction to Statistical Learning)을 추천합니다. 기계학습 입문 이론서 중 유명하고 인기가 있습니다. 아래 사이트에서 PDF를 내려받을 수 있고요(물론…. 영어지만요). 2016년에는 '가볍게 시작하는 통계학습'이란 번역서로 출판하기도 했습니다.

Website & PDF교재



요즘 이미지와 관련된 분석들이나 자동화 기술은 CNN이 활발하게 이루어진 때부터 '모두 딥러닝 아니야?'라고 생각할 수도 있을 만큼 딥러닝 기술이 널리 이용되고 있어요. 그러나 좀 더 실생활 혹은 실용적인 프로젝트를 운영한다면 딥러닝 부분은 프로젝트 일부분이고 많은 부분이 이미지 프로세싱으로 접근 가능하다는 것을 알게 됩니다. 이미지 프로세싱은 말 그대로 사진 또는 영상에 여러 연산을 접목해 새로운 사진 및 영상을 얻어내는 기법을 뜻하는 데요. 화질 개선 및 복원, 영역 추출, 객체 검출, 회전, Perspective transformation 등 많은 이미지 처리 작업에 적용할 수 있습니다.



Perspective Transformation 기술




Camera calibration 기술

Website

당연히 전공이 아니라면 거부감이 있는 주제긴 하지만 어떠한 주제들이 있는지 이해하고 있는 것만으로도 딥러닝 관련 프로젝트를 더욱 완벽히 만들 수 있을 겁니다. 이미지 프로세싱을 위해선 scikit-image 또는 openCV라는 모듈이 가장 잘 알려진 모듈입니다. 아래 있는 사이트에서 예제와 내용을 꽤 자세히 설명해주고 있으니 다양한 주제를 접해보는 경험도 좋을 거라 생각됩니다.



마치며


인실리코젠에서 기계학습을 이용한 마커 선발과 모바일 이미지를 이용한 segmentation 딥러닝과 관련된 프로젝트에 참여하고 있다 보니 가끔 교육, 학회 및 워크숍에서 저에게 실무자 혹은 학생분들이 다음과 같은 질문을 하곤 했습니다.

  • ‘기계학습은.. 뭘 이용하셨나요?’
  • ‘딥러닝은.. 어떻게 하셨나요?’

저 짧은 질문에선 ‘나도 공부하고 싶은데 아직 방향을 모르겠네요’라는 마음의 소리가 들리는 듯했어요. 저도 저 답답함 속에서 맨땅에 헤딩하는 심정으로 이리저리 정보의 홍수를 탐험하던 때가(아직 진행형일 수 있겠네요.) 있었으니까요. 재미있어서 공부하다가 '내가 파고 있던 우물이 한강이구나'를 느끼면서 뒤를 돌아보는데 우물이 어딨는지 찾고 있는 분들을 보았고 그분들을 위해 이 블로그가 하나의 좌표가 되었으면 합니다.

더 많은 예제도 많겠지만 본 블로그는 AI 공부를 위해 다음과 같은 주제들이 언제 어떻게 쓰이는지를 보여주며 필요성만을 강조하고 싶었어요. 언제 어떻게 쓰이는지 모르는데 하나씩 파고드는 건 괴로운 일이 될 수도 있으니까요! 좋은 사이트 및 레퍼런스를 소개했으니 기계학습과 딥러닝에 입문하시는 분들께 도움되었으면 합니다. 모두 화이팅!!

작성 : Data Science Center 형기은




Posted by 人Co

2019/12/05 16:39 2019/12/05 16:39
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/332

JavaScript Framework



"웹 로딩 속도 1초에 아마존 매출 68억 달러 달렸다."라는 인터넷 기사를 보신 적이 있으신가요?
웹페이지 로딩 타임이 매출에 영향을 끼친다는 내용의 기사인데요, 로딩 타임에 영향을 받는 건 비단 아마존뿐만이 아닌, 모든 웹서비스에 대한 공통적인 이슈일 것입니다. 그럼 로딩 타임을 줄이는 데 도움을 줄 JavaScript Framework에 대해 알아볼까요?


등장 배경


안드로이드, 아이폰과 같은 모바일 시대가 대두함에 따라 렌더링 방식은 새로운 국면을 맞이했습니다. 전통적인 서버사이드 렌더링 방식(ASP, PHP, JSP)에서 클라이언트사이드 렌더링으로 렌더링 방식의 변화를 맞이한 것입니다.

이미 고정된 페이지를 리턴하므로 모바일 페이지를 만들기 위해서는 모바일 사이트를 별도로 만들어야 합니다. 즉, 웹용 사이트, 모바일용 사이트 이렇게 두 개를 만들어야 했습니다. 이 형태도 아이폰과 안드로이드에서 웹앱 형태로는 개발할 수 있지만 네이티브 형태로는 만들기가 불가능해집니다. 그래서 서버는 REST api만 제공해주고 클라이언트가 json 데이터를 렌더링해서 만드는 방식이 사용되는 SPA(single-page application, 스파)가 등장합니다.

SPA는 서버로부터 완전한 새로운 페이지를 불러오지 않고, 현재의 페이지를 동적으로 다시 작성함으로써 사용자와 소통하는 웹 애플리케이션이나 웹사이트를 의미합니다. Gmail, Google 지도, Facebook 또는 GitHub 등이 SPA의 대표적인 사이트입니다.
서버사이드 렌더링 방식과 클라이언트사이드 렌더링 방식의 우열을 가리기보다는 각각의 장단점을 살핀 후 사이트의 성격에 맞게 렌더링 방식을 선택하면 되겠습니다. SPA는 마크업과 데이터를 요청하고, 브라우저에 페이지를 바로 그립니다. 이런 것들을 가능하게 해주는 대표적인 JavaScript Framework 3대장인 Angular, React, Vue.js에 대해 알아봅시다.


[그림1] e-nor 블로그
(출처: https://www.e-nor.com/blog/google-tag-manager/tracking-single-page-applications-with-google-tag-manager)


Angular


[그림2] Angular 홈페이지 (출처: https://angular.io/)

  • 배경 : Google이 2010년에 출시했습니다. 타입스크립트 기반 JavaScript Framework입니다. 현재는 Angular라고 불리지만 2016년 전에는 이름에 접미사 JS가 있었습니다. JS는 Angular 2+ 출시 후 이름에서 삭제되었습니다. 2019년 5월 28일, 최신 버전인 Angular 8.0.0이 출시되었습니다. Google과 Wix는 Angular를 사용하는 가장 인기 있는 회사 중 하나입니다.

  • 성능 : Angular는 실제 DOM을 사용합니다. 문제가 발생하면 문제를 찾기 위해 코드에 깊이 들어가야 하므로 처리하기가 매우 어렵고 문제를 고치는데 많은 시간이 소요되어 버그를 유치하게 되는데 이는 위험합니다. Angular의 실제 DOM 사용은 동적 소프트웨어 응용 프로그램을 만드는 성능과 기능에 영향을 주어 느려지게 만듭니다.

  • 특징 : Angular는 템플릿에서 테스트 유틸리티에 이르기까지 개발자에게 많은 것을 제공합니다. 따라서 경량 응용 제품에는 적합하지 않습니다. 라우팅에서 템플릿까지 모든 것을 제공하기 때문에 응용 프로그램을 개발하기 위해 다른 도구를 이용할 필요가 없습니다. 응용 프로그램을 구성하는 방법에 대한 의견이 있습니다. 라우팅 라이브러리를 얻거나 선택할 필요가 없습니다. Angular 패키지에 제공된 모든 것을 사용하여 코딩 프로세스로 시작할 수 있습니다

React


    [그림3] React 홈페이지 (출처: https://reactjs-kr.firebaseapp.com/

    • 배경 : Facebook에서 2013년에 출시되었습니다. Facebook과 같은 트래픽이 많은 웹 사이트에서 주로 사용됩니다. Facebook 광고가 트래픽을 얻기 시작하고 코딩 및 유지 관리에 문제가 발생하여 특정 문제를 해결하기 위해 개발되었습니다. 최신 버전인 16.8.6은 2019년 5월 6일에 릴리스 되었습니다. WhatsApp, Instagram Paypal, Glass door, BBC는 React를 사용하는 인기 있는 대표적인 회사입니다. React는 매우 동적이며 대화식 사용자 인터페이스를 만드는 데 큰 도움이 됩니다.

    • 성능 : 이 Javascript 라이브러리는 가상 DOM을 사용하고 있습니다. 브라우저에 따라 다르고 가벼울 수도 없습니다. React 패키지로 무료로 제공되며 실제 DOM의 성능 저하 문제를 제거합니다.

    • 특징 : 경량 응용 분야에 적합합니다. Angular와 달리 공식 React는 라이브러리를 많이 제공하지 않습니다. 이를 통해 원하는 프로그래밍 도구를 자유롭게 선택할 수 있습니다. React 라우팅과 같은 타사 솔루션을 이 자바 스크립트 Framework와 통합할 수 있습니다. 이외에도 MobX 및 Redux를 사용하여 사무실 관리 작업을 지원할 수 있습니다. 경험이 풍부한 최고의 소프트웨어 개발자를 고용하면 이러한 유연성을 크게 누릴 수 있습니다. 또한, 비즈니스를 위해 개발된 놀랍고 역동적인 응용 프로그램을 개발할 수 있습니다.



     Vue



    [그림4] Vue.js 홈페이지 (출처:
    https://kr.vuejs.org/)

    • 배경 : 2014년에 출시되었으며, React 및 Angular의 개발사 Facebook과 Google과 같은 큰 회사에 의해 개발되지 않은 진보적인 JavaScript Framework입니다. Google의 전 엔지니어인 Evan You가 만들었으며, 꾸준한 인기를 얻고 있습니다. 최신 버전; 버전 2.6.10은 2019년 3월 20일에 릴리스 되었습니다. Javascript Framework 제품군의 가장 역사가 짧은 Framework입니다. GitLab 및 Alibaba와 같은 웹 사이트는 Vue를 사용하고 있습니다.

    • 성능 : Vue는 이전에 시작된 Framework의 모든 좋은 속성을 취했습니다. 같은 개념으로 Vue는 Virtual DOM을 채택된 React 개념으로 사용합니다. 이것은 더 빠르고 버그 없는 성능을 보장합니다.

    • 특징 : 경량 응용 분야에 적합합니다. Vue.js 생태계는 개발자에게 많은 것을 제공합니다. 추가 기능 중 일부는 라우팅을 위한 Vue 라우터이며 상태 관리를 위해 Vuex가 있습니다. 또한, 응용 프로그램의 서버 쪽 개발을 시작하기 위한 Vue서버 쪽 렌더가 있습니다. 따라서 Angular만큼 의견이 많지 않고 React만큼 유연하지는 않습니다.

    결론
    • Vue.js와 React는 Angular보다 우수한 성능과 유연성을 제공합니다.
    • Vue와 React는 가벼운 응용 프로그램에 더 적합하며 Angular는 큰 UI 응용 프로그램에 가장 적합합니다.
    • Angular는 Vue 및 React와 달리 의견이 많으며 라우팅, 템플릿에서 패키지의 테스트 유틸리티에 이르기까지 모든 것을 제공합니다.
    • Vue는 가장 인기 있고 사랑받고 성장하는 Javascript Framework입니다.



    [참고]
    FED팀 (Front-End Development)
    진효빈 주임




    Posted by 人Co

    2019/11/22 13:28 2019/11/22 13:28
    Response
    No Trackback , No Comment
    RSS :
    https://post-blog.insilicogen.com/blog/rss/response/331



    « Previous : 1 : ... 8 : 9 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : ... 75 : Next »