1. Powerpoint 2013을 실행합니다.
  2. [파일 - 옵션]을 클릭합니다.
  3. [언어 교정 – 자동 고침 옵션 – 자동 고침 – 자동으로 맞춤법 검사기의 추천 단어를 사용]체크를 해제합니다.


2018년에서 바라본 딥러닝의 비판적 평가


  • data hungry

    • 데이터가 매번 너무 많이 필요하다. 세상의 모든 문제를 무한한 데이터가 제공된다고 가정하고 풀 수는 없다.
  • shallow & limited capacity for transfer

    • deep은 아키텍쳐가 깊은거지 딥하게 이해 하는 것 아니다.
    • 너무 트레이닝에 오버핏 된다.
    • adversarial하게 학습 모델을 저격하는 데이터 예제를 쉽게 만들 수 있다.
  • no natural way to deal with hieracyhical strcture

    • 맨 마지막의 featrue는 너무 flatten 하다.
    • 지식은 계측정 관계가 있는 딥러닝은 그렇지 못하다
  • struggled with open-ended inference (개방향 문제에 약함)

    • VQA도 그냥 호랑이 어디, 호랑이는 몇마리? 이런건 잘함
    • open-ended inference란 이 호랑이들은 지금 이곳에 왜 있는가?와 같은 것들이다. 이러한 데이터 영역을 벗어난 오픈 문제들에는 너무나도 약하다.
  • not sufficiently transparent

    • dconv 등과 같은 기술이 있지만 여전히 충분히 이해할만큼 내부가 보이지 않는다.
  • not well intergrated with prior knowledge

    • 사전에 잘 정의된 지식으로 우리는 비행기도 만들고 우주산업도 발전 시켰다.
    • 하지만 딥러닝은 너무 data-driven이다. 이게 인간이 알 수 없었던 무언가를 보여주기도 하지만, 역설적으로 GAN으로 너무 밑 바닥 부터하면 너무 학습도 어렵고 나온 결과를 해석하기도 어렵다. 사전에 왜 잘 정의된 지식과 통합하지 못하는가?
    • GAN의 manipulation 하기도 쉽지 않다.
    • Physical world의 잘알려진 공식 f= ma를 만들자도 있지만, 그결과는
      • 영상으로 부터 가속도 등등을 약간 배운것이지 저 공식을 유도한 내용은 아니다.
  • not inherently distinguish causation from correlation

    • 상관 관계와 인과 관계를 구분 못한다.
      • 예: 알통이 굵으면 보수다.
  • presumes a largely stable world

    • 너무나도 불안정하다.
  • its answer often cannot be full trusted

    • 딥러닝이 낸 결과를 이해할 수 없기에 신뢰하기도 어렵다.
  • difficult to engineer with

    • 해본 사람은 알겠지만 디버깅도 어렵고 새로운 문제에 적용해서 쓸만하게 동작시키는 것도 쉽지 않다.

크게 나누면 두개

  • generalizability

    • 세상의 모든 문제를 infinite 데이터로만 학습 할 수는 없다.
  • Abstraction

    • 더 높은 지식으로 올라가지 못한다.

참고문헌


하드디스크 무료 소프트웨어 복구 방법


2012에 구매한 하디드스크를 쓰고 있다가 최근에 큰 봉변을 당했다.
DropBox GoogleDrive auto-sync를 켜둔 덕분에 간당 간당 HDD가 결국 인식불능에 도달 했다.

HDD는 2년이상이되면 급속도로 배드섹터가 많이 생기고 신뢰성이 떨어지는 장비인데 이것을 6년 가까이 사용했으니 당연한 일이다.

석박사기간 통틀어 6년간의 연구데이터가 몽땅 날라가 버리니 정말 후회가 몰려왔다. 가장 최근에 백업한 데이터가 2017.2월이니 난감한 상황이다.

어떻게든 공짜로 해결하려고 사투한 2주간의 기록을 남긴다.

  • 하드 인식이 안되면 외장 도커를 이용해서 연결
  • 절대로 포맷하지 않음
  • 문제가 생기면 Write는 무조건 중지

주의: 정말 소중한 데이터라면 전문가에게 돈을 주고 의뢰 하는게 맞습니다. 이 방법대로 했다가 데이터 날라가는것은 저는 책임지지 않습니다.

배드섹터 복구

아래 프로그램을 사용해서 복구 했다.
DRevitalize+2.42 (한글 버전)

DRevitalize+2.42.egg

연구실 후배가 설치해서 돌려준 프로그램이다.
실제 공식 홈페이지에가면 영문으로 더 상위 버전이 있긴하다.

아래와 같이 2TB 가량의 하드에 있는 배트섹터를 복구 했다.

실제론 약 3만개가 있었고 2주간 걸렸다.
배트섹터 없는 구간은 빠르지만 BAD Sector 구간에 오면 10KB이하로 속도가 급격히 떨어져서 시간이 엄청나게 오래 걸린다.

하지만 확실히 모두 고치고나면 인식이 된다.

파티션 복구

파티션까지 없어진 상황이면 이것도 복구해야 한다. 필자는 그랬다.

검색하면 도구가 많이 나온다. 하지만 대부분 Scan완료후 복구를 시도하면 10GB이상은 Pro구매 하라는 팝업창만 나온다.

정말 사람 답답한데 이런거 가지고 과금청구하는 악덕 프로그래머들에게 화가날 뿐이다.

검색 끝에 TestDisk라는 GPL라이센스를 따르는 도구를 찾았다.
역사가 오래된만큼 Windows, , uBuntu등의 다양한 OS를 지원 했다.

실제로도 상용툴에서 보여준 성능을 그대로 보여주었다.

TestDisk Dwonload
TestDisk 사용 공식 설명서

필자는 7.1 버전을 윈도우즈10 에서 사용하요 성공적으로 파티션을 복구 했다.

성공 로그
재부팅하면 파티션이 정상 복구되어 있다.

  • Partition Find and Mount
    • 무료지만 Full scan으로 검색하면 partition이 나오긴 하지만 Fragement되어서 나와서 신뢰가 안간다.


2017 H-1B Visa petition


H-1B Visa petition 시즌이 4월 3일 시작 된다.


기술 숙련자라면 미국에서 일하기 위한 통로로 가장 사랑하는 루트가 바로 H-1B 비자이다.


2016 작년에만 그것은 85,000+이상의 비자 신청이 당도 했다. 그리고 최종적으로 236,000 petition이 제출 되었다.


일단 $1,225 수수료를 내면 premium processing으로써 H-1B petition이 15일 안에 심사 된다. 만약 lottery에서 선택 된다면 말이다.

그래서 이러한 premium processing의 비율은 59%에 달한다.


non-premium visa petition은 8개월이나 시간이 걸리기 때문이다. 이것은 그들이 승인한 시점으로 처리가 8개월 걸린다는 것이다.


문제는 H-1B 비자가 숙련된 worker에게 할당 되는 것이 아니라는 점이다. 이것은 Big outsourcing firm들에 의해서 남용 되고 있다. 그들이 대부분의 할당양을 채우기 때문이다.


http://money.cnn.com/2017/03/29/technology/h1b-visa-premium-processing/index.html


Complaint #1: Visas aren't given to only the most highly trained workers


Complaint #2: H-1Bs allow employers to import cheap labor


Complaint #3: Startups get the short end of the stick



http://money.cnn.com/2017/02/21/technology/h1b-visa-program-flawed/index.html?iid=EL

This startup uses batteyr life to determine credit scores


폰의 사용량 예를들면 배터리 소모 같은것들을 이용해서 사용자의 신용도를 평가하는 방식이다.

