Byungsoo Kang

Computer Science Student | Interested in AI/ML

The Structure of Agents (2)

이 사진 아닌 것 같긴 한데 구글에 the structure of agents 치면 나오길래… Model-based reflex agents 부분 관찰 가능성(partial observability)을 다루는 가장 효과적인 방법은 에이전트가 현재 볼 수 없는 세계의 부분을 추적하는 것 즉, 에이전트는 지각 이력(percept history)에 의존하는 일종의 **내부 상태(internal state)**를 유지해야 하며, 이를 통해 현재 상태에서 관찰되지 않는 측면을 어느정도 반영할 수 있어야 함 Knowledge required to update internal state 세계가 어떻게 변하는지에 대한 정보 에이전트의 행동이 미치는 영향: 핸들을 시계 방향으로 돌리면 차가 오른쪽으로 회전함 에이전트와 무관하게 세계가 어떻게 진화하는지: 비가 오면 카메라가 젖을 수 있음 **전이 모델(transition model)**이라고 불리며, 간단한 불리언 회로(boolean circuits)나 완전한 과학 이론으로 구현될 수 있음 세계의 상태가 에이전트의 지각에 어떻게 반영되는지에 대한 정보 예를 들어, 앞차가 제동을 시작하면 전방 카메라 이미지에 하나 이상의 빨간 영역이 나타남 카메라 젖으면 이미지에 물방울 모양의 물체가 나타나 도로를 부분적으로 가림 **센서 모델(sensor model)**이라고 불림 Role of Model-based agent ...

March 23, 2025

The Structure of Agents (1)

이 사진 아닌 것 같긴 한데 구글에 the structure of agents 치면 나오길래… 에이전트의 내부 작동 방식 보통 에이전트(인공지능 주체)를 설명할 때 주로 행동에 초점을 맞춰서 이야기함 즉, 에이전트가 특정 지각(percepts) 시퀀스를 받은 후 어떤 **행동(action)**을 하는지에 대해 다뤘음 예를 들어, “문이 보이면 문을 연다” 그런데 에이전트의 내부가 어떻게 작동되는지, 어떻게 설계되고 만들어지는지에 대해 알아보겠음 인공지능(AI)의 주요 역할은 **에이전트 프로그램(agent program)**을 설계하는 것 이 프로그램은 **에이전트 함수(agent function)**을 구현하는데, 에이전트 함수란 쉽게 말해 지각을 행동으로 연결하는 규칙 ...

March 22, 2025

Monty Hall Problem

