본문 바로가기

반응형

분류 전체보기

(369)
NASNet 최근 인공지능 학계에서 큰 화두가 되고 있는 분야는 바로 AutoML일 것입니다. AutoML이란 딥러닝 architecture를 사람이 직접 설계하는 것이 아닌 machine learning 방법론으로 설계하는 방법론으로 여러 방법론이 있습니다만, 이번 포스트에서는 학습을 통해 최적의 architecture를 찾아가는 architecture search 방법론을 알아볼 계획입니다. Architecture search에서의 학습은 유전 알고리즘, 강화학습, gradient 방식 등이 주로 사용되며 이번 포스트에서 알아볼 NASNet은 강화학습 기반의 architecture search 방법론입니다. Neural Architecture Search (NAS) 강화학습으로 최적의 architecture를 찾..
itertools 모듈 이번 포스트에서는 파이썬의 itertools 내장 모듈에 대해 알아보려고 합니다. itertools는 효율적인 반복을 위한 반복기 빌딩 블록을 generator를 이용한 iterator 형태로 구성하여 빠르고 효율적으로 메모리를 사용할 수 있습니다. itertools 모듈의 자주 쓰이고 중요한 메소드에 대해 알아보겠습니다. 무한 이터레이터 무한으로 반복할 수 있는 메소드입니다. 보통 여기에 속하는 메소드들은 종료 조건을 파라미터로 따로 명시합니다. count(start=0, step=0) 끝나는 지점이 정해지지 않은 range 라 생각하면 편합니다. start와 step만 인수로 주어지기 때문에, 길이가 정해진 다른 리스트와 보통 같이 사용합니다. cycle() 주어진 인자에서 요소를 반환하면서 요소의 ..
유니코드와 UTF-8 유니코드 (Unicode) 유니코드는 유니코드 consortium 에서 규율하는, 전 세계의 모든 문자를 다루도록 처리된 표준 문자 전산 처리 방식으로 전 세계의 모든 문자를 담은 ISO/IEC 10646 Universal Character Set을 사용함으로써 각 언어의 문자체계에 따른 충돌을 해결했습니다. 따라서, 한글, 간체자, 아랍 문자 등을 통일된 환경에서 깨뜨리지 않고 사용할 수 있습니다. 아스키코드 초창기 문자를 표현하던 방식은 미국 국립 표준 협회 (ANSI)에서 표준화한 ASCII (American Standard Code for Information Interchange) 코드로 1바이트에 문자를 표현한 방식입니다. Checksum 1비트를 제외한 7비트의 128글자로 (영문 키보드로 ..
최단 경로 문제 (2) - 플로이드 워셜 알고리즘 플로이드 워셜 (Floyd Warshall) 알고리즘은 모든 노드에서 다른 모든 노드까지의 최단 경로를 계산하는 알고리즘으로 다익스트라 알고리즘처럼 단계 별로 거쳐가는 노드를 기준으로 수행합니다. 하지만, 다익스트라 알고리즘처럼 방문하지 않은 노드 중 최단 거리를 찾는 과정을 거치지 않고 다이나믹 프로그래밍 방법처럼 2차원 테이블에 대해 각 노드별 최단 거리를 업데이트하는 방법으로 수행하여 음수 간선을 가지는 그래프에 대해서도 동작합니다. 다이나믹 프로그래밍의 상향식 테뷸리이션 방법으로 2차원 최단 거리 테이블을 업데이트하는 방식으로 이루어지는데요. a노드와 b노드의 최단거리 테이블을 업데이트하기 위한 점화식은 다음과 같습니다. $D_{ab} = min(D_{ab}, D_{ak}+D_{bk})$ 각 단계..
최단 경로 문제 (1) - 다익스트라 알고리즘 최단 경로는 지도 상의 한 지점에서 다른 지점으로 갈 때 가장 빠른 길을 찾는 것과 비슷한 문제입니다. 각 지점은 정점 (vertex), 정점사이의 간선 (edge)은 길에 해당하고 가중치는 간선에 대한 시간, 거리 등의 이동비용에 해당합니다. 구성한 그래프의 형태에 따라 각각 최적화된 다양한 최단 경로 알고리즘이 존재합니다. 이번 포스트에서는 그 중 가장 대표적인 다익스트라 (Dijkstra) 알고리즘을 살펴보겠습니다. 다익스타라 알고리즘은 네덜란드의 에츠허리 다익스트라가 1956년에 고안한 알고리즘으로 특정한 노드에서 출발하여 다른 모든 노드로 가는 최단 경로를 계산하는 알고리즘입니다. 특히, 다익스타라 알고리즘은 매 상황에서 가장 비용이 적은 노드를 선택하는 그리디 알고리즘으로 분류됩니다. 알고리즘..
코딩테스트 문제 (20) - 유효한 팰린드롬 팰린드롬은 앞뒤가 똑같은 단어나 문장을 말합니다. 뒤집어도 같은 말이 되는 것이죠. 문제 주어진 문자열이 팰린드롬인지 확인하는 문제입니다. 대소문자를 구분하지 않고 영문자와 숫자만을 대상으로 합니다. 1. "A man, a plan, a canal: Panama" => True 2. "race a car" => False 풀이 영문자와 숫자만을 대상으로 하므로 string의 isalnum()을 이용하거나 정규표현식의 re 라이브러리를 이용해도 됩니다. 앞뒤가 똑같으므로 영문자와 숫자만의 string으로 만든 이후에 앞에서 1개, 뒤에서 1개씩 뽑아내면서 같으면 계속 진행하고 다르다면 False를 return하면 됩니다. kaggle.com의 notebook으로 작성한 풀이는 다음과 같습니다. 홍머스 정리..
코딩테스트 문제 (19) - 무지의 먹방 라이브 카카오 2019 블라인드 코딩테스트 기출문제입니다. 문제 1. food_times = [3,1,2], k = 5 => 1 2. food_times = [8,6,4], k = 15 => 2 풀이 효율성 테스트까지 통과해야 합니다. 일반적인 for 문을 지속적으로 돌면서 시뮬레이션 할 경우 정확성 테스트는 통과할 수 있으나 효율성 테스트는 통과할 수 없을 겁니다. 1번 케이스를 한 번 생각해보죠. 5초가 되기 전까지 1->2->3->1->3의 순으로 음식을 먹어 남아있는 음식은 1이 될겁니다. 이렇게 생각을 해보면 어떨까요? 우선 먹는 시간이 적은 음식부터 오름차순으로 (시간, 음식 index) 형태로 나열해봅시다. 그렇다면 [(1,2), (2,3), (3,1)] 이 될겁니다. 음식의 개수가 3개이기 때문에..
Xception Xception은 eXtreme Inception의 약자로 기존 Inception 모델이 채널, 공간 correlation을 분리한 것을 depthwise separable convolution으로 강화한 모델입니다. Inception V3과 비슷한 수의 파라미터를 가지면서 image classification에서 더 좋은 성능을 이끌어 냈습니다. Inception 일반적인 convolution은 높이, 너비의 spatial dimension과 channel dimension을 함께 correlation한 결과를 도출합니다. Inception은 이와 다르게 먼저 서너 개의 1 x 1 convolution으로 channel correlation을 먼저 매핑한 후 3 x 3, 5 x 5 convolution..

반응형