Singapore에 있는 Lenddo회사이다.
Chairman은 Jeff Stewart 이다.

분석 데이터의 종류

  • smartphone user's messaging
  • browsing activity
  • Wi-Fi network activity

Lenddo puts the data points into a complex proprietary algorithm, which computes how likely someone will default on a loan. Lenders then decide the default rate they want to accept.

While certain mobile behavior could impact the outcome of a credit score (like always running out of battery power), Stewart said extremely well-maintained smartphones raise a red flag in the system, too.

보험 업계에서도 쓰이고 있다.
Your smartphone knows if you're good driver
Even though Lenddo isn't used in the U.S., insurance firms like Liberty Mutual and State Farm have started to adopt similar methodology to help determine car insurance discounts.
For example, the companies have asked customers to submit information collected from their smartphones' GPS, accelerometer and gyroscope to learn how people drive, brake and make turns.

참고문헌

Original Article


DeepMind's AlphaGo

Whatever the outcome may be, the winner will be humanity. said Schmidt.

Teachning computers to master Go has been kind of a holy grail for artifical intelligence scientists.
There are more possible configurations of the board than there are atoms in the universe, siad Demis Hassabis, CEO of Google DeepMind, which developed AlphaGo.

"Go is the most profound game that mankind has ever devised," Hassabis said. "Go is a game primarily about intuition and feel rather than brute calculation, which is what makes it so hard for computers to play well."

CNN 원문
http://money.cnn.com/2016/03/09/technology/google-deepmind-go/index.html


How to build a real lightsaber


lightsaber는 아주 멋진 무기이다. 그것으로 싸우는 모습은 굉장히 elegant하다.
이것은 아주 좋은 무기일 뿐만이나라 laser blasts를 방어하는 shield의 역할을 한다.

그렇다면 왜? 우리는 이러한 lightsaber들을 real life에 도입하지 않는 것인가?
우리의 phsicist들은 충분히 똑똑하며, 최소한 big fan들이 있기 때문에 만들어 낸다면 매우 큰 파급력을 가질 것이다.

분명한 것은 lightsaber를 만들기 위해서는 방향성을 가지는 light를 이용해야 한다는 것이다. 이것은 다른말로
laser를 의미하며 laser기술은 많은 도약을 이뤄 왔지만 여전히 이러한 것들을 만들기에는 멀기만 하다.
왜 그런지 알아보자.

첫 번째 challegne
크기의 문제이다. 그것을 검으로 만들기에는 현재의 기술은 많은 공간을 필요로 한다.
lazer 를 생성하는 것은 강한 자연적인 경향을 가지고 있기 때문에 그것을 작은 포인트 수준으로 집약하기에는
어려움이 크다.

한가지 방법은 검의 끝에만 살짝 lazer를 나오게 할 수 있다. 하지만 엄청난 지원 장치들을 둘러매고 단지 그 작은 lazer날만을
들고 서있다면 그것이 실제 전장에서 상대를 압도할 수 있을것이라 생각하는 사람은 아무도 없다.

아래와 같은 크기로 압축하기란 쉽지 않다.

두 번쨰 challenge
어떤 물체를 slice 해버릴 정도로 lazer를 방출 하기위해서는 막대한 power를 필요로 한다.
Welding laser(용접기)는 실제로 industry에서 사용된다. 하지만 이것들은 수 킬로 와트 수준의 전력(power)를 요구한다.
이러한 막대한 에너지를 lightsaber의 작은 hilt(손잡이)에 담는것은 매우 어렵다.
추가적으로, cooling mechanisms도 필요하다. 왜냐하면 이러한 막대한 에너지 방출로 당신의 손이 녹아내리길 원하지 않는다면 말이다.

세 번째 challenge
가장 근원적인 문제로써 두개의 lightsaber들이 calsh를 할 수 없다는 것이다. 
두개의 lightsaber는 간단하게 서로를 통과하며 어떠한 상호작용도 할 수 없다.
더나아가 laser 방향 초점은 매우 날카로워서 그것을 직접적으로 볼수는 없다. 정확하게 해당 축으로 시선을 일치하지 않는이상.
따라서 laser들을 보기위해서는 smoke 또는 안개가 절대적으로 필요하다.
스모그의 입자들은 공기중으로 흐터져있기 때문에 그러한 입자들과 laser light이 반응하여 눈으로 볼 수 있는 하나의 beam을 형성할 수 있게 된다.

하지만 전혀 희망이 없는것은 아니다. laser 기술에 lightsaber가 기반한다면 현실적으로 해결해야할 많은 문제가 있는것은 사실이다. 대안으로써 plasma를 이용하는 방법이 있다. 효과적인 어떠한 뜨거운 gas로써 그것은 전자와 핵으로 나눠진다.
이것은 백만 화씨 까지 달성된다.

재밌는 것은 이러한 plasma는 가스에 따라서 서로다른 색을 발산 하다는 것이다.
하지만 이것또한 가스의 저장과 각 플라즈마끼리의 상호작용이 문제가 된다.


2015의 스마트 기기들 (gadgets)


2015년에 핫 이슈 gadets들을 다뤄 본다.
단, CNN 기사들중에서 내가 관심 있는 것들만 추렸다.
원기사에서는 36개를 언급한다.

Google EKG smartwatch (no price yet)

Google's experimental watch can help doctors remotely monitor patients' health. The connected wristband can take a person's electrocardiogram (or EKG) and assess environmental stressors, including light and noise levels.


Microsoft HoloLens, $3,000

Microsoft has developed goggles that offer an augmented -- or "mixed" -- reality experience. Unlike Facebook's Oculus Rift, which completely blocks out the outside world to fully immerse the wearer in another reality, HoloLens keeps one foot (and both eyes) firmly planted in the real world. The lenses of the goggles are transparent, your view of the space around you only selectively blocked by digital images that can mingle with real objects. It's currently only available for software developers.




Google의 오픈소스 머신러닝 시스템, TensorFlow


2015.11.9일 구글이 자시들의 Machine Learning Platform TensorFlow를 공개 했다.




공식 사이트: http://tensorflow.org/

GitHub: https://github.com/tensorflow/tensorflow

ResearchBlog: http://googleresearch.blogspot.kr/


이것은 구글이 2011년부터 내부에서 사용해오던 DeepLearning Infrastructure인 "DistBelief"의 후속 버전이다.


DistBelief는 지금까지 음성인식, 지메일 스팸 방지, 유튜브 동영상 썸네일 제작, 유트부 영상에서 고양이 인식 등의 딥러닝을 적용한 구글의 서비스와 연구에 사용된 것이다.


이번에 공개된 TensorFlow는 이러한 DistBelief의 성능과 사용편의성을 개선한 2세대 머신 러닝 시스템이라고 할 수 있다.




GoogleResearch - TensorFlow, Google's latest machine learning system, open sourced for everyone.


작성자: Jeff Dean (Senior Google Fellow) and Rajat Monga (Technical Lead)


2011년 부터 사용된 DistBelief 구글의 DeepLearning 플랫폼은 Find "cat", speech recognition, Google Photos, Large Scale Visual Recognition Challegne in 2014, and automated image captioning 그리고 DeepDread 에서 성공적인 결과를 보였다.


하지만, DistBelief는 너무나 Google의 내부 구조와 결집되어 있기 때문에 그동안 공개하기가 어려웠다.


2015.11.9일 구글은 마침내 2세대 머신러닝 시스템인 TensorFlow를 공개한다. 이것은 그동안의 단점을 모두 보완 했으며, flexible, portable, easy to use, and completely open source이다.

