전체 글
Junior research engineer, AI/CV 분야 커리어 및 관련 공부에 관한 글을 포스팅합니다.
-
1. 그리디 알고리즘이란? 매순간 최적이라고 생각하는 경우를 선택하는 알고리즘입니다. 'greedy' 혹은 탐욕 이라고 이름이 붙은 이유는 전체적인 맥락에서의 최적과 각 순간(locally)에서 최적이라고 생각되는 경우가 다를 수도 있기 때문입니다. 그리디 알고리즘에서는 지나간 선택 중에서 혹시 더 좋은 경우의 수가 있었는지 돌아보지 않는다는 점이 동적 프로그래밍과 다른 점입니다. 2. 한계 '각 단계'에서의 최선을 선택하기 때문에 반드시 최적의 해를 구할 수 있는 것은 아닙니다. 따라서 overall optimal option 보다는 최적에 가장 가까운 값을 구하기 위해 사용하는 알고리즘입니다. 최적의 답을 구해주지 않는다면 왜 그리디 알고리즘을 활용할까요? 그 이유는 시간 절약 때문입니다. 더 적은 ..
[알고리즘] 탐욕 알고리즘 Greedy algorithm1. 그리디 알고리즘이란? 매순간 최적이라고 생각하는 경우를 선택하는 알고리즘입니다. 'greedy' 혹은 탐욕 이라고 이름이 붙은 이유는 전체적인 맥락에서의 최적과 각 순간(locally)에서 최적이라고 생각되는 경우가 다를 수도 있기 때문입니다. 그리디 알고리즘에서는 지나간 선택 중에서 혹시 더 좋은 경우의 수가 있었는지 돌아보지 않는다는 점이 동적 프로그래밍과 다른 점입니다. 2. 한계 '각 단계'에서의 최선을 선택하기 때문에 반드시 최적의 해를 구할 수 있는 것은 아닙니다. 따라서 overall optimal option 보다는 최적에 가장 가까운 값을 구하기 위해 사용하는 알고리즘입니다. 최적의 답을 구해주지 않는다면 왜 그리디 알고리즘을 활용할까요? 그 이유는 시간 절약 때문입니다. 더 적은 ..
2022.08.31 -
Hadoop&Hive 강의를 시작하기 전 AWS 에서 인스턴스를 생성하고, aws 서버에서의 shell programming을 위한 리눅스 기초에 대해 배웠습니다. 1. 기본 명령어 - 파일 생성 및 생성된 파일 확인하기 $ #optional $ sudo apt install tree #설치 시 tree 구조를 확인할 수 있음 $ touch hello.txt #파일 생성 $ echo #파일 내용 확인 $ ls #디렉토리 내 파일 리스트 확인 $ ls -l $ ls -a $ cat
[리눅스] basic - 명령어Hadoop&Hive 강의를 시작하기 전 AWS 에서 인스턴스를 생성하고, aws 서버에서의 shell programming을 위한 리눅스 기초에 대해 배웠습니다. 1. 기본 명령어 - 파일 생성 및 생성된 파일 확인하기 $ #optional $ sudo apt install tree #설치 시 tree 구조를 확인할 수 있음 $ touch hello.txt #파일 생성 $ echo #파일 내용 확인 $ ls #디렉토리 내 파일 리스트 확인 $ ls -l $ ls -a $ cat
2022.08.30 -
그래프에서 '탐색'이란 노드를 순회하는 것을 말합니다. 영어로는 graph traversal이라고 합니다. 노드의 탐색 알고리즘 중 가장 대표적인 두 가지는 너비 우선 탐색(BFS)과 깊이 우선 탐색(DFS)입니다. 아래 예제 그래프를 통해서 탐색 방식이 어떤지 자세히 알아보도록 하겠습니다. 그림은 트리처럼 생겼지만, 그래프 순회 시 cycle을 이루게 하는 edge가 추가되어도 순회하는 데에는 오류가 없을 것입니다. 1. 너비 우선 탐색 breadth-first search : 같은 레벨에 있는 노드, 즉 형제 노드들을 우선으로 순회 그래프의 구현은 딕셔너리로, 탐색 방법은 두 개의 리스트 자료구조를 활용할 수 있습니다. 그래프를 구현한 딕셔너리는 아래와 같이 key에 한 노드를, value에 해당 노..
[알고리즘] 그래프 Graph (2) - BFS&DFS그래프에서 '탐색'이란 노드를 순회하는 것을 말합니다. 영어로는 graph traversal이라고 합니다. 노드의 탐색 알고리즘 중 가장 대표적인 두 가지는 너비 우선 탐색(BFS)과 깊이 우선 탐색(DFS)입니다. 아래 예제 그래프를 통해서 탐색 방식이 어떤지 자세히 알아보도록 하겠습니다. 그림은 트리처럼 생겼지만, 그래프 순회 시 cycle을 이루게 하는 edge가 추가되어도 순회하는 데에는 오류가 없을 것입니다. 1. 너비 우선 탐색 breadth-first search : 같은 레벨에 있는 노드, 즉 형제 노드들을 우선으로 순회 그래프의 구현은 딕셔너리로, 탐색 방법은 두 개의 리스트 자료구조를 활용할 수 있습니다. 그래프를 구현한 딕셔너리는 아래와 같이 key에 한 노드를, value에 해당 노..
2022.08.23 -
대회 막바지인 8월초 코로나 확진을 받고 이제야 써보는 첫 대회 후기입니다! 주최에서 제공한 대회의 베이스라인 코드는 mmdetection이었지만 사진 데이터가 딱봐도 생산팀의 실제 데이터여서 보안 사항에 민감할 것 같았고 parameter tuning 위주로 진행했기 때문에 깃허브 업로드는 없이, 간략하게 정리해보겠습니다. 1. 개요 주최/주관: LG화학, AIfactory 대회 목표: 각 입자의 형상을 최대한 정확하게 segmentation Problem type: instance segmentation (이미지 내에 존재하는 객체를 탐지하는 동시에 각 class 내에서도 픽셀 단위로 분류 필요) 데이터 종류: 비정형 데이터 (이미지) 조 구성: 3명 Env: python 3.8, torch 1.12..
[AI factory, LG 해커톤] LG입자형태분석 대회 참가 후기대회 막바지인 8월초 코로나 확진을 받고 이제야 써보는 첫 대회 후기입니다! 주최에서 제공한 대회의 베이스라인 코드는 mmdetection이었지만 사진 데이터가 딱봐도 생산팀의 실제 데이터여서 보안 사항에 민감할 것 같았고 parameter tuning 위주로 진행했기 때문에 깃허브 업로드는 없이, 간략하게 정리해보겠습니다. 1. 개요 주최/주관: LG화학, AIfactory 대회 목표: 각 입자의 형상을 최대한 정확하게 segmentation Problem type: instance segmentation (이미지 내에 존재하는 객체를 탐지하는 동시에 각 class 내에서도 픽셀 단위로 분류 필요) 데이터 종류: 비정형 데이터 (이미지) 조 구성: 3명 Env: python 3.8, torch 1.12..
2022.08.15 -
7월 7일부터 진행되고 있는 LG 입자 형태 분석 모델 개발 해커톤 에 참여중입니다. 이어드림스쿨에서 7월 20일까지 computer vision 베이직 강의를 듣고 프로젝트기간 중 참여할 대회로 이 해커톤을 선택하게 되었습니다. 베이스라인 코드가 MMdetection을 기반으로 제공이 굉장히 잘 되어있기 때문에 성능을 올리는 것도 중요하지만 이 신경망이 어떻게 동작하는지 공부하는 것에 초점을 맞추려고 노력했습니다. 주어진 시간이 한정적이었기 때문에 성능을 한꺼번에 많이 올리는데 집중하여 프로젝트를 진행했지만, 성능이 개선되었다면 어떤 hyper parameter의 영향인지, 그 이유는 무엇인지 조금 더 탐구할 여유가 있었으면 좋겠다는 생각이 들었습니다. 1. 왜 SOLO model 을 쓰게 되었는가?..
[AI factory, LG 해커톤] SOLO model7월 7일부터 진행되고 있는 LG 입자 형태 분석 모델 개발 해커톤 에 참여중입니다. 이어드림스쿨에서 7월 20일까지 computer vision 베이직 강의를 듣고 프로젝트기간 중 참여할 대회로 이 해커톤을 선택하게 되었습니다. 베이스라인 코드가 MMdetection을 기반으로 제공이 굉장히 잘 되어있기 때문에 성능을 올리는 것도 중요하지만 이 신경망이 어떻게 동작하는지 공부하는 것에 초점을 맞추려고 노력했습니다. 주어진 시간이 한정적이었기 때문에 성능을 한꺼번에 많이 올리는데 집중하여 프로젝트를 진행했지만, 성능이 개선되었다면 어떤 hyper parameter의 영향인지, 그 이유는 무엇인지 조금 더 탐구할 여유가 있었으면 좋겠다는 생각이 들었습니다. 1. 왜 SOLO model 을 쓰게 되었는가?..
2022.08.02 -
그래프란? 실제 세계의 현상이나 사물을 노드 Node와 간선 Edge 로 표현하기 위해 사용하는 알고리즘으로, 네비게이션 길찾기, 게임 내 캐릭터 이동, 지식 그래프 등에 사용되며, 앞서 배웠던 트리 또한 그래프의 일종입니다. 우리에게 익숙한 그래프의 예시로는 쾨니히스베르크의 다리 문제가 있습니다. 1. 용어 노드 Node : 위치, 정점 vertex와 같음 간선 Edge : 위치 간의 관계를 표시한 선, 노드를 연결한 선, link 또는 branch 와 같 인접 정점 Adjacent vertex : 간선으로 직접 연결된 노드를 말함 차수 Degree : 방향이 없는 그래프에서 하나의 노드에 연결된 노드의 갯수 평균 차수 average degree: 노드 개수와 간선의 개수를 비교하기 위한 값 진입 차수..
[알고리즘] 그래프 Graph (1)그래프란? 실제 세계의 현상이나 사물을 노드 Node와 간선 Edge 로 표현하기 위해 사용하는 알고리즘으로, 네비게이션 길찾기, 게임 내 캐릭터 이동, 지식 그래프 등에 사용되며, 앞서 배웠던 트리 또한 그래프의 일종입니다. 우리에게 익숙한 그래프의 예시로는 쾨니히스베르크의 다리 문제가 있습니다. 1. 용어 노드 Node : 위치, 정점 vertex와 같음 간선 Edge : 위치 간의 관계를 표시한 선, 노드를 연결한 선, link 또는 branch 와 같 인접 정점 Adjacent vertex : 간선으로 직접 연결된 노드를 말함 차수 Degree : 방향이 없는 그래프에서 하나의 노드에 연결된 노드의 갯수 평균 차수 average degree: 노드 개수와 간선의 개수를 비교하기 위한 값 진입 차수..
2022.08.01 -
1. 특징 데이터에서 최댓값/최솟값을 빠르게 찾을 수 있는 완전 이진 트리 (complet binary tree) 완전 이진 트리란? 노드를 삽입할 때 최하단 왼쪽 노드부터 채워지는 트리 최댓값과 최솟값의 시간복잡도, 데이터 삭제 및 삽입의 시간복잡도는 $O(logn)$ (depth가 한 단계씩 내려가면서 체크횟수를 1/2로 줄여주기 때문) 값의 중복을 허용함 좌/우 노드 간 값의 크기는 상관 없음 2. 구조 최대 힙 Max heap / 최소 힙 Min heap 최대 힙 : 각 노드의 값은 해당 노드의 자식 노드가 가진 값보다 크거나 같다 (최소 힙은 반대 - 자식 노드보다 부모 노드의 값이 항상 같거나 더 작다) → 최댓값은 탐색할 필요도 없이 root node\ 3. 힙& 이진 탐색 트리의 비교 공통..
[자료구조] 힙 (Heap)1. 특징 데이터에서 최댓값/최솟값을 빠르게 찾을 수 있는 완전 이진 트리 (complet binary tree) 완전 이진 트리란? 노드를 삽입할 때 최하단 왼쪽 노드부터 채워지는 트리 최댓값과 최솟값의 시간복잡도, 데이터 삭제 및 삽입의 시간복잡도는 $O(logn)$ (depth가 한 단계씩 내려가면서 체크횟수를 1/2로 줄여주기 때문) 값의 중복을 허용함 좌/우 노드 간 값의 크기는 상관 없음 2. 구조 최대 힙 Max heap / 최소 힙 Min heap 최대 힙 : 각 노드의 값은 해당 노드의 자식 노드가 가진 값보다 크거나 같다 (최소 힙은 반대 - 자식 노드보다 부모 노드의 값이 항상 같거나 더 작다) → 최댓값은 탐색할 필요도 없이 root node\ 3. 힙& 이진 탐색 트리의 비교 공통..
2022.07.27 -
current와 parent의 라임 속에서 허덕이는 자료구조입니다. 1. 용어 ▶ Node 노드: 트리에서 데이터를 저장하는 기본 요소 + 연결된 다른 노트에 대한 branch 정보 ▶ edge = branch: 노드를 연결하는 선 ▶ Root node: 트리의 가장 위에 있는 노드 ▶ Parent node: 위아래로 연결되어 있는 두 개의 노드 중 위에 있는 노드 ▶ Child node: 위아래로 연결되어 있는 두 개의 노드 중 아래에 있는 노드 ▶ Leaf Node (terminal node): childe node가 없는 노드 ▶ Level: Root node로부터 하위 branch로 연결된 노드의 길이 (root node: level 0) ▶ Depth 깊이: Root node로부터 노드까지 거쳐..
[자료구조] 트리 (tree)current와 parent의 라임 속에서 허덕이는 자료구조입니다. 1. 용어 ▶ Node 노드: 트리에서 데이터를 저장하는 기본 요소 + 연결된 다른 노트에 대한 branch 정보 ▶ edge = branch: 노드를 연결하는 선 ▶ Root node: 트리의 가장 위에 있는 노드 ▶ Parent node: 위아래로 연결되어 있는 두 개의 노드 중 위에 있는 노드 ▶ Child node: 위아래로 연결되어 있는 두 개의 노드 중 아래에 있는 노드 ▶ Leaf Node (terminal node): childe node가 없는 노드 ▶ Level: Root node로부터 하위 branch로 연결된 노드의 길이 (root node: level 0) ▶ Depth 깊이: Root node로부터 노드까지 거쳐..
2022.07.26