원래도 몬티-홀 문제를 알고는 있었지만 최근에 책을 읽는데 거기에 몬티-홀 문제가 나옴 “n값을 크게 해서 직접 실행해보고 싶다"는 생각이 들었음 아래 글이랑 똑같은 내용이지만 github에도 올렸으니 참고하실 분은 참고하시길 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 import random import matplotlib.pyplot as plt def monty_hall(n): switch_wins = 0 # 문을 바꿔서 이긴 횟수 stay_wins = 0 # 문을 유지해서 이긴 횟수 for _ in range(n): # 자동차가 있는 문을 무작위로 설정 (0, 1, 2 중 하나) car = random.randint(0, 2) # 참가자가 문을 무작위로 선택 (0, 1, 2 중 하나) choice = random.randint(0, 2) # 사회자가 염소가 있는 문을 열음 # 참가자가 선택하지 않은 문 중 자동차가 없는 문을 찾기 possible_doors = [] # 빈 리스트를 만들어서 조건에 맞는 문을 추가 for door in range(3): if door != choice and door != car: possible_doors.append(door) # 사회자가 열 문을 선택 if possible_doors: # possible_doors가 비어있지 않으면 monty_opens = random.choice(possible_doors) else: # 참가자가 자동차를 선택한 경우, 나머지 문 중 하나를 무작위로 열음 remaining_doors = [] # 빈 리스트를 만들어서 조건에 맞는 문을 추가 for door in range(3): if door != choice: remaining_doors.append(door) monty_opens = random.choice(remaining_doors) # 문을 바꾸는 경우: 참가자가 선택하지 않았고 사회자가 열지 않은 문을 찾기 switch_choice = None # 아직 선택된 문이 없음을 표시 for door in range(3): if door != choice and door != monty_opens: switch_choice = door break # 문을 하나 찾았으면 반복문 종료 # 문을 바꿔서 이겼는지 확인 if switch_choice == car: switch_wins += 1 # 문을 유지해서 이겼는지 확인 if choice == car: stay_wins += 1 return switch_wins, stay_wins 1 2 n = 100000000 # 1억 번 switch_wins, stay_wins = monty_hall(n) 1 2 3 4 5 6 7 8 9 10 11 12 13 # 결과 출력 print(f"문을 바꾸는 전략으로 자동차를 얻은 횟수: {switch_wins}") print(f"문을 유지하는 전략으로 자동차를 얻은 횟수: {stay_wins}") print(f"문을 바꾸는 전략의 승률: {switch_wins / num_trials:.4f}") print(f"문을 유지하는 전략의 승률: {stay_wins / num_trials:.4f}") # 시각화 labels = ['Switch', 'Stay'] wins = ****[switch_wins, stay_wins] plt.bar(labels, wins, color=['blue', 'green']) plt.ylabel('Number of Wins') plt.title('Monty Hall Problem Simulation (100M Trials)') plt.show() 1 2 3 4 # 문을 바꾸는 전략으로 자동차를 얻은 횟수: 66663787 # 문을 유지하는 전략으로 자동차를 얻은 횟수: 33336213 # 문을 바꾸는 전략의 승률: 0.6666 # 문을 유지하는 전략의 승률: 0.3334 ...

March 20, 2025

Bayesian Optimization

베이지안 최적화(Bayesian Optimization)란? 베이지안 최적화는 머신러닝에서 하이퍼파라미터 튜닝을 똑똑하게, 그리고 효율적으로 수행하기 위한 방법. 하이퍼파라미터는 모델을 학습시키기 전에 사람이 직접 설정해야 하는 값들인데, 이 값들이 모델의 성능에 큰 영향을 미침. 예를 들어 학습률(learning rate)이나 트리의 깊이 같은 것들이 하이퍼파라미터. 문제는 이 값들을 무작정 시도해보는 건 시간도 오래 걸리고 비효율적이라는 점 다른 하이퍼 파라미터 튜닝 방법 그리드 서치(Grid Search) 가능한 하이퍼파라미터 값들을 미리 정하고, 모든 조합을 하나씩 시도함 장점: 최적의 조합을 놓칠 가능성이 적음 단점: 조합이 많아지면 시간이 너무 오래 걸림 랜덤 서치(Random Search) 하이퍼파라미터 값 범위에서 무작위로 조합을 골라 테스트함 장점: 더 넓은 범위를 빠르게 탐색할 수 있음 단점: 운이 나쁘면 좋은 조합을 놓칠 수도 있음 이런 문제들 때문에 베이지안 최적화가 등장함 ...

March 17, 2025

Database Languages

데이터베이스 시스템은 데이터베이스 스키마(database schema)를 지정하기 위한 **Data-Definition Language(DDL)**와 데이터베이스 쿼리(query) 및 업데이트를 표현하기 위한 **Data-Manipulation Language(DML)**를 제공합니다. Data-Definition Language 데이터베이스 스키마(database schema)는 데이터 정의 언어(DDL, Data-Definition Language)라는 특수 언어로 표현된 정의 집합으로 지정됩니다. DDL은 데이터의 추가적인 속성을 지정하는 데에도 사용됩니다. 데이터베이스 시스템에서 사용되는 저장 구조와 접근 방법은 **데이터 저장 및 정의 언어(data storage and definition language)**라는 특수한 DDL 유형의 문장 집합으로 지정됩니다. 이러한 문장은 데이터베이스 스키마의 구현 세부 사항을 정의하며, 이는 일반적으로 사용자에게 숨겨져 있습니다. ...

March 16, 2025