또한 구글의 Technical report에 따르면 TensorFlow는 특정 BanchMark에 대해서 2배 가량 DistBreief보다 빠르다고 한다.


이제 non-learning tool과 learning too로 양분화 대며, 모든 non-learning tool들은 점차 대체될 것이다.

바야흐로 새로운 시대가 열렸다.



TensorFlow의 특징


일단은 구글이 사용하는 버전과 다르게 단일 컴퓨터에서 다중 GPU를 지원하여 동작하는것 같다.

Jeff Dean의 말에 따르면 이것은 기존의 Deep Learning library인 Torch, Caffe, Theano의 장점을 가져온 것이라고 한다.

즉, Torch와 Theano 처럼 research idea를 구현하기 쉽고 Caffe처럼 실제 product에 구현하기 쉽게 만든것이 Tensorflow이라는 것이다.


참고문헌: http://www.wired.com/2015/11/google-open-sources-its-artificial-intelligence-engine/





'Computer Science > IT Issue' 카테고리의 다른 글

광선검(lightsaber)는 어떻게 만들 것인가?  (0) 2015.12.13
2015의 스마트 기기들 (gadgets)  (0) 2015.11.26
No, you can't have it all  (0) 2015.10.23
Sensing Emotions (Affective Computing)  (0) 2015.10.22
Google Alphabet  (0) 2015.08.12

No, you can't have it all


Technology는 언제나 사람들에게 선택할 기회를 주었다.

불은 인류에게 추운 날씨에서도 생존할 수 있는 선택의 기회를

전등은 밤에도 책을 읽을 수 있는 선택의 기회를

마약은 우리에게 스트레스로 부터 자유를 얻으며, 스스로의 삶을 망가뜨릴 선택의 기회를 주었다.


마지막으로 디지털 technology는 우리에게 동시에 하나 이상의 일을 할 수 있는 능력의 기회를 주었다. 최소한 그렇다고 느낄 수 잇게 했다.


Anne-Marie Slaugther의 새로운 책 "Unfinished Business: Women, Men, Work, Family"에서 그녀는 디지털 기술을 고려하지는 않고 있다.

하지만 멀티테스킹의 정신을 여자 남자의 관점에서 이야기 하고 있다. 즉 여자는 우선적으로 그들의 career와 family 사이에서 저글링하는 상황에 놓여 있다는 것이다.


이론적으로 50:50으로 나눠서 일을 하면 된다고 생각하지만 그것은 약간은 비현실적이다.

결국, 남자가 여자가 누가 현실을 위해서 헌신을 해야하는지에 대한 관념은 모두 버릴 필요가 있다.


슬프게도 여성들은 부모로써의 역할의 필요성에  봉착함으로써 그들의 커리어를 포기하게 된다.

Sheryl Sandberg는 그러한 의미에서 여성 leader의 힘이다. 그녀는 보모나 가정부 튜터 교사를 고용하기는 하지만 여전히 커리어를 지키고 있기 때문이다.


기술의 옹호자는들은 말한다. 우리는 기술을 통해서 멀티테스킹을 가능하게 한다고.

운전중에 이메일을 보내며, 트윗을 콘서트를 보면서 하며, 숙제를 스냅챗을 하면서 하게 된다.

하지만 이러한 현상들은 가짜 impression으로 규졍한다. 이것은 그렇게 보일뿐 실제로 효율이 매우 떨어지기 떄문이다.


즉 , 지금까지 보았던 모든 멀티 테스킹은 낮은 효과를 가져온다. 아무리 단일 작업으로 볼떄 멀티 테스킹을 통해서 하나 하나는 더 낮은 작업 시간만으로도 그것을 끝마쳤다고 할지라도 그것의 내부를 들여다 볼경우

그것은 더 낮은 정확도와 더 낮은 깊이를 가진다는 것이다.

우리는 낮음과 늦음을 구별할 필요가 있다.


기사에서 테크놀로지에서 종사하는 10명의 여성 리더는 다음과 같다.

사진은 각각 순서대로이다.


  • Susan Wojcicki, executive of YouTube
  • Sheryl Sandberg, Facebook's chief operating officer
  • Marissa Mayer, Yahoo chief Executive
  • Ursula Burns, Xerox (intern으로 1980년에 시작)
  • Cher Wang, co-founder and chairwoman of HTC cooperation
  • Virginia M. Rometty, Chief executive officer and chairwoman of IBM
  • Meg Whitman, president and chief executive officer of Hewlett-Packard ( previously the head of eBay)
  • Safra Catz, executive at Oracle Corporation
  • Sandy Carter, IBM's wordwide general manager
  • Angela Ahrendts, Chief executive of Burberry for many years.



Sensing Emotions (Affective Computing)


해당 기사는 ACM Communications Magazine에 2015년 9월에 실린 내용이다.

http://dx.doi.org/10.1145/2800498


"How computer systems detect the internal emotional states of users"라는 내용으로 2장 정도의 글을 담고 있다.


30명의 사람들로 구성된 인원이 슈퍼볼을 보고 있고, 이때의 그들의 얼굴 표정의 변화를 카메라가 인지하고 있다.

어떠한 광고가 지루한지 그러한 것들을 카메라를 이용한 얼굴 변화 인식을 통해서 알 수 있다.


그들이 amused, ambivalent, surprised 되는 각각의 양상을 현재 스크린에서 재생되는 영상과 매칭 시켜서 분석 할 수 있는 것이다.

이것을 바로 광고의 효과에 적용할 수 있다.

다들 아시다 시피 슈퍼볼 경기 앞에 들어가는 광고는 천문학 적인 금액을 지출하기 때문이다.


감정 인식의 활용은 광고의 효과를 인지하기 위해서 사용 한다 (market research)

온라인 학습 시스템에서는 언제 학생들이 성장하는지를 관찰한다.

healthcare 응용프로그램에서는 새로운 의약품에 대해서 우울증 환자들이 어떻게 반응 하는지를 다룬다.

home assistance robot들은 노인들의 감정 상태에 따라서 적절히 반응 할 수 있다.


이러한 위의 것들을 처리하는 컴퓨팅을 "affective computing"이라는 용어로서 1990년에 만들어 졌다. MIT 교수 Rosalind Picad에 의해서 단어가 생성됨.


(신조어) 분위기나 감정과 관련된 신체적 특성을 감지하기 위해 생체인식 센서를 사용하는 컴퓨터 기술. 분위기 및 감정의 컴퓨터 시뮬레이션


Focusing on Faces


사람의 vocal into nations, gestures, facial expression, 그리고 posture를 통해서 그 사람이 

engaged인지, distracted인지, annoyed인지를 알아 낼 수 있다.


사실이러한 것을 위해서 직접적인 사람의 해동변롸를 관찰하게 되는 것이 "affective computing"에서는 일반적인 것이다.

전통적으로 이렇게 사람의 얼굴과 몸동작을 관찰하는 방법을 많이 썻다.

하짐 입술의 떨림 같은것은 수염 때문에 알아내기 어렵고

입술, 눈, 코 입 과 같은 단일 부위에 대한 작용을 연결해서 감정으로 연결 시키는것은 사전에 심리 상태와 각 얼굴 부위별 반응에 따른 모델을 필요로 한다. 







Generating Quality Data


많은 이미지를 분석하기 위해서 컨설턴트가 동원 된다.

그다음 시스템을 지도학습 해야한다. 즉 어떤게 joy가 그렇지 않은지를 알려준다.

이때 joy에 관한 이미지를 사전에 사람이 분류해서 100,000 정도를 알려주게 된다.


각각의 이미지의 밝기를 비교하기도 한다.

