본문 바로가기

전체 글72

[AI] Optimization (4-3) 제약 충족 문제(Constraint Satisfaction problem) 제약 충족 문제는 일부 조건을 만족하면서 변수에 값을 할당해야 하는 문제 클래스이다. 제약 충족 문제에는 다음과 같은 속성이 있다.변수 집합: (x₁, x₂, …, xₙ)각 변수 {D₁, D₂, …, Dₙ}에 대한 도메인 집합제약 조건 C의 집 스도쿠는 제약 충족 문제로 표현할 수 있다. 여기서 각각의 빈 사각형은 변수이고 도메인은 1-9의 숫자이며 제약조건은 서로 같을 수 없는 사각형인 것이다. 또 다른 예를 생각해 보자. 학생 1~4는 각각 A, B, …, G의 3과목을 수강하고 있다. 각 과목은 시험을 치러야 하며, 시험 가능 요일은 월요일, 화요일, 수요일이다. 단, 같은 학생이 같은 날 두 번의 시험을 볼 수는 없다.  .. 2024. 6. 11.
[AI] Optimization (4-2) 선형 프로그래밍(linear programming)  선형 프로그래밍은 선형 방정식(y = ax₁ + bx2 + … 형식의 방정식)을 최적화하는 문제 계열이다.  선형 프로그래밍에는 다음 구성 요소가 있다.최소화하려는 비용 함수: c₁x₁ + c2x2 + … + cₙxₙ. 여기서 각 xₙ는 변수이며 일부 비용 cₙ과 연관되어 있다.값보다 작거나 같거나(a₁x₁ + a2x2 + … + aₙxₙ ≤ b) 이 값과 정확하게 동일한(a₁x₁ + a2x2 + … + aₙxₙ = b) 변수의 합으로 표시되는 제약 조건이다. 이 경우 xₙ는 변수이고 aₙ는 이와 관련된 일부 리소스이며 b는 이 문제에 전념할 수 있는 리소스의 양이다.변수(예: 변수는 음수일 수 없음)에 대한 개별 범위의 경계는 lᵢ ≤ xᵢ ≤ uᵢ.. 2024. 6. 5.
[AI] Optimization (4-1) 최적화(Optimization)  최적화는 가능한 옵션 집합에서 최상의 옵션을 선택하는 것이다. 우리는 이미 minimax 알고리즘과 같이 가능한 최상의 옵션을 찾으려고 노력한 문제에 직면했으며 오늘은 훨씬 더 광범위한 문제를 해결하는 데 사용할 수 있는 도구에 대해 알아볼 것이다.지역 탐색(Local search)  지역 검색은 단일 노드를 유지하고 이웃 노드로 이동하여 검색하는 검색 알고리즘이다. 이 유형의 알고리즘은 이전에 본 검색 유형과 다르다. 예를 들어 미로 해결에서 우리는 목표에 이르는 가장 빠른 길을 찾고 싶지만, 지역 검색은 질문에 대한 최선의 답을 찾는 데 관심이 있다. 즉 현재 상황에서 얼마나 좋은 움직임을 알려주는가(like 체스).종종 지역 검색은 최적은 아니지만 계산 능력을 보존.. 2024. 6. 5.
9-1. Reverse Engineering Reverse engineering Reverse engineering:리버스 엔지니어링은 시스템, 소프트웨어, 하드웨어의 안에서 작동하는 것을 분석하고 이해하는 과정이다.즉, 외부의 동일한 기능을 구현하기 위해 내부를 뜯어 분석하는 행위인 것.효율적이고 정확한 분석을 위해서는 다양한 지식을 알고 있어야 한다: 커널, 프로세스, 어셈블리어정보 수집: 문서, 프로그래밍 언어, 라이브러리, 컴파일러 등등 방법에는 2가지 방법이 있다.- 정적 분석: 디컴파일러를 사용해 실행 바이너리로부터 소스를 역추출하는 방법 등이 있다.   도구를 사용하면 쉬운편   도구: IDA pro, Ghidra, Radate2, 등등 - 동적 분석: 정적 분석만으로는 런타임에 결정되는 컨트롤 플로우를 따라가기 어렵다는 단점이 있다... 2024. 6. 4.
중간(7~8 선택과 집중) Dynamic linking information  - 작동시간동안 동적/공유된 라이버리를 로드하기위해 요구되는 정보 정적 링킹 - 링커가 컴파일-타임에 다양한 객체 파일과 라이브러리를 하나의 실행 파일로 결합하는 과정을 말한다.- 모든 외부 함수 호출 및 변수 참조를 최종 실행 파일로 해결한다.동적 링킹 - 프로그램이 런타임에 함수 호출 및 변수 참조를 위해 별도의 공유 라이브러리 파일을 사용하는 메커니즘이다. - 프로그램은 공유 라이브러리에 대한 참조를 포함하고 있으며, 이 참조는 메모리에 로드되고 실행 시 프로그램에 링크된다. Sectionxxd [filename]sh_name: 섹션 헤더의 스트링 섹션의 배열이다.  Program loading  - 시스템이 프로세스 이미지를 생성하면, 논리적으로.. 2024. 4. 24.
[AI] Uncertainty(3-1) 불확실성(Uncertainty) 저번 파트에서는 AI가 어떻게 새로운 지식을 표현하고 도출할 수 있는지에 대해 논의했었다. 그러나 실제로는 AI가 세상에 대해 부분적인 지식만 갖고 있어 불확실성의 여지가 있는 경우가 많다. 그럼에도 불구하고 우리는 AI가 이러한 상황에서 최선의 결정을 내리기를 바란다.   예를 들어 날씨를 예측할 때 AI는 오늘 날씨에 대한 정보를 가지고 있지만 내일 날씨를 100% 정확하게 예측할 수 있는 방법은 없다. 그래도 우리는 우연히 보다 더 잘할 수 있으며, 이번에는 제한된 정보와 불확실성 속에서 최적의 결정을 내리는 AI를 어떻게 만들 수 있는지에 대한 알아보자. 확률(Probability) 불확실성은 사건의 수와 "거의", "가능성", "확률", "각각의 발생"들로 표현될.. 2024. 4. 24.