전체 글

(163)
(Review) On Decomposing a Deep Neural Network into Modules ABSTRACT ① 딥러닝은 많은 최신 소프트웨어에 사용되고 있다. ② 일반적으로 DNN(Deep Neural Network)은 훈련 데이터를 이용해 신경망을 학습 시킨 후 예측에 사용한다. ③ 모델의 레이어를 관측할 수 있지만, 딥러닝 모델은 하나의 유기적인 요소로 다뤄진다. ④ 모델에 적용된 로직을 변경하기 위해서는 몇 가지 과정이 필요하다. ㉠ 학습 데이터의 변경 요구 : 어떤 로직을 추가/제거하기 위해서는 특정 클래스에 속한 훈련 데이터를 추가/제거해야 한다. ㉡ 모델의 재학습 요구: 모델이 변경된 학습 데이터를 다시 학습해야 하기 때문에 계산 리소스와 시간이 많이 요구된다. ⑤ 이 논문에서는 DNN 모델을 DNN 모듈로 분해하는 방법을 제안한다. ㉠ MNIST, EMNIST, FMNIST, KM..
동적계획법(Dynamic Programming) ※ 이 글은 chatGPT를 기반으로 작성한 글입니다. ① 동적 계획법은 복잡한 문제를 효율적으로 해결하는 알고리즘 설계 기법 중 하나이다. ② 동적 계획법은 일반적으로 다음과 같은 단계로 수행된다. ㉠ 문제를 하위 문제로 나눈다. ㉡ 가작 작은 크기의 하위 문제부터 해를 구한다. ㉢ 작은 하위 문제의 해를 저장하고, 큰 문제의 해를 계산할 때 이를 이용한다. ㉣ 모든 하위 문제의 해를 계산하여 최종적인 문제의 해를 구성한다. ③ 동적계획법을 사용하기 위해선 문제가 최적 부분 구조와 중복 부분 문제를 만족해야 한다. ㉠ 최적 부분 구조(Optimal Substructure)를 갖는 문제는 큰 문제의 최적해가 작은 하위 문제들의 최적해로 구성되는 경우를 말한다. ⓐ 정점 A, B, C, D가 존재하고 각 ..
브루트 포스 ※ 이 글은 chatGPT를 기반으로 작성한 글입니다.
라빈 카프 알고리즘 ※ 이 글은 chatGPT를 기반으로 작성한 글입니다.
보이어 무어 알고리즘(Boyer moore)
문자열 검색 알고리즘: KMP(Knuth-Morris-Pratt) ※ 이 글은 chatGPT를 기반으로 작성한 글입니다. ① KMP(Knuth-Morris-Pratt) 알고리즘은 문자열 검색 알고리즘(string matching algorithm) 중 하나로, 특정 패턴 문자열을 찾기 위한 알고리즘이다. ㉠ 보이어-무어 알고리즘(boyer-moore algorithm)과 함께 가장 많이 사용되는 문자열 검색 알고리즘이다. ② 브루트 포스 방식을 이용하면 최악의 경우 O(N * M)의 시간 복잡도를 갖기 때문에 이를 사용하는 것은 효율적이지 않다. 브루트 포스 ※ 이 글은 chatGPT를 기반으로 작성한 글입니다. hemahero.tistory.com ③ KMP 알고리즘은 패턴 문자열의 접두사와 접미사가 일치하는 최대 길이를 이용한다. ㉠ 패턴의 유사도를 측정하여 불필요..
홀짝 정렬(Odd-Even sort) ※ 이 글은 chatGPT를 기반으로 작성한 글입니다. ① 홀짝 정렬은 배열을 오름차순으로 정렬하는 병렬 정렬 알고리즘이다. ㉠ 홀짝 정렬은 브릭 정렬(brick sort)이라고도 알려져있다. ② 홀짝 정렬은 분할 정복 전략(devide-and-conquer strategy)를 사용하는 병합 정렬을 기반으로 한다. ③ 홀짝 정렬의 기본 원리는 다음과 같다. ㉠ 홀수 인덱스의 인접한 두 요소를 비교한다. ㉡ 순서가 잘못되어 있으면 순서를 바꾼다. ㉢ 짝수 인덱스에 대해서 ㉠ ㉡을 시행한다. ㉣ 정렬이 완료될 때까지 ㉠ ㉡ ㉢를 반복한다. ④ 홀짝 정렬의 의사 코드(psuedo code)는 다음과 같다. HTML 삽입 미리보기할 수 없는 소스 ⑤ 비교적 구현이 매우 간단하지만, 최악의 경우 시간 복잡도가 O..
시간 복잡도(Time Complexity) ※ 이 글은 chatGPT를 기반으로 작성한 글입니다. ① 시간 복잡도(time complexity)는 알고리즘의 수행 시간이 입력 크기에 따라 어떻게 증가하는지를 분석하는 데 사용되는 개념이다. ② 알고리즘의 시간 복잡도를 분석할 떄는 일반적으로 알고리즘이 실행하는 기본적인 연산 수행 횟수를 계산하고, 이를 입력 크기와 비교한다. ③ 시간 복잡도는 일반적인 최선, 평균, 최악의 경우로 나뉜다. ④ 시간 복잡도는 일반적으로 빅오(Big - O) 표기법을 사용하여 표기한다. 빅오 표기법은 입력 크기에 대한 함수의 상한(upper bound)을 나타내며, 알고리즘의 실행 시간이 이 함수보다 더 느리게 증가하지 않는 것을 보장한다. ㉠ 이를 수학식으로 나타내면 다음과 같이 나타낼 수 있다. ⓐ 이 부등식은 알..