그다음 각각의 statistical pattern recognition을 이용해서 어떤 사진이 joy 처럼 보이는지를 찾아내게 된다.

이제는 statistical pattern recognition는 "Deep learning"의 부분으로 이동 되었이며 이것이 훨신 powerful 하다고 한다. 




Deep Learning


계측적인 러닝 모델이다.


일단 픽셀에서 부터 일정한 패턴을 찾아서 군집하게 된다.

이것은 마치 어린아이가 자동차를 보았을때 그것이 무엇인지는 모르지만 하나의 영역이 생기고

앞으로 자동차와 비슷한 물건을 보면 처음본 이미지와 계속해서 연결되는 뇌의 구조를 모방하는 방식이다.


그리고 이러한 자동차의 모서리를 인지하고 그것의 모양을 각각의 차원으로 분할해서 저장한다.

따라서 어린아이는 자동차를 실제로 보던 TV를 통해서 2D 영상으로보던 모두 자동차로 인지하게 된다.




Applications and Multimodal Approaches


가장중요한 부분은 응용일것이다.


여전히 광고쪽이나 마케팅 쪽에서 그 효과를 측정할 수 있는 강력한 수단은 존재하지 않고 있다.


pain management for children. 아이들은 자신의 고통을 정확하게 설명하지 못한다. 하지만 이것을 통해서 진실을 알아낼 수 있다고 한다.

아이들의 pain level을 측정하는 수단이다.


physiological input: facial expressions, gestures, voice, 이러한 것들이 분명한 cue가 된다.




Conclusion


하지만 이러한 모든 방법은 사람의 집단주의에서 발생하는 감정의 숨김이라는 벽에 부닥치며

복잡한 이간의 감정을 예측하는것은 매우 어려운 일로 남아있다. 단순히 사람의 visual information만 가지고 판단할경우 잘못된 결과를 추출할 가능성이 매우 높게 된다.

철학자 스피노자가 말하길 인간의 감정은 48개라 한다. 이렇게 복잡한 감정을 컴퓨터가 이해하기란 애초부터 불가능 한것은 아닐까.

현재 컴퓨터 과학에서의 감정 인지는 걸음마 수준인것 같다.




Further Reading


Picard, R.W.

Affective Computing, The MIT Press, 2000.

Calvo, R.A., D’Mello, S.K., Gratch, J.,and Kappas, A. (Eds.)

The Oxford Handbook of Affective Computing, Oxford University Press, 2015.

Bartlett, M., Littlewort, G., Frank, M., and Lee, K.

Automated Detection of Deceptive Facial Expressions of Pain, Current Biology, 2014.

Narayanan, S., et. al.

Analysis of Emotion Recognition Using Facial Expressions, Speech and Multimodal Information, Proceedings of the International Conference on Multimodal Interfaces, 2004.

Emotient

https://vimeo.com/67741811











Google Alphabet




Alphabet = umbrella company


세르게이, 레리페이지는 이 회사의 CEO가 되었다.


Alphabet will operate as the parent company for a number of smaller companies, 


Other departments spinning off into their own sub-companies including 

research focused Life Sciences (Google contact lenses), 

the Google X lab (driverless cars, Google Glass, drone delivery), 

Calico (increasing longevity), and 

the company's robotics division. 


Google Ventures and Google Capital will also become independent Alphabet companies.



Nets -> Tony Fadell

Sidewalk Labs -> Dan Doctoroff

Calico -> Arthur Levinson

YouTube -> Susan Wojcicki

Google X -> Brin


Google의 CEO는 세번째로 sundar pichai가 그 자리에 올랐다.

Pichai의 나이는 43이다. 인도에서 태어 났다.

IIT를 졸업하고 대학원으로 Stanford Univ.에서 공부 했다. 거기서 석사학위를 받았다.


2004년에 처음 구글에 입사했고, 2008년에 Chrome을 출시하면서 이미 인터넷 브라우저 시장은 끝났다고 생각했지만, 그 판도를 뒤짚어 버렸다. IE와 Firefox가 자리잡고 있던 브라우저 시장을 석권 했다.


크롬은 그렇다고 가장 많이 쓰는 브라우저는 아니다.

하지만 크롬은 하나의 OS로써 크롬북과 같은 형태로 많은 학교에서 사용 하고 있다.


2013년에 크롬 사업부와 android 사업부를 통합하면서 앤디루빈이 회사를 떠나고

Pichai는 Senior vice president의 자리에 올랐다.


그리고 올해 그는 마침네 구글의 세번쨰 CEO 자리에 올랐다.

외국이며 젊은 나이에 그 자리에 올랐다는것으로 이것은 매우 이례적이며 인도인들에게 큰 자긍심이 될수 있다.

오랜 세월전 그는 단순이 수줍고 예의바른 학생일 뿐이었다.


그의 가능성을 기대해보자.




The history of Facebook.


Facebook은 10년이상 변화해 왔던 기업이다. 그것은 2014년 2월 4일 Mark Zuckerberg (오른쪽 사진) Dustin Moskovitz 그리고 3명의 하버드 기숙사 classmate들에 의해서 탄생된 것이다. 시작은 어색했지만, 그것은 현재 14억 사용자를 보유하고 있는 지상 최대의 Social Network Service 이다.


이러한 Facebook의 변천사를 함께 가보자.





In 2004, Facebook launches


하버드 학생들간의 연결 방법으로써 처음으로 "thefacebook"이라는 이름으로 그것은 처음 세상에 알려지게 된다.

social networking 사이트는 이것을 시작으로 컴림비아, 스탠포드, 예일 대학으로 각각 매달 퍼져 나갔다. 마침내12월이 되서 "thefacebook"은 가입자 100만이 넘어가는 상황에 이르렀다.





In 2005, Students spread the word


해당 사이트는 아이비리그를 넘어서 800개 이상의 대학을 포함하게 된다. 이때가 2005년 5월이다. 그리고 공식적인 이름을 "Thefacebook"에서 그냥 "Facebook"으로 8월에 변경하게 된다. 그리고 9월에 일반 고등학생들도 Facebook에 가입 할 수 있도록 허용 했다.





In 2006, Meet the News Feed


2006년까지 만 13세 이상이면 누구나 Facebook에 가입이 가능하도록 했다. 같은 해에 Facebook은 the News Feed를 소개 했다. 이것은 자신의 소셜 네트웍안에서의 새로운 업데이트나 사진 같은 것들을 하이라이트해서 보여주는 기능이다.

하지만, 이것을 기점으로 Facebook 유저들은 많은 요청을 하기 시작했다. 다시 예전으로 돌아가고자 희망하는 사용자가 적지 않았다.

그들은 대부분 이렇게 말했다 "I don't need to know everything about EVERYONE".





In 2007, Another new design


2007년 사월 Facebook은 그것의 디자인을 대대적으로 변경 했다. 

왼쪽 바에다가는 포토 노트 그룹 이벤트 같은것들을 위치 시켰고 친구, 네트워크 등은 최상위 inbox 안으로 이동 시켰다.

오월에 Facebook은 플랫폼을 launch 했다. 이것은 개발자들에게 third-party app을 개발할 수 있도록 한다. 이러한 앱들은 추후에 사용자들의 데이터를 과도하게 남용함으로써 또다른 문제를 야기 시키게 된다. 200년 말 Facebook은 광고를 출시하게 되고 이것은 몇몇 사용자들 다시 MySpace 같은 플랫폼으로 돌아가게 하는 결과를 낳는다.





In 2008, New profile pages





In 2009, The 'Like' button






In 2010, Growing privacy concerns

In 2010, Facebook adds 'check-ins'

