산업공학 37

[강화학습] 2. Markov Decision Process (MDP)

이전 글에서 강화학습의 정의와 요소들에 대해 다뤄보았다. 강화학습이란 주어진 Environment 내에서 Agent가 Reward를 최대화하기 위한 목적으로 현재 State에서 다음 State로의 Action을 취하는 학습 과정을 의미한다. 이 학습 과정에서 Agent는 특정한 확률로 이전에서 다음 State로의 Action을 취하는 의사결정을 하게 되는데, 오늘은 이러한 의사결정을 하는 데에 기반이 되는 수학적 모델인 Markov Decision Process(MDP)에 대해 알아볼 것이다. Grid World MDP에 대해 알아보기 전에 우선 Grid World가 무엇인지 살펴보자. Grid World란 강화학습이나 인공 지능 분야에서 사용되는 가상 시뮬레이션 환경이다. 이 환경은 격자(grid)로 ..

[자료구조 in C++] 동적 배열(Vector)

자료구조에서 Vector 란? 자료구조에서 "벡터"(Vector)는 동적 배열을 의미하는데, 이는 고정된 크기를 가진 일반적인 배열과 달리 크기가 동적으로 변할 수 있는 배열이다. 이전 글에서 언급했던 array와 비슷한 개념이지만, 크기가 고정되어 있고, 메모리 할당 방법을 변경할 수 없는 array의 문제를 해결할 수 있다. 즉, vector의 경우, 원소가 추가되고 제거됨에 따라 동적으로 크기가 조정되고, 연속적으로 메모리를 할당할 수 있다. Vector 선언 방법 #include #include int main() { std::vector vec; //크기 0인 벡터 선언 std::vector vec = {1,2,3,4,5}; //지정한 초기값으로 이루어진 크기가 5인 벡터 선언 std::vect..

[자료구조 in C++] 정적 배열(Array)

배열$($Array$)$란? 배열(Array)은 자료구조의 한 형태로, 동일한 자료형의 데이터를 연속적인 메모리 공간에 순차적으로 저장하는 구조이다. 배열은 다음과 같은 특징을 가지고 있다. 고정 크기: 배열을 생성할 때, 그 크기가 정해지며, 대부분의 프로그래밍 언어에서는 배열의 크기를 변경할 수 없다 인덱스 접근: 배열의 각 요소는 인덱스(또는 위치)를 통해 접근할 수 있다. 이 인덱스는 0부터 시작하여 $($배열의 크기$)$ - 1 까지의 값을 가진다 동일한 자료형: 배열에 저장되는 모든 요소는 동일한 자료형이어야 한다. 예를 들어, 정수형 배열에는 정수만 저장할 수 있다. 자료구조에서의 Array std::array는 메모리를 자동으로 할당하고 해제한다. std::array는 원소의 타입과 배열 ..

[머신러닝] 사이킷런(Scikit-Learn) 라이브러리 part1 : 프레임워크, train_test_split

사이킷런$($Scikit-Learn$)$ 라이브러리 사이킷런 라이브러리는 파이썬 기반 머신러닝 라이브러리 중 가장 많이 사용되는 라이브러리이다. 다양한 머신러닝 알고리즘과 API 등을 제공하기 때문에 비교적 쉽고 편리하게 사용할 수 있다는 장점 때문에 데이터 분석가들 사이에서 인기가 있다. 사이킷런 머신러닝 워크플로우 데이터 수집 : 필요한 데이터를 모으고 저장하는 단계 데이터 전처리 : 데이터를 분석에 적합한 형태로 가공하는 단계, $($이상치 제거, 결측치 제거, 정규화, 인코딩 등$)$ 모델 훈련 및 학습 : 전처리된 데이터를 활용해 알고리즘을 학습시키는 단계, 필요에 따라 하이퍼 파라미터 조정 모델 성능 평가 : 학습된 모델의 성능을 평가하는 단계, 정확도, 정밀도, 재현율, F1-score 등의..

[머신러닝] 머신러닝(Machine Learning)이란?

머신러닝$($Machine Learning$)$이란? 데이터를 기반으로 패턴을 학습하고 결과를 예측하는 알고리즘 기법이다. 머신러닝은 금융 서비스, 의료 서비스, 마케팅 등 다양한 분야에 적극적으로 활용될 수 있다. 인공지능과 머신러닝의 관계 인공지능 인공지능은 인간의 지능을 모방한 컴퓨터 시스템으로, 학습, 추론, 인지 능력 등 인간의 지능적 행위를 구현할 수 있도록 하는 기술을 의미한다. 머신러닝 머신러닝은 이러한 인공지능을 구현하기 위한 한 분야로, 데이터로부터 학습하고, 그 학습을 통해 패턴을 인식하며 결정을 내릴 수 있는 능력을 개발하는 과학이다. 딥러닝 딥러닝은 머신러닝의 한 분야로, 인공 신경망의 구조와 알고리즘을 기반으로 한다는 점에서 머신러닝의 다른 기법들과 구별된다. 딥러닝은 여러 층은..

[자료구조 in C++] 연속된 자료구조와 연결된 자료구조

자료구조의 중요성 응용 프로그램을 설계할 때 데이터 관리는 필수적 요소이다. 특히, 요즘 빅데이터 시대라고 불리는 만큼 데이터 관리는 더욱더 중요하게 고려되어야 할 항목이다. 프로그래머는 데이터를 메모리에 저장하기 위해 여러 자료 구조를 활용할 수 있다. 프로그램에서 필요한 기능을 구현하고, 동작 성능과 안정성을 확보하려면 적절한 자료구조$($Data Structure$)$ 를 선택하여야 한다. 자료구조는 크게 연속된 자료구조와 연결된 자료구조로 분류할 수 있다. 시간 복잡성$($Time Complexity$)$ 데이터를 처리하기에 앞서 데이터를 어떠한 형태로 저장할 것인가가 결정되어야 한다. 이를 결정하기 위한 적합한 지표들이 몇 가지 있는데, 대표적으로 알고리즘 복잡도 혹은 시간복잡도$($Time C..

[강화학습] 1. Introduction to Reinforcement Learning

강화학습$($Reinforcement Learning$)$이란? 강화학습$($Reinforcement Learning, RL$)$은 머신러닝의 한 분야로, 에이전트가 환경과의 상호작용을 통해 어떤 목표를 달성하기 위한 최적의 행동 전략을 학습하는 과정이다. 여기서 중요한 점은 강화학습은 머신러닝의 학습 기법 중 하나이지만, 학습하는 방식은 일반적인 머신러닝과는 다르다는 점이다. 머신러닝과 강화학습의 차이점 학습 방식 피드백의 형태 환경 사용 데이터 머신러닝 -Supervised Learning -Unsupervised Learning -Instant Feedback -Correct Answer -Static Dataset -Fixed Dataset 강화학습 -No Supervisor -By Trial a..