[알고리즘] 매개변수 탐색 알고리즘: 최적의 설정을 찾는 방법
·
컴퓨터 과학/알고리즘
기계 학습 모델을 개발할 때, 성능을 극대화하기 위해서는 모델의 하이퍼파라미터를 적절히 설정하는 것이 중요합니다. 하이퍼파라미터란 모델의 학습 과정에 직접적으로 영향을 미치는 변수로, 학습률, 신경망의 레이어 수, 뉴런 수, 정규화 계수 등이 포함됩니다. 하지만 최적의 하이퍼파라미터를 찾는 과정은 쉽지 않습니다. 이 글에서는 대표적인 매개변수 탐색 알고리즘과 그 특징에 대해 알아보겠습니다. 1. 그리드 탐색(Grid Search)그리드 탐색은 모든 가능한 매개변수 조합을 체계적으로 탐색하는 방법입니다. 사용자가 지정한 각 매개변수의 값들에 대해 모든 조합을 시도하며, 가장 성능이 좋은 조합을 찾습니다.간단한 예제from sklearn.model_selection import GridSearchCVfrom..
[알고리즘] Union-Find 유니온-파인드(Disjoint Set Union)
·
컴퓨터 과학/알고리즘
Union-Find(또는 Disjoint Set Union, DSU)는 그래프 알고리즘에서 서로소 집합(Disjoint Sets)을 관리하기 위해 사용되는 자료구조입니다. 이 알고리즘은 대표적으로 최소 스패닝 트리(MST) 알고리즘인 Kruskal's Algorithm에서 사용되며, 효율적으로 그래프의 연결성을 판단하거나 집합을 관리할 수 있습니다. 1. Union-Find란 무엇인가?Union-Find는 다음 두 가지 연산을 빠르게 수행할 수 있도록 설계된 자료구조입니다.Find(x): 원소 x가 속한 집합의 대표자(루트 노드)를 찾습니다.Union(x, y): 원소 x와 y가 속한 두 집합을 하나로 합칩니다.이 두 연산을 통해 집합을 동적으로 관리하며, 집합의 연결성을 확인할 수 있습니다. 예를 들어..
[컴퓨터 네트워크] 네트워크 최적화
·
컴퓨터 과학/컴퓨터 네트워크
네트워크 최적화란?유선망은 고속 데이터 전송과 안정성을 제공하지만, 네트워크 최적화가 이루어지지 않으면 병목현상, 지연, 패킷 손실 등의 문제가 발생하여 성능이 저하될 수 있습니다.특히, 송신 측 전송 계층에서 데이터를 무작정 목적지로 보내버린다면 경로 상의 라우터가 혼잡해지며, 이는 병목 현상, 지연, 패킷 손실로 이어질 것입니다.이 문제를 해결하기 위한 방법에 대해 알아보도록 하겠습니다. TCP 흐름제어수신 측이 송신 측보다 데이터 처리 속도가 빠르면 문제 없지만, 송신 측의 속도가 빠를 경우 문제가 발생하게 됩니다. 수신 측에서 제한된 저장 용량을 초과한 이후에 도착하는 패킷은 손실될 수 있으며, 만약 손실된다면 불필요한 추가 패킷 전송이 발생하게 됩니다.흐름 제어는 위와 같이 송신 측과 수신 측의..
[컴퓨터 네트워크] 링크 계층
·
컴퓨터 과학/컴퓨터 네트워크
이번에는 컴퓨터 네트워크 링크 계층에 대해서 알아보도록 하겠습니다.링크 계층의 계요링크 계층이 구현된 위치링크 계층 및 물리 계층은 유선 랜카드(=Network interface controller)에 구현되어 있습니다.유선 랜카드 내부의 링크 계층은 Ethernet 프로토콜을 기반으로 구현 및 동작합니다. 유선 랜카드 동작 과정데이터 준비: 컴퓨터에서 생성된 데이터를 네트워크 계층을 통해 전달받음(IP 패킷 형태)프레임 생성: IP 패킷의 앞쪽에 Ethernet 프로토콜 헤더를 추가하여 프레임으로 캡슐화신호 변환 및 송신: 디지털 데이터(0 or 1)로 표현된 프레임을 아날로그 신호(전기적 신호)로 변환(인코딩)하여 케이블을 통해 전송수신 데이터 처리: 랜카드로 들어오는 데이터를 디코딩, 오류 검사 후..
[컴퓨터 네트워크] 네트워크 계층
·
컴퓨터 과학/컴퓨터 네트워크
이번에는 네트워크 계층에 대해서 알아보도록 하겠습니다!네트워크 계층네트워크 계층은 출발지 호스트에서 목적지 호스트까지 데이터를 전달하는 역할을 수행합니다.목적지까지 IP 패킷을 전달하기 위해서는 중간 라우터를 반드시 거쳐야 하며, 이때 네트워크 계층은 어떤 라우터를 거쳐서 패킷을 최종 목적지까지 전달할 지를 결정합니다.주요 프로토콜: IP(Internet Protocol), ICMP, OSPF, BGP 등 있습니다. 네트워크 계층의 역할전송 계층에서는 종단 호스트 간의 세그먼트 or 데이터그램을송수신한 뒤 애플리케이션으로 전달함네트워크 계층에서는 세그먼트 or 데이터그램을 중간 라우터를 거쳐 최종 목적지로 전송함 포워딩의 개념포워딩: 라우터의 입력 인터페이스로 들어온 IP패킷을 목적지 주소에 맞는 출력 ..
[운영체제] 스레드 동기화, 상호배체, 임계구역
·
컴퓨터 과학/운영체제
스레드 동기화의 필요성두 스레드(또는 프로세스)가 동시에 공유 데이터를 접근하는 경우-> 두 스레드가 동시에 공유 데이터를 읽기만 하는 경우 : 문제 없음-> 한 스레드는 갱신하고 다른 스레드는 읽기만 하는 경우 -> 읽고 갱신하는 순서에 따라 각 스레드가 접근하는 값이 달라질 수 있지만 공유 데이터의 훼손은 없음-> 두 스레드가 동시에 공유 데이터를 읽어 갱신하는 경우: 공유 데이터 훼손 발생위 경우가 스레드가 공유 데이터를 읽어 데이터의 훼손이 발생하게 된다. 즉 동기화란 스레드가 공유 데이터로 접근할 때 공유 데이터의 자원 훼손을 막는 것을 의미한다.(스레드 동기화(thread synchronization): 다수의 스레드가 공유 데이터를 동시에 접근할 때 공유 데이터가 훼손되지 않게 스레드의 실행..
[자료구조] 큐(Queue)
·
컴퓨터 과학/자료구조
자료구조 큐(Queue)에 대해 알아보겠습니다. 큐는 프로그램에서 자주 사용되는 자료구조 중 하나로, 다양한 분야에서 효율적으로 데이터를 처리하는 데 유용합니다. 큐란?큐(Queue)는 선입선출(FIFO, First In First Out) 방식을 따르는 자료구조입니다. 즉, 먼저 들어온 데이터가 먼저 처리됩니다. 마치 줄 서기와 같은 개념으로, 줄의 앞쪽부터 순서대로 처리되는 구조를 떠올리시면 됩니다. 큐의 특징FIFO(First In, First Out):먼저 삽입된 데이터가 먼저 삭제됩니다.예: 대기열, 프린터 작업, 고객 서비스 센터의 대기 시스템 등.두 가지 주요 연산:Enqueue: 큐의 끝에 데이터를 추가.Dequeue: 큐의 앞에서 데이터를 제거.방향성:한쪽 끝에서만 데이터가 추가되고, 반..
[알고리즘] 분할정복(Divide and Conquer)
·
컴퓨터 과학/알고리즘
오늘은 분할정복에 대해서 설명해보도록 하겠습니다. 우선 분할정복이란 문제를 여러 개의 작은 하위 문제로 나누고, 각각을 독립적으로 해결한 뒤, 그 결과를 결합하여 전체 문제를 해결하는 방식입니다. 이렇게보면 동적계획법이랑 다른게 없어 보일 수 있습니다. 하지만 이 두 알고리즘은 두 차이점이 존재합니다. 분할정복vs동적계획법분할정복 (Divide and Conquer)아이디어: 문제를 여러 개의 작은 하위 문제로 나누고, 각각을 독립적으로 해결한 뒤, 그 결과를 결합하여 전체 문제를 해결하는 방식입니다.특징하위 문제들이 서로 독립적입니다. 즉, 서로 겹치지 않으며, 동일한 부분 문제를 여러 번 해결하지 않습니다.예시는 병합 정렬(Merge Sort), 퀵 정렬(Quick Sort), 이진 탐색(Binary..
[운영체제] 프로세스 개요
·
컴퓨터 과학/운영체제
이번에는 프로세스의 관리에 대해서 알아보도록 하겠습니다.우선 프로세스에 대해서 알아보도록 하겠습니다. 프로세스란?프로세스의 정의는 다음과 같습니다.수행 중인 프로그램: 프로세스는 메모리에 적재되어 실행되고 있는 프로그램입니다.컴퓨터 상에서 수행 중인 프로그램의 인스턴스: 프로세스는 프로그램의 실행 인스턴스로, 동일한 프로그램이 여러 번 실행될 경우 각각의 실행 인스턴스가 독립적인 프로세스가 됩니다.처리기에 할당되어 수행될 수 있는 개체: 프로세스는 CPU에서 실행될 수 있는 단위이며, 운영 체제는 프로세스에게 CPU 시간을 할당하여 실행합니다.단일 순차 수행 스레드, 현재 상태, 연계된 자원 등에 의해 특징지어지는 활동 단위: 프로세스는 하나의 실행 흐름(스레드)을 가지며, 현재 상태(실행 중, 대기 중..
[알고리즘] 프림 알고리즘(Prim)
·
컴퓨터 과학/알고리즘
프림 알고리즘(Prim's Algorithm)은 그래프에서 최소 신장 트리를 찾는 그리디 알고리즘입니다. 최소 신장 트리란, 모든 노드가 연결되면서 그 가중치 합이 최소가 되는 트리를 의미합니다. 이 알고리즘은 네트워크 설계, 전선 연결 등에서 활용될 수 있습니다.알고리즘 개요프림 알고리즘은 그래프에서 시작 노드를 선택한 후, 가장 작은 가중치를 가진 간선을 하나씩 선택해 나가는 방식입니다. 즉, 트리를 단계적으로 확장해 나가는 그리디한 접근을 사용합니다. 프림 알고리즘 과정시작 노드 선택: 임의의 노드를 시작점으로 선택합니다.트리 확장: 트리에 포함되지 않은 노드 중에서, 트리에 가장 작은 가중치로 연결될 수 있는 간선을 선택하여 해당 노드를 트리에 포함시킵니다.반복: 트리에 속하지 않은 모든 노드가 ..
함수 호출 방식에 대한 이해: Python, C, C++, Java 비교
·
컴퓨터 과학/프로그래밍 언어 개념
프로그래밍 언어에서 함수 호출 방식은 중요한 개념 중 하나입니다. 각 언어마다 함수 호출 시 변수의 전달 방식이 다르기 때문에 이를 이해하고 정확히 사용하는 것이 필요합니다. 이번 포스트에서는 Python, C, C++, Java에서 함수 호출 방식이 어떻게 다르고, 실제 코드에서는 어떻게 동작하는지 알아보겠습니다. 1. Python: Call by Object ReferencePython에서는 함수에 변수를 전달할 때 객체의 참조가 전달됩니다. 이는 "Call by Object Reference" 또는 "Call by Assignment"라고 불립니다.변경 가능한 객체 (mutable objects)와 변경 불가능한 객체 (immutable objects)에 따라 동작이 다릅니다.변경 가능한 객체 예시..
[운영체제] 컴퓨터 하드웨어
·
컴퓨터 과학/운영체제
이번에는 컴퓨터 시스템과 하드웨어의 밀접한 관계에 대해서 알아보도록 하겠습니다. 컴퓨터 시스템을 구성하는 계층위 사진은 컴퓨터 시스템을 구성하는 계층의 사진입니다. 응용소프트웨어, 운영체제, 컴퓨터 하드웨어로 구성되어 있습니다. 그리고 응용소프트웨어 -> 컴퓨터 하드웨어로 바로 접근하는 행위는 하지 못하며 반드시 각 계층을 지나야 접근할 수 있습니다.(이 내용은 나중에 다시 설명하도록 하겠습니다) 하드웨어 구성기본적인 하드웨어의 구성은 다음과 같습니다. CPU(Central Processing Unit)기계 명령어를 수행하고, 다른 수행 장치들을 제어합니다.제어 장치(Control Unit)역할: 제어 장치는 CPU의 "두뇌" 역할을 합니다. 기계 명령어(프로그램)를 하나씩 읽어들여 그 명령어가 무엇을 ..
김치바보
'컴퓨터 과학' 카테고리의 글 목록