Foursqaure와 같은 위치기반 체크인 서비스를 출시 한다.

In 2011, Photos, Photos everywhere

In 2011, Facebook Messenger

In 2012, Hello, Timeline

In 2013, Going mobile

2013년 후반기에 12억 사용자중 9억명의 사용자가 Facebook을 smartphone 또는 Tablet으로 접속하게 된다.

Facebook은 처음 web-first product 였지만, 이제는 이러한 사용 방식을 고려해볼 때 Mobile 기반의 기능이 강화되어야 함을 알 수 있다.

In 2013, Hashtags

In 2015, Embedded Facebook videos



아래의 그림은 2013년에 Facebook에서 나타낸 세계의 맵이다. 보면 China와 아프리카를 제외하고 대부분이 연결 되어 있음을 알 수 있다.

하지만 소셜 네트웍은 이미 포화 상태이며 변덕이 심한 젊은층이 어떻게 변화할지는 아무도 예상 할 수 없다.

이러한 요소를 빛추워 봤을 때 그렇게 낙관적이지 많은 않다.







Google I/O 2015 Keynote의 주요 내용



2015년 5월 29일 한국시간으로 새벽 1시 30분에 열린 Google I/O 2015의 Keynote에서 등장한 주요 내용을 다루도록 한다.


이번 구글 I/O 2015에서 다루는 것은 크게 두가지이다.

첫 번째는 어떻게 구글이 컴퓨팅 플랫폼과 모바일을 혁신하는지에 대한 것과

어떻게 구글이 모바일 사용자 경험(UX)를 혁신 하는지에 대한 것이다.




Android M Preview



안드로이드 M은 다시 기본으로 돌아가서, Policy와 safety 그리고 Quality에 그 초점을 맞춘다.

작년에 출시된 안드로이드 L의 경우 많은 변화를 가져왔지만, 안드로이드 M은 그러한 큰 변화는 없다.


안드로이드 M의 발표자는 아래와 같다.

(Android) Engineering 

Vice president

Dave Burker 

 


안드로이드 M의 변화는 아래와 같다.




App Permissions


기존의 permission들을 몇개의 중요한 케테고리로 통합함으로써 사용자들의 이해를 높였다.

설치할 때 permission을 물어 보는것이 아닌 실행 할 때 permission을 물어보게 만들었다.

또한 App permission을 App별로 다시 재조정할 수 있게 되었다.



한층더 보안을 신경 썻다고 할 수 있다. 



Web Experience


웹 앱을 개발자가 개발하려고 할 때 선택할 수 있는 옵션은 크게 두가지였다.


첫 번째는 Browser를 이용해서 앱을 실행 하는 것이고 두 번째는 Web View 를 이용하는 것이다,

두 번째는 Web View를 이용하는 것이다.


하지만 이제 새롭게 나온 방법인 Chrome custom taps을 이용하면 된다.

이것을 이용해서 ahead of time에 prefetch하는 작업을 할 수 있다.

통합 디자인을 설계할 수 있게 된다.



App Links 


앱을 실행해서 다른 앱과 연결을 하려고 할때 이제 선택을 하지 않고도 자동으로 연결 되어지게 할 수 있다.

개발자가 특별히 설정을 해주면 사용자의 선택 없이도 자동으로 연결 되어 진다.







Mobile Payments


To pay in store, users can do using NFC.

No need to lunch certain app.

Can use debit card or credit card.

700 hundred stores.



Fingerprint Support


결제를 인증하기 위해서 사용자의 지문이 사용 될 수 있다.

온라인 구매에서도 사용자의 지문이 사용 될 수 있다.

이것으 매우 편리하며 간단하게 결제를 진행 할 수 있게 해준다.


단순히 스마트폰의 잠금화면을 푸는것을 이용해서 결제를 진행 할 수 있게 되기 때문이다.



  



Power & Charging 


안드로이드는 Doze라고 불리우는 새로운 파워 메니지먼트 시스템을 도입 했다.


해당 기능은 사용자의 패턴을 사용해서 최적화를 진행 하게 된다. 

예를 들면, 사용자는 항상 테블릿을 영화나 책을 읽이 위해서 저녁에만 사용 했다고 하자.

이럴경우 사용패턴을 인지해서 네트웍 전력소비를 강하게 제한 할 수 있다.


아래는 데이터 동기화 화면이다.


사용이 발생 되어지지않는 저녁 시간에는 주기적으로 발생하는 동기화를 극히 제한하게 된다.

이를통해서 전력소비를 그렇기 않을때 보다 실험결과 2배까지 절약했다고 한다.






충전 기술의 경우 구글은 USB type C charger를 도입 했다.

이를 통해서 좀 더 빠른 충전을 달성 할 수 있다.



 




약간의 사용자 편의성 향상


Easy word selection and Floating clipboard toolbar

Direct share 기능

Simplified volume controls






Android Wear


Android Wear의 발표자는 아래와 같다.

Director, Android Wear

David Singleton


최근 일년간 안드로이드 웨어는 아래와 같이

4개의 OS와 7개의 웨어 제품군을 출시해 왔다.





상호작용 기능의 향상


Android Wear의 기능향상의 초점은 Phone과의 상호작용 기능 향상이다.


이중 가장 흥미로웠던 것은 Emoji recognizer로써 그림을 그려서 메시지를 응답하는 기능이었다.








다양한 센서들의 활용


안드로이드 웨어기기에 작창된 센서의 종류는 계속해서 늘어나고 있다.

아래의 그림과 같이 많은 센서들이 현재 장착된 상황이다.




이러한 센서 데이터를 이용해서 사용자들의 행동을 인지하게 된다.

즉 걷기, 달리기, 자전거 타기, 팔굽혀펴기, 골프 스윙 등을 인지 하게 된다.


Google Fit 앱의 운동정보 인지 내용


팔의 가속도를 인지해서 골프 스윙을 알아냄.



그 밖에도 스마트홈의 집 온도 인지

노래 재생

노래 가사 인식을 통한 음악 이름 알아내기

자동차 주행거리 파악 등이 있다.





현재 마켓에 등록된 웨어러블 앱은 4,000개 이상







Google의 Internet of Things


구글에서도 IoT를 장학하기위한 전략을 발표 했다.


그들이 생각하는 중점은 User Experience, Communications, Operating System 이렇게 3가지 이다.






Operating System


구글은 이를 위해서 Brillo라는 새로운 OS project를 발표 했다.




Communication


Google은 Cross Platform에서 개발자들이 편하게 앱을 개발할 수 있는 API를 제공한다.

이 프로젝트의 이름은 WEAVE 이다.





User Experience


사용자들은 여러개의 장치에서 하나의 UX를 경험 할 수 있다.

이를 위해서 Brillo와 WEAVE가 사용된다. 이 둘을 이용해서 마치 하나의 장치를 쓰는것과 같은 경험을 할 수 있게 된다.




Brillo와 Weave는 각각 아래와 같이 공개 된다고 한다.





User Experience의 통합 




구글은 Deep Machine 러닝을 통해서 사용자 경험의 향상을 모색 한다.

구글의 이미지 검색 능력이 세계 최고인것은 이미 잘알려진 사실이다.

Deep Neural Network을 간략히 설명하면 개구리 이미지를 찾기 위해서 여러 계층으로 나눠서 학습을 해서 찾아가는 방법이다.


기본적으로 계층적인 학습 모델을 가지는 것을 의미한다.


우선 첫 번째 계층에서는 edge, shade, shape등을 판별하게 된다.

두 번째 계층에서는 ear , leg, hand 등을 판별하게 된다.

마지막에서는 전체 이미지를 이해하게 된다.


