본문 바로가기

분류 전체보기149

[컴파일러] - 어휘 분석 (Lexical analysis) II 1. 토큰(token) 언어 이론에서 알파벳 (alphabet)은 a, b, 1, 2, /와 같은 기호의 유한 집합이다. 알파벳에 속한 기호들의 유한한 나열을 스트링 (string) 또는 단어 (word)라고 한다. 어떠한 알파벳이 a, b, c를 포함한다면, abc는 이 알파벳으로 만들 수 있는 스트링이 된다. 그러나 만약 어떠한 알파벳이 a, b로 구성된다면 abc는 이 알파벳으로 만들 수 있는 스트링이 아니다.어떠한 스트링 $s$에 대해 $s$의 절댓값 $|s|$는 스트링에 나열된 기호의 수이며, 이를 스트링의 길이라고 한다. 예를 들어, 스트링 "lexical"의 길이는 7이 된다. 언어 이론에서는 길이가 0인 스트링도 존재하는데, 이를 empty string이라고 한다.언어 (language)는.. 2016. 1. 19.
[컴파일러] - 어휘 분석 (Lexical analysis) I 1. 개요 컴파일러의 첫 번째 단계는 소스 코드를 정규 문법 (regular grammar)에 따라 토큰 (token)으로 분류하는 어휘 분석 또는 스캐닝 (scanning)이다. 예를 들어, "Lexical analysis is the first step of compiler"라는 문장에서 'L', 'e', 'x', 'i', 'c', 'a', 'l'을 따로 놓으면 어떠한 의미도 없지만, "Lexical"이라는 하나의 조각으로 보면 의미를 갖게 된다. 어휘 분석 단계에서 검출되는 의미 있는 조각을 어휘항목 (lexeme)이라고 하며, 어휘 분석기는 소스 코드에서 이러한 어휘항목을 검출하여 토큰을 생성한다. 2. 용어 정의 어휘 분석에서 사용하는 용어를 정의한다. 그러나 용어의 정의만으로는 용어가 갖는 의.. 2016. 1. 18.
[컴파일러] - 컴파일러의 구조 1. 개요 컴퓨터에서 실행되는 모든 소프트웨어는 프로그래밍 언어로 작성된다. 그러나 프로그래밍 언어는 인간이 이해할 수 있는 수준의 언어로써, 기계어를 사용하는 컴퓨터는 이해할 수 없는 언어이다. 따라서 프로그래밍 언어로 작성된 프로그램은 컴퓨터에서 실행되기 위해 일정한 규칙에 따라 기계어의 형태로 번역되어야 하는데, 이러한 번역을 수행하는 시스템 소프트웨어를 컴파일러 (compiler)라고 한다. 예를 들어, 한국어를 모국어로 사용하는 사람이 영어로 작성된 글을 읽기 위해서는 영어를 한국어로 번역해야 한다. 이러한 상황에서 영어는 프로그래밍 언어이고, 한국어를 모국어로 사용하는 사람은 컴퓨터이며 한국어는 기계어이다. 그리고 영어를 한국어로 번역해주는 사람이나 소프트웨어는 컴파일러가 된다. 2. 컴파일러.. 2016. 1. 17.
[머신러닝] - 홉필드 네트워크(Hopfield Network) 1. 개요 1982년 물리학자 존 홉필드가 제안한 신경망의 물리적 모델로써 최적화, 연상기억 등에 사용된다. 2. 용어 정의 양극화(bipolarization): 0과 1로 표현된 데이터를 -1과 1로 변환하는 것 3. 알고리즘 구조 자기조직화맵(SOM)이나 인공신경망에서 가장 많이 사용되는 퍼셉트론(perceptron) 등은 연산이나 학습 과정에서 지속적으로 가중치(weight)가 변경되는 알고리즘이다. 다른 알고리즘과 다르게 홉필드 네트워크(Hopfield network)는 고정된 가중치를 이용하여 완전한 정보를 연상하는 차이점이 있다. 홉필드 네트워크는 학습 패턴에 대해 계산된 고정 가중치 행렬을 저장하고, 입력 패턴이 들어올 때마다 가중치 행렬을 이용하여 입력 패턴에 대한 학습 패턴을 연상하면 된.. 2016. 1. 10.
[머신러닝] - 자기조직화지도(Self-Organizing Map, SOM) 1. 개요 대뇌피질의 시각피질의 학습 과정을 모델화한 인공신경망으로써 자율 학습에 의한 클러스터링을 수행하는 알고리즘이다. 2. 용어 정의 클러스터링(clustering): 데이터의 유사성에 기초하여 데이터를 몇몇의 그룹으로 분류하는 기법 입력층(input layer): 입력 벡터를 입력받는 층 경쟁층(competitive layer): 입력 벡터의 특성에 따라 입력 벡터가 한 점으로 클러스터링 되는 층 가중치(weight): 인공신경망에서 가중치는 각 입력 값에 대한 입력 값의 중요도를 값을 말함 노드(node): 경쟁층에서 입력 벡터들이 서로의 유사성에 의해 모이는 하나의 영역 3. 알고리즘 구조 자기조직화지도 인공신경망 기법중에서 가장 단순한 알고리즘 중 하나이다. 알고리즘에서 입력 벡터와 경쟁층 .. 2016. 1. 5.