본문 바로가기

전체 글149

정보이론과 엔트로피 1. 정보이론에서 엔트로피가 갖는 의미 물리학에서 엔트로피는 어떠한 물리계의 무질서한 정도를 의미한다. 정보이론에서도 엔트로피는 무질서한 정도를 뜻하며, 더욱 엄밀히 말하자면 "불확실성"을 의미한다. 아래의 [그림 1-a]는 엔트로피가 낮은 데이터이고, [그림 1-b]는 엔트로피가 높은 데이터이다. [그림 1] 데이터와 엔트로피 위의 [그림 1-a]의 데이터에서는 모든 영역이 검은색이므로 불확실성이 낮다. 즉, 데이터 중에 어떤 부분을 선택하더라도 검은색이 추출된다는 것을 확실하게 말할 수 있다. 그러나 [그림 1-b]의 데이터에서는 흰색과 검은색이 무작위하게 분포되어 있기 때문에 불확실성이 높다.위의 [그림 1-a]와 같은 데이터를 표현할 때는 검은색을 표현하는 단 하나의 비트 1만 있으면 충분할 것이.. 2016. 10. 20.
[C#] - Microsoft Text Analytics API 1. API 소개 마이크로소프트의 Cognitive Services에는 Emotion API 이외에도 Text Analytics API를 제공한다. Text Analytics API의 주요 기능으로는 아래와 같은 두 가지가 있다. 감성 분석 (sentiment analysis): 문장이 긍정 또는 부정을 나타내는지 판별하는 기능중요 문구 추출 (key phrase extraction): 문장의 주제가 되는 문구들을 추출하는 기능 Text Analytics API에서는 이외에도 문장 작성에 이용된 언어 판별, 주제 추출 기능을 제공한다. 이 글에서는 Text Analytics API를 이용하여 감성 분석과 중요 문구 추출 기능을 이용하는 방법에 대해 설명한다. 2. API 키 발급Text Analytics.. 2016. 10. 9.
[머신러닝] - RNNs (Recurrent Neural Networks) 1. 개요 기존의 FNNs (Feedforward Neural Networks)는 각각의 학습 벡터에 대해 독립적으로 학습을 진행하였다. 그러나 실세계에서는 문장, 영상 및 음성 데이터 등 시간 $t-1$에서의 입력과 결과가 $t$에서의 입력과 결과에 영향을 주는 경우가 많이 존재한다. [그림 1] 플립 북 (Flip book) 플립 북 (flip book)은 이전과 다음의 데이터가 서로 연관되어 있는 대표적인 예시이다. 플립 북이라는 것은 어떠한 동작을 하나의 종이에 그리고, 다음 종이에는 해당 동작을 미세하게 변화시킨 그림을 그리는 작업을 반복하여 마치 그림이 움직이는 것과 같은 효과를 보여주는 것이다 [그림 1]. 플립 북에서 $n-1$번째 종이에 그려진 그림이 $n$번째 종이에 그려질 그림에 영향.. 2016. 10. 6.
[C#] - Microsoft Emotion API 1. API 소개 최근 마이크로소프트는 컴퓨터 비전, 음성 인식, 언어 분석 등의 기능을 Cognitive Services라는 이름으로 제공하고 있다. 마이크로소프트의 Cognitive Services는 일정 제약 조건 하에서 무료로 이용해볼 수 있으며, C# 및 Java, JavaScript, PHP, Python 등의 다양한 언어로 API를 이용할 수 있다. 이 글에서 소개하는 것은 Cognitive Services에서 제공하는 Emotion API이다. Emotion API는 사진을 입력받아서 사진에 나타나는 인물들의 감정을 분석하는 기능을 제공한다. Emotion API는 사진에 나타나는 모든 인물들의 감정을 아래와 같은 8가지의 감정으로 분석하여 JSON 형태의 결과값으로 반환한다. anger .. 2016. 10. 5.
[C#] - Visual Studio에서 Metro UI Framework 추가하기 1. Metro 디자인 Metro 디자인은 과도한 그래픽을 제외하고, 콘텐츠를 주로 하는 UI를 설계하는 것을 원칙으로 한다. 원래 Metro 디자인은 마이크로소프트에서 윈도우 폰과 윈도우 8, 윈도우 10의 개발을 위해 발전되었으나, 최근에는 웹 어플리케이션과 앱 어플리케이션 등 다양한 디자인 분야에서 이용되고 있다.Metro 디자인의 가장 큰 특징은 단색, 그라데이션의 제거 등과 같은 심플함이다. Metro 디자인의 심플한 아이콘과 콘텐츠 위주의 구성은 직관적이며, 누구나 쉽게 디자인 할 수 있다. 반대로 애플의 iOS 등은 실물을 단순화한듯한 디자인을 많이 이용하는데, 이는 Metro 디자인과 비교할 때 많은 차이점이 있다 [그림 1]. [그림 1] 애플의 다지인 컨셉과 마이크로소프트의 Metro .. 2016. 10. 3.
[최적화/전역 최적화] Tabu Search Tabu search는 simulated annealing, genetic algorithm 등과 같이 최적화 문제의 형태에 상관없이 주어진 최적화 문제를 풀기 위한 메타휴리스틱 (metaheuristic) 알고리즘이다. 기존의 simulated annealing, genetic algorithm과 같은 최적화 알고리즘들은 기본적으로 neighbor search를 기반으로 동작하기 때문에 current solution이 개선되는 방향으로만 진행하려는 성질이 있다. 이러한 성질로 인해 simulated annealing 및 genetic algorithm은 빈번하게 [그림 1]과 같은 지역 최적점 (local optimum)에 수렴한다. Tabu search는 빈번하게 지역 최적점에 수렴하는 문제를 해결하.. 2016. 9. 28.
[수리적 최적화] 유전 알고리즘 (Genetic Algorithm)과 전역 최적화 1. 유전 알고리즘 (Genetic Algorithm) 소개 유전 알고리즘은 생물체가 환경에 적응하면서 진화해가는 모습을 모방하여 최적해를 찾아내는 최적화 방법이다. 유전 알고리즘은 이론적으로 전역 최적점을 찾을 수 있으며, 수학적으로 명확하게 정의되지 않은 문제에도 적용할 수 있기 때문에 다양한 응용에서 매우 활발히 이용되고 있다. 일반적으로 유전 알고리즘에 대해 알고리즘이라는 표현을 이용하지만, 유전 알고리즘은 특정한 문제를 풀기 위한 알고리즘이라기 보다는 최적화 문제를 풀기 위한 일반적인 방법론에 가깝다. 즉, 모든 문제에 적용 가능한 하나의 알고리즘이나 소스 코드가 있는 것이 아니기 때문에 유전 알고리즘의 원리를 이해하고, 이를 자신이 원하는 문제에 적용할 수 있도록 설계하는 것이 중요하다. 유전.. 2016. 9. 16.
[C#] - 클래스 정의와 상속 1. 클래스 정의 C#에서는 class 키워드를 이용하여 클래스를 정의할 수 있다. 아래의 [코드 1]은 C#에서 Parent 클래스를 정의한 것이다. 1234567891011121314151617181920212223242526272829303132namespace ex{ class Parent { private string name; public Parent(string name) { this.name = name; Console.WriteLine("constructor - parent"); } ~Parent() { Console.WriteLine("destructor - parent"); } public void PrintName() { Console.WriteLine(name); } } class.. 2016. 9. 15.
[C#] - 메소드 (Method) 1. Call by value와 Call by reference 프로그래밍을 배우다 보면 call by value와 call by reference라는 개념을 한 번쯤은 접해봤을 것이다. 간단히 설명하면, call by value는 변수의 값을 복사해서 전달하는 것이고, call by reference는 메모리상의 주소와 같이 변수에 직접 접근할 수 있는 정보를 전달하는 것이다. 예를 들어, A가 어떠한 문서를 필요로 하는 상황에서 해당 문서를 복사해서 복사본을 전달하는 것은 call by value이고, 해당 문서의 원본 자체를 전달하는 것은 call by reference이다. 기본적으로 int, double과 같은 원시 자료형 (primitive data type)으로 선언된 매개변수에 대해서 C#.. 2016. 9. 15.
[JavaScript] - Web Notification API와 알림 기능 1. 알림 (Notification) 기능 안드로이드나 iOS와 같은 모바일 환경에서는 notification이라는 기능을 이용하여 스마트폰 이용자에게 새로운 정보, 어떠한 작업의 완료 등과 같은 정보를 알릴 수 있다 [그림 1]. [그림 1] 안드로이드와 iOS의 알림 (notification) 기능 그동안 모바일 환경에서 매우 유용하게 이용되고 있는 notification 기능을 데스크톱 브라우저 환경에서 이용하기 위해서는 자바스크립트를 이용하여 직접 notification 기능을 구현하는 수 밖에 없었다. 그러나, 최근에 크롬, 파이어폭스, 사파리에 Web Notification API라는 것이 추가되면서 자바스크립트를 이용하여 간편하게 notification 기능을 구현할 수 있게 되었다. 2. .. 2016. 9. 13.
[JavaScript] - 네임스페이스 (Namespace) 1. 네임스페이스 네임스페이스는 이름이 존재하는 공간과 같다. 우리는 이름이 C로 같은 두 사람을 구분할 때, A 지역에 거주하는 C와 B 지역에 거주하는 C로 구분하기도 한다. 이러한 구분에서 이름이 C로 같은 두 사람이 A와 B라는 서로 다른 지역 (공간)에 존재했기 때문에 우리는 두 사람을 식별할 수 있었다. 복잡한 프로그램을 개발하거나, 협업을 하다보면 전역 범위에 위의 예시와 같이 이름이 같은 변수, 함수, 객체 등을 정의하는 경우가 발생한다. 네임스페이스는 이러한 경우에 발생할 수 있는 충돌을 방지하기 위해 이름이 존재하는 공간을 정의하는 기능을 제공한다. 네임스페이스 기능을 제공하는 대표적인 언어로는 C++와 자바가 있다. C++에서는 아예 namespace라는 키워드를 이용하여 변수, 함수.. 2016. 9. 11.
Java 환경에서 트위터 API를 이용한 SNS 분석 1. 트위터 어플리케이션 생성 트위터 API를 이용하기 위해서는 트위터 가입 및 트위터 어플리케이션 생성이 필요하다. 트위터 가입은 특별한 사항이 없으므로 생략하고, 트위터 어플리케이션 생성에 대해 설명한다. 1) 트위터 어플리케이션을 생성하기 위해 https://apps.twitter.com/에 접속하여 트위터 계정으로 로그인한다. 그 다음, 우측에 있는 Create New App 버튼을 클릭한다 [그릠 1]. [그림 1] 트위터 어플리케이션 생성 1 2) 페이지에 나타난 Name, Description, Website 항목을 입력한다 [그림 2]. 테스트용으로 생성할 경우에는 Website 항목에 임의의 URL을 입력해도 된다. [그림 2] 트위터 어플리케이션 생성 2 3) 어플리케이션 생성 후 나타.. 2016. 9. 9.