간략하게 설명하면 deep neural network은 위와 같이 동작 한다.


이러한 Deep Learning을 통해서 구글은 음성인식 기술을 향상 아래와 같이 많이 개선 시켰다고 한다.






Google Now


발표자

Director

Google Now

Aparna Chennapargada



모바일이 사용자를 지원하기 위해서는 크게 아래 세가지가 필수 적이다.



위 세가지를 적절히 인지해서

사용자가 요청한 상황에 맞게 자동으로 원하는 정보를 표시해 준다.


기존의 Google Now 기능이 대폭 개선됬음을 의미한다.


예를들면, 아래와 같이 친구로부터 Tomorrowland라는 공연을 보자는 이메일을 받았을 때

홈버튼을 눌러서 Google Now를 실행하는 것만으로도 Tomorrowland라는 공연 정보를 바로 알 수 있게 된다.


이렇게 현재 상황에 맞춰서 내가 원하는 정보를 즉각적으로 표시해 주는 서비스 이다.






Google Photo



발표자

Photos

Director

Anil Sabharwal



구글에서는 사진을 관리하기 위한 새로운 앱을 출시 했다.


현재 사진관리는 하나의 포토를 찾기 위해서 끈임 없이 스크롤링을 해야하는 것을 지적 했다.


그들이 Google Photo에서 추구하는 전략은 크게 3가지 이며 아래와 같다.





그들은 기계학습을 이용해서 삶에서 중요한 이미지가 무엇인지를 자동으로 인지 하게 된다.


이러한 서비스를 무료로 무제한으로 구글은 제공한다고 한다. 

지금 부터 당장 사용 할 수 있다.






Google Translator


발표자

Engineering

Vice President

Jen Fitzpatrick






Developing



발표자

Developer group

Director

Jason Titus



발표전 나온 동영상에서 개발자들이 가지는 힘에 대한 영상이 있는데 감동적이었다.

마지막 문구는

Keep Building 이었다.


끈임없는 이슈는 아무래도 개발자들을 지원 하는 것일 것이다.



Developing life cycle은 아래와 같다. 이 각각에 대해서 언급 했다.





이미 안드로이드 앱 개발을 위해서 Eclipse 서비스를 중단하고 Android Studio를 출시 했었다.


이러한 Android Studio의 새로운 1.3 버전을 이야기 했다.

또한 NDK 개발자들을 위핸 C/C++ 지원도 이야기 했다.





Cloud Test Lab

개발자들의 테스트의 어려움을 해결해 주기 위해서 

22개의 스마트폰에서 자동으로 테스팅을 수행하며

그 결과를 받아 볼 수 있는 시스템을 제공할 것이라고 한다.


제공받을 수 있는 결과는 Crash report와 테스팅 과정이 기록된 Video 이다.


곧 출시된다고 한다. 






Google Play


Google Play

Product Manager

Ellie Powers


Personality와 연령을 고려한 검색 등을 강화 했다고 한다.


그리고 개발자들이 자신의 앱이 설치된 상황등을 기존 보다 더 자세히 볼 수 있다고 한다.






Udacity의 새로운 강의



3대 MOOC중 하나인 Udacity이다.

대학들이 중심이된 Coursera와 Edx와 다르게 Udacity는 기업들이 중심이 되서 만들어진 온라인 교육 사이트이다.


이곳에 Android Nanodegree라는 코스가 개설 되었다고 한다.





Google Cardboard


마지막으로 구굴은 Virtual Reality (VR)을 지원하기 위해서 

지난해 발표 했던 cardboard의 향샹과

새로운 SDK를 발표 했다.







그리고 Gopro와 결합 되어 360도 촬영을 가능하게 해주는 JUMP도 출시 했다.





LG Watch Urbane (LG 어베인)을 통해서본 스마트 시계의 철학

  웨어러블 기기들의 디자인 철학


Android wearable 2.0이 출시 되었다.

스마트 가젯 기기를 사용해 보기위해서


LG 어베인을 구입 했다.

약 2주간 사용해본 경험을 이야기 하겠다. 




스마트 시계의 종류 (2015.5월 기준)


  • LG G watch
  • LG G watch R (세계최초 원형 디자인)
  • LG G watch Urbane (필자가 구매)
  • LG G watch Urbane lte
  • Sony Smartwatch 3
  • Asus ZenWatch 
  • Motorola Moto 360
  • Samsung Gear Live
  • Apple Watch


이렇게 많은것들 중 urbane을 선택한 이유는 아래와 같다.


1) Android Wear 탑제

삼성과 LG의 경우 자체적인 OS를 탑제하는 경향이 있다.

삼성은 타이젠을, LG는 LG Wearable Platform을 탑제 한다.

하지만, 이것은 좋지 않다. 앱도 많이 없고 해당 플랫폼이 활성화 될수는 없다.


2) 디자인

현재까지 나온 스마트 워치중에서 가장 시계다우며 디자인이 이쁘다.


3) LTE를 고르지 않은 이유

월 11,000원 내고 전화기를 2대 들고 다니고 싶지 않다.

LTE 탑제는 발열 문제를 야기 시킨다.

배터리가 410mAh -> 710mAh로 늘어나면서 무거워 졌다.

Android Wear가 아닌 LG Wearable Platform을 쓴다 (가장 안좋은 이유).

제품 가격이 비싸다.



Watch의 쓰임


TED에서 구글 공동창업자인 세르게이 브린과 Google I/O 2014에서 선더 피차이 수석 부사장이 이미 웨어러블 기기의 철학을 이야기 했었다.


스마트 시계와 안경의 근본적인 철학은 사용자들이 더이상 스마트폰을 처다보며 인생을 낭비하지 않게 하기 위함이다.

우리는 눈앞에 친구와 연인 가족이 있음에도 의미 없는 유리조각 따위를 습관적으로 문지르며 소중한 시간을 놓치고 있다. 


이러한 행동을 바꾸기 위해서 

언제든지 필요하다면 즉각적으로 몸에 부착되어서 알림이 오는 웨어러블 기기의 쓰임을 강조 했다.


아래의 그림은 Google I/O 2014 Keynote에서 사용된 자료이다.

보통 스마트폰을 사용했을 때 알림이 오면, 사람들은 폰을 보고 그상황에서 폰을 보는 지속시간을 나타낸다.

빈도는 적지만 일단 폰을 보게되면 실제 삶과 단절되는 시간이 길어진다.


하지만 웨어러블 기기를 사용하게 되면 빈도는 늘어나지만 짧게 확인하고 바로 현실로 돌아 오게 된다.

웨어러블 기기의 쓰임과 철학은 바로 이것이다.


더 즉각적으로 가상세계와 연결되며 좀 더 실제 삶을 살가게 하는것.


 



실제 사용 경험


일단 필자는 지샥 전자시계를 항상 차고 다녀서 항상 막강한 기능의 시계를 갈망 했었다.

따라서 만족 한다.


아래는 필자가 사용하는 시계 화면이다.

실제로 마켓에는 N가지의 시계 배경들이 있고 모두 멋진화면을 제공한다.

아래의 앱은 InstaWeather라는 앱이다.


 


첫번째 화면은 행동이 없을때 Ambient Mode로 저전력 상태에서 보여주는 화면이고

두번째 화면은 팔을 움직였을때의 Active Mode일 떄의 화면이다.


보여주느 정보는 아래와 같다.

  • 시간별 날씨
  • 시계 배터리
  • 폰 배터리
  • 지역


그밖에 좋은 어플은



Audio Recorder: 음성 메모

Sleep: 수면 상태 분석

