본문 바로가기

전체 글

(120)
[DeepLearning] 1. AI 프로그래밍 복습 * 인공 신경망과 관련이 있다. 목차 분류 (classification) 인공 뉴런 (Artificial Neuron) 인공 뉴런의 연결 인경신경망의 분류 인공신경망의 학습 객체 지향 프로그래밍 (Object Oriented Programming) 상속 (Inheritance) numpy 1. 분류 어떤 클래스를 가지고 있는 것을 분류하는 것 ex. 개? 고양이? 이 사진은 개일까? 고양이일까? 클래스(ex.개, 고양이)가 정해져있고 input이 어디에 속하는지 판단 클래스는 두개일 수도있고 많을 수도 있다. 이 함수를 만들어내는 것을 분류 문제이다. 컴퓨터는 오직 0,1로 구성되어있기때문에 개와 고양이를 어떤 숫자에 대응시켜야한다. ex. 개(1,0) 고양이 (0,1) 텐서값을 입력으로 받아서 (1,0..
[Ontology] 온톨로지란? 온톨로지란 사람들이 세상에 대하여 보고 듣고 느끼고 생각하는 것에 대하여 서로 간의 토론을 통하여 합의를 이룬 바를, 개념적이고 컴퓨터에서 다룰 수 있는 형태로 표현한 모델이다. 일종의 지식 표현으로 컴퓨터는 온톨로지로 표현된 개념을 이해하고 지식처리를 할 수 있게 된다. 이의 목적은 정보 시스템의 대상이 되는 자원의 개념을 명확하게 정의하고 상세하게 기술하여 보다 정확한 정보를 찾을 수 있도록 하는데 목적이 있다. 개인에게 국한되는 것이 아니라 그룹 구성원이 모두 동의하는 개념이고 프로그램이 이해할 수 있어야함으로 여러가지 정형화가 존재한다. formal: 형식적이어야한다. 사람의 개입없이 기계가 읽을 수 있는 언어로 작성되어야한다. explicit: 명백해야한다. 여러가지 뜻을 가진 단어를 상황에 맞..
[Elastic Search] 동의어사전 Tokenizer에 의해 토큰이 분리되면 다양한 토큰 필터를 적용해서 가공이 가능하다. 그중에서 동의어 처리에 대한 필터는 엘라스틱서치에서 제공하는 Synonym 필터를 사용한다. 동의어 사전은 원문에 특정 단어가 존재하지 않아도 색인 데이터를 토큰화해서 동의어나 유의어에 해당하는 단어를 함께 저장하여 검색이 가능하도록 하는 기능이다. 동의어를 추가하는 방법은 크게 두가지로, 동의어를 매핑 설정 정보에 미리 파라미터로 등록하거나 특정 파일을 별도로 생성해서 관리할 수 있는데 대부분 후자를 이용한다. 동의어 파일은 엘라스틱서치가 설치된 서버 아래 config 디렉토리에 생성한다. 저장 방식 1. 동의어 추가: 단어를 쉼표로 분리하여 등록한다. "Elasticsearch"와 "엘라스틱서치"를 동의어로 지정하..
[Algorithm] 공간 복잡도 1. 공간 복잡도란? 프로그램을 실행시킨 후 완료하는데 필요로 하는 자원 공간의 양을 말한다. 공간의 복잡도를 결정하는 것으로 보통 배열의 크기가 몇인지, 얼마 만큼의 동적 할당인지, 몇 번의 호출을 하는 재귀함수 인지 등이 있다. 총 공간요구 = 고정 공간 요구 + 가변 공간 요구로 나타낼 수 있다. 2. 고정 공간, 가변 공간 고정 공간은 입력과 출력의 횟수나 크기에 관계없는 공간의 요구를 말한다. ex) 코드 저장 공간, 단순 변수, 변수, 상수 저장 가변 공간은 프로그램 실행 중에 요구되는 요소이다. ex) 배열 전달, 재귀 호출, 회귀 주소 함수 호출시에 할당되는 지역 변수들이나 동적 할당되는 객체들도 모두 공간이 필요한데, 특히 재귀함수의 경우 매 함수 호출마다 매개변수, 지역변수, 함수의 복..
[Algorithm] 시간 복잡도 1. 시간복잡도란? 간단한 정의는 알고리즘의 성능을 설명하는 것이다. 이를 위해 알고리즘을 수행하기 위해 프로세스가 수행해야하는 연산을 수치화한 것이라고 생각하면 된다. 이 시간복잡도는 주로 빅-오 표기법을 사용해 나타낸다. 2. 빅오 표기법 시간 복잡도는 빅-오(Big-O), 빅-오메가(Big-Ω), 빅-세타(Big-θ) 방법으로 표기한다. 위 세가지 표기법은 각가 최악, 최선, 중간의 경우에 대하여 나타내는 방법이다. 연산 횟수가 다항식으로 표현될 경우, 최고차항을 제외한 모든 항과 최고차항의 계수를 제외시켜 나타낸다. 이 중에서도 빅오 표기법이 가장 자주 사용된다. " 이 정도 시간까지 걸릴 수 있다." 를 고려해야 그에 맞는 대응이 가능하기 때문이다. 3. 빅오 표기법의 종류 복잡도 1 10 10..
[Elastic search] 데이터 검색 엘라스틱서치는 인덱스에 저장된 문서를 검색할 수 있도록 다양한 검색 기능을 제공한다. 문서는 색인 시 설정한 분석기에 의해 분석 과정을 거쳐 토큰으로 분리되는데, 이러한 분석기는 색인 시점에 사용할 수도 있지만 검색 시점에서 사용하는 것도 가능하다. 특정 문장이 검색어로 요청되면 분석기를 통해 분석된 토큰의 일치 여부를 판단해서 그 결과에 점수를 매긴다. 검색 대상이 되는 필드는 분석이 되는 Text 타입의 유형이 될 수도 있고, 분석이 되지 않는 Keywork 타입의 유형이 될 수도 있다. 엘라스틱서치에서는 다양한 검색 조건을 충족시키기 위해 Query DSL이라는 특수한 쿼리 문법을 제공한다. uri로 검색어를 보내는 방법과 request Body로 검색하는 방법이 있다. elastic search에..
[자료구조] DFS & BFS 0. DFS, DFS 학습 전 알아야 할 것 인접 행렬: 2차원 배열로 그래프의 연결 관계를 표현하는 방식 파이썬에서도 2차원 리스트로 구현한다. 연결이 되어 있지 않은 경우에는 논리적으로 정답이 될 수 없는 큰 값 중 999999999 등의 값으로 초기화해서 사용한다. INF = 999999999 # 2차원 리스트를 이용해 인접 행렬 표현 graph = [ [0,7,5], [7,0,INF], [5,INF,0] ] 인접 리스트: 리스트로 그래프의 연결 관계를 표현하는 방식, 모든 노드에 연결된 노드에 대한 정보를 차례대로 연결하여 저장한다. 인접 리스트는 연결 리스트를 사용하면 되는데, 연결 리스트의 경우 파이썬은 기본 자료형인 리스트 자료형이 append 등 메소드를 제공하기 때문에 단순히 2차원 리스..
[APM] Message Queue 1. Message Queue란? 1-1) 프로세스 혹은 프로그램이 데이터를 서로 교환할 때 사용하는 방법이다. - 서로 다른 프로세스 사이에 메시지를 교환할 때 AMQP(Advanced Message Queuig Protocol)이라는 프로토콜을 사용한다. (AMQP: 시스템 간 메시지를 교환하기 위해 공개 표준으로 정의한 프로토콜) - AMQP를 사용하면 다른 벤더 사이에 메시지를 전송하는 것이 가능해진다. 1-2) 메시지를 임시로 저장하는 간단한 버퍼이다. - 메시지 전송 시 producer 컴포넌트가 메시지를 메시지큐에 추가한다. 해당 메시지는 consumer 컴포넌트가 메시지를 검색하고, 이를 사용해 특정 작업을 수행할 때 까지 메시지큐에 저장한다. - 각 메시지는 하나의 소비자에 의해 한번만 ..