Wear Aware: 스마트폰과 멀어지면 자동 알림 (폰불실 방지)

Google Fit: 운동 상태 체크, 걸음수, 심장박동 (BPM), 활동량 등




단점


솔직히 말하면 아래와 같은 단점이 있다.


정신 사납다

앞서서 철학이 실제 삶에 더 충실하게 만들어 준다고 했지만

사실 시계를 참으로써 기존에는 인지 하지 않았던 수많은 Notification들을 인지하게 된다.

매번 스팸 처리하지만 계속해서 새로운 것들이 Vibration를 통해서 알림이 온다.


그렇다고 아에 Mute 모드로 쓰게 되면 기존에 스마트폰만 쓸때와 다를께 없게 된다.

철학은 사람들을 distract 하게 하지 않는 것이지만 

실제로 쓰면 스마트폰만 쓸때 보다 더 실제 삶과 단절 된다. 



시계가 가지는 사획적인 의미

사실 시계를 처다본다는 것은 스마트폰을 처다보는것과는 다른 사회적인 압박이 있다.

바로 회의중에 시계를 자꾸 처다보면 발표자로 하여금 발표를 빨리 끝내라는 뉘양스를 주게 된다.

실제로 회의중에 쓸때없는 스팸으로 시계를 몇번 쳐다 보았다가 발표자가 말을 빨리 했고 그결과 회의가 더 빨리 끝나는 경험을 했다.

즉, 시계를 자주 보는것은 타인에게 그다지 좋은 영향을 주지 않는다.



스마트폰 배터리 소모

스마트 시계는 항상 스마트폰과 페어링(동기화) 된 상태에서 동작한다.

따라서 스마트 시계를 쓰면 스마트폰이 배터리가 더 소모되는 기이한 경험을 한다.


실제로 멀티미터기로 전류소모를 측정해본결과

Bluetooth 4.0과 Processor에 의해서 소모되는 에너지소모는 무시할 수 없었다.

더욱이 먼거리에서 Wi-Fi로 두 장치가 페어링 된다면 더 에너지소모가 가중 된다.










'Computer Science > IT Issue' 카테고리의 다른 글

Sensing Emotions (Affective Computing)  (0) 2015.10.22
Google Alphabet  (0) 2015.08.12
페이스북의 역사 / The history of Facebook.  (0) 2015.07.24
Google I/O 2015 Keynote의 주요 내용  (0) 2015.05.28
Android New Runtime  (0) 2014.11.20

Android New Runtime


The ART Manifesto

Developers should not work around the runtime

Code should be fast

garbage collection should help, not hinder

The runtime should scale


Performance (Better living through compilation)






ART garbage collection


Faster overall gc

single, short pause

less fragmentation

less memory usage



64-bit support (Supporting the future)


Advantages

Increased address space as Android usage diversifies

Increased performance from 64-bit instruction sets and cores

Full support for existing 32-bit apps




ART의 소개




Process VM


Interpretation- it involves a cycle of fetching a source instruction, analyzing it, performing the required operation, and then fetching the next source instruction all in software

Binary translation - it attempts to amortize the fetch and analysis costs by translating a block of source instructions to a block of target instructions and saving the translated code for repeated use.



guest state를 host state로 맵핑 시키는 것.

memory addressing architecture를 emulation 시키는 것.

instruction emulation

exception을 emulation

operating system call을 에뮬레이션


추가로 성능 향상을 위해서, code cache management 기술이 있다.


VM의 개발


loader는 게스트 코드 데이터를 게스트에 할당된 메모리 이미지에다가 쓰기를 한다. 또한 런타임 코드들도 기록 한다.
이것은 게스트 코드와 데이터이지만, 결국 이것 자체는 실행되어질수 없기 대문에 런타임을 포함하는 것이라고 할 수 있다.

이러한 코드들은 결국 interpretation 또는 binary translation의 루틴에서의 인풋이라고 볼 수 있다.


Loader는 initialization block을 한다. 이것은 Code cache를 위한 메모리 공간을 할당하며 process 에뮬레이션을 위한 테이블 공간을 위한 메모리 공간도 할당하게 된다.

추가로, initialization 과정에서는 해당 시스템에서 발생할수 있는 모든 signal에 대한 handler를 생성하기위해서 Host OS를 호출하게 된다. initialization 다음에 에뮬레이션 과정이 시작되게 된다.

Emulation Engine은 Binary Translator 또는 intepreter에 의해서 동작 하게 된다. 


Code cache manager는 Code cache를 관리함.


Profile Data는 최적화를 위해서 사용됨.


OS call Emulator는 시스템 콜을 에뮬레이션 해준다.


Runtime은 반드시 Guest에서 발생할 수 있는 인터럽트에 대해서 핸들을 해줘야한다. 번역된 코드에 있는 Trap을 유발하는 코드에대해서 반드시 처리를 해줘야한다. Runtime은 이것을 처리하기 위해서 exception emulator를 가지게 된다. 이것을 처리해줄때 반드시 Guest의 state를 보장해줘야한다. program counter 또는 register value, trap condition 같은 것들을 말이다.


Side table은 translation 절차에 의해서 만들어 지는 것이다. 이것의 중요한 사용처중 하나는 exception model을 정확하게 동작시키기 위함이다. 즉 source ISA를 정확하게 매칭 시킨다. 









보충 자료




 JIT의 정의 : JIT는 일반적인 뜻으로 'Just-in-time'의 약어로 ‘즉시’라는 뜻입니다.

 JIT 컴파일은 Java, C#등에서 제공하는 ‘실시간’ 컴파일 방식입니다. 자바 가상 머신 실현 방법의 하나입니다. 가상 머신의 실현 방법으로는 현재 3종류가 있습니다. 이 JIT 컴파일러는 자바의 중간 코드인 바이트코드를 실행하는 컴퓨터 운영 체계(OS)와 중앙 처리 장치(CPU)에 맞춘 2진 코드로 일괄 변환한 후에 실행합니다. 자바 해석기 방식의 10~20배의 성능을 얻을 수 있습니다. 다시말해 JIT는 JIT Compiler라 하고 자바 프로그램의 실행 속도를 향상 시키기 위해서 개발된 기술입니다. 일반적인 자바 프로그램 실행은 byte code 가 native code(JVM이 실행중일 OS가 이해할 수 있는 code)로 변환 후 실행 되게 합니다. 이때 JIT는 byte code loading시 변환된 native code의 주소를 v-table에 표기하고 이후 실행시에는 곧바로 native code를 실행 하는 방식으로 속도를 향상 시킵니다. 이것은 기존의 interpreter방식의 단점을 보완한 방법으로 특정 메쏘드를 지속적으로 호출할 때 더 빠른 성능을 보입니다. 하지만 이로 인해 일부 프로그램의 경우 오히려 성능 저하를 가져 올 수 있습니다. (반복 적인 메소드 호출이 없는 경우에는 지속적인 bytecode->machine code 로의 컴파일이 발생 하기 때문에 성능 저하가 발생 합니다.) 이를 보완 하기 위한 compile 방식으로 AOT(ahead-of-time)방식이 있습니다. 이 AOT방식은 실행 전에 미리 컴파일 하는 방식으로 성능 향상에 도움이 됩니다.


좀 더 쉽게 요약


AOT(Ahead of Time) - 실행 시간 이전에 이루어지는 컴파일 방식이며 (실행시점이 아닌 설치시점에 미리 이루어진다는 뜻),

컴파일 타임에 중간언어로 번역한 다음 가상 머신 코드(중간 언어)를 최종 기계어로 번역한다.


JIT(Just In Time) - 실행 시간 이전에 컴파일 한 내용을 미리 가상 머신 코드(중간 언어)로 저장해놓고

                        컴포넌트 사용시 (매번 실행시 마다)에 가상 머신 코드를 최종 기계어로 바꾸어 명령어가 실행되도록 한다.




JIT 컴파일러의 경우 바이트코드를 재실행하는 경우 네이티브 코드를 다시 사용한다.

이 NativeCode의 단위는 class단위가 아니고 method단위이다.

JIT 컴파일러는 byte코드를 최적화한다.


AOT 컴파일러의 경우

- JIT와 동일하게 ByteCode->NativeCode로 컴파일한다. 

- 다른점은, 하나의 JVM에서만 사용할 수 있는게 아니라,여러 JVM에서 사용할 수 있다는 것이다.

- AOT Compiler는 생성한 AOT code를 Shared Cache에 저장한다. 그러면 이 Shared cache를 사용하는 JVM은 기동 시 AOT Code를 바로 사용할 수 있게 되어 기동시간이 줄어드는 이점이 있다




Wikipedia


Ahead of time compilation (AOT)


AOT는 컴파일을 하는 작업의 하나의 종류로 고수준의 언어인 java와 .net 같은 것들의 중간코드 IR 들 즉, 머신에 독립적인 코드들을 native 코드로 변경 하는 작업을 말한다.


보통 중간코드들은 실행되는 순간에 머신 코드로 변경이되는 Just in time(JIT)방식을 취하게 된다. 하지만 이러한 방법들은 응용프로그램의 성능 저하에 원인이 될 수 있다.

AOT는 이러한 수행중 컴파일되어야하는 필요성 자체를 제거하는 기법으로, 실행전에 모든것을 컴파일 하는 방법이다. 하지만 이것은 제한적인 수행 범위를 같는 것이 일반적이다.


AOT 컴파일 방식이 효과적인 상황에 대해서 이야기 하겠다.

1) interpreter가 너무 느린 경우

2) JIT 가 너무 복잡한 경우

3) 지연이 너무 큰경우


AOT는 표준 네이티브 컴파일러와 같은 최적화된 머신 코드를 만들어 낸다. 

즉, compiler 기술이라고 볼 수 있다.



Just in time compilation (JIT) - compiler라는게 정설이다 -

JIT는 dynamic translation기술로 알려져 있으며, 실행중에 중간코드를 머신코드로 변경하는 작업을 한다.

JIT compliation은 2개의 전통적인 기술을 조합한 방법이다. 즉, AOT 기술과 interpretation 기술의 각각의 장점과 단점들을 융합한것이다. 

중간 언어까지는 AOT로 컴파일을 하니, 그 장점을 취함.

Interpretation에서 제공하는 타겟에 덜 의존성적이며 이로인해서 컴파일러 개발 보다는 덜 보작하다는 장점을 취함. 또한 따로 최적화를 하지 않기 때문에 실행에 지연을 발생 시키지 않는다. 


- Applications

현대의 대부분의 runtime 환경들은 JIT compilation 기술에 의존한다. 높은 실행 속도를 제공하기 위해서

bytecode로 AOT를 이용해서 모두 변경 한다음에,

이러한 bytecode를 runtime시점에 machine code로 변경하게된다. 똑같은 코드가 다시 실행된다면, 그것을 재활용 하게 된다.

이것은 결국 interpreter 기능을 향상 시킨 기법이다.


이 JIT Compilation의 궁극적인 목표는 bytecode interpretation의 장점을 유지한체로, static compilation의 성능을 뛰어 넘는 것이다.

기본적으로, JIT은 interpreter 보다는 빠르다. 하지만 당연히 profiling을 하닌까 손실은 발생 할 수 있다.

그리고 몇몇 케이스에 대해서 static compiler 보다도 빠를 수 있다. 왜냐하면, 많은 최적화 기술들은 run time에만 실현 가능한 기술들이 있기 때문이다.


1) 실행중에 타켓 CPU나 운영체제에 맞추어서 최적화를 시킬 수 있다. 

2) 특정 영역이 얼마나 빈번히 실행 되는지에대한 통계값을 이용해서 최적화를 시도할 수 있다.

3) Inlining을 통해서 global code optimization들을 수행 할 수 있다. 이게 static에서는 어려운 이유가 virtual call 때문이다. 다형성으로 인해서 override 된 함수는 실행 해봐야 뭐가 콜 될지를 알 수 있다.

4) GC를 최적의 조건에 맞춰서 부를수 있다. 스태틱하게도 되지만, 어렵다. 실행해봐야 최적의 GC 시점을 알 수 있다.


- Startup delay and optimizations

bytecode를 Load하고 Compile하는 시간 때문에, JIT는 실행의 처음 단계에서 약간의 지연을 발생 시킨다.

이것을 startup time delay 라고 종종 부른다. 

JIT compiler는 최적화가 잘된 Machine Code를 만들어 낼 수 있다. 하지만, 지연은 더더욱 증가하게 되는  trade-off 관계를 가진다.

JVM에서의 전략은 다음과 같다.

일단 bytecode는 interpretation 된다. 그다음 JVM은 bytecode의 실행 빈도를 모니터링 하게 된다. 이렇게해서 가끔 실행 되는 코드들은 최적화를 위한 컴파일 시간을 대폭 줄이게 된다. 하지만 자주 실행 되는 코드라면, 최적화 기능을 모두 적용해서 interpretation 하게 된다. 이렇게하면 초기 지연은 좀 발생하지만, 자주실행되는 bytecode 이기 때문에 다음번 부터는 최적화된 machine code로 실행 할 수 있게 된다. 





Interpreter (이것은 compiler와 대립되는 기술이다.)

컴퓨터 프로그램을 직접적으로 실행하는 방식을 말한다. 즉, 프로그래밍 언어나 스크립트로 짜여진 명령어들을 머신 코드로 실행전에 변경하지 않고 그것을 실행 하는 것을 말한다. 그때 그때 머신 코드로 변경해서 실행하는 것이다.


interpreter는 다음의 전략들중 하나를 프로그램 실행을 위해서 사용 한다.

1) 소스코드를 파스하고 그것을 실행한다.

Lisp programing language and Dartmouth BASIC


2) 소스코드를 중간 코드 몇몇으로 변경한다음 그것을 실행 한다.

Perl, Python, MATLAB, Ruby


3) 인터 프리터 시스템의 한부분인 컴파일러에 의해서 만들어진 precompiled code를 실행하게 된다. (중간코드를 사용)

UCSD Pascal


소스코드는 ahead of time에 컴파일 되어지며, 이것은 머신에 독립적인 코드로 저장되어져 있다.

그다음 이것은 런타임에 인터프리터나, JIT 컴파일러 같은것들에 의해서 runtime에 실행 되어 진다.


java 같은 시스템들은 위 기술들중 몇개를 혼용해서 사용 한다.



Interpreter, static (ahead-of-time) compilation, and Just-in-time (JIT) 3개 구분

전통적으로 컴퓨터 프로그램을 실행하는 방법은 3가지 방법이 존재한다.


1) 인터프리터는 고수준 언어를 저수준언어로 실행할때 번역하게 된다.

2) AOT는 실행 이전에 모두 저수준언어로 번역하여 실행 한다.

3) JIT는 사실 위 두 기술의 hybrid 형태이다. 실행할때 고수준언오를 저수준언어로 번역하게 되고, 이것은 캐쉬에 저장된다. 따라서 매번 번역 과정을 수행하지 않는다. 하지만 분명히 AOT에 비해서 실행중에 번역을 하므로 오버해드는 존재한다.






